【问题标题】:Google Maps APIv2 - Map does not loadGoogle Maps APIv2 - 地图不加载
【发布时间】:2013-07-15 11:11:13
【问题描述】:

我使用的是以前的 Maps API - 在为 Maps v2 API 插入以下代码 sn-p 后,地图无法加载。 CustomMapView 是继承 MapView 的 Java 类。不明白应该替换或删除哪些参数?

<com.stub.android.ui.CustomMapView
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/mapview" android:layout_width="fill_parent"
        android:layout_height="fill_parent" android:clickable="true"
        android:apiKey="0xxxxxxxxxxxxxxxxxxxxx" />

我在 Manifest 中添加了以下内容 -

  <permission
    android:name="com.stub.android.ui.permission.MAPS_RECEIVE"
    android:protectionLevel="signature" />

<uses-feature
    android:glEsVersion="0x00020000"
    android:required="true" />

<uses-permission android:name="com.stub.android.ui.permission.MAPS_RECEIVE" />
 <meta-data
        android:name="com.google.android.maps.v2.API_KEY"
        android:value="AIxxxxxxxxxxxxxxx" />

CustomMapView 类的代码

public class CustomMapView extends MapView {

public CustomMapView(Context context, String apiKey) {
    super(context, apiKey);
    // this.context = context;
}

@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
    try {
        return super.dispatchTouchEvent(ev);
    } catch (Exception ex) {

        int zoomLevel = getZoomLevel();
        getController().setZoom(zoomLevel-1);
        super.setVisibility(View.GONE);
        super.setVisibility(View.VISIBLE);
    }
    return true;
}

@Override
public void draw(Canvas canvas) {
    try {
        super.draw(canvas);
    } catch (Exception e) {
        int zoomLevel = getZoomLevel();
        getController().setZoom(zoomLevel-1);
        super.setVisibility(View.GONE);
        super.setVisibility(View.VISIBLE);
    }
}

public CustomMapView(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
    // this.context = context;
}

public CustomMapView(Context context, AttributeSet attrs) {
    super(context, attrs);


}

@Override
public boolean onTouchEvent(MotionEvent ev) {
    System.gc();
    return super.onTouchEvent(ev);
}}

【问题讨论】:

    标签: android android-mapview google-maps-android-api-2 android-maps android-maps-v2


    【解决方案1】:
    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />
    
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="com.example.towntour.permission.MAPS_RECEIVE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission    android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
    
    <uses-feature
        android:glEsVersion="0x00020000"
        android:required="true" />
    
    <permission
        android:name="com.temp.android.maps.googlev2.permission.MAPS_RECEIVE"
        android:protectionLevel="signature" />
    
    <uses-permission  android:name="com.temp.android.maps.googlev2.permission.MAPS_RECEIVE" />
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@android:style/Theme.Black.NoTitleBar" >
        <meta-data
            android:name="com.google.android.maps.v2.API_KEY"
            android:value="AIzaSyDp6PHK3NYNwS74cKGmX-xc4LuH_uM1mIo" />
    
        <activity
            android:name="com.temp.android.SplashScreenActivity"
            android:label="@string/app_name"
            android:screenOrientation="portrait" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
    
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
    
    </manifest>
    

    【讨论】:

    • 我想了解在 XML 布局而不是清单中所做的更改
    【解决方案2】:
    Use This XML
    
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    
    
    <fragment
        android:id="@+id/map"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        class="com.google.android.gms.maps.SupportMapFragment" />
    

    【讨论】:

    • 我怎样才能在现有的 xml 布局中合并相同的,在上面的问题中提到,我在布局中包括 java mapview 类,
    • 只需在您现有的 xml 代码中设置此 xml...并运行它..它将正常工作...
    • 你不明白我的意思,那样的话 MapView java 类应该怎么做?
    • 好吧,现在我明白你的意思了...首先右键单击您的项目选择属性-->选择 Android -->检查 Google Api -->确定-->现在实施您的活动作为地图活动......它将正常工作......正常......
    【解决方案3】:
    This Way will be usefull for that..
    
    
    public class HelloGoogleMaps extends MapActivity
    {
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    
    MapView mapView = (MapView) findViewById(R.id.mapview);
    mapView.setBuiltInZoomControls(true);
    }
    }
    
    
    <?xml version="1.0" encoding="utf-8"?>
    <com.google.android.maps.MapView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/mapview"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:clickable="true"
    android:apiKey="API_KEY"
    />
    
    <uses-library android:name="com.google.android.maps"/>
    
    <uses-permission android:name="android.permission.INTERNET"/>
    

    【讨论】:

    • 如何在 XML 布局中使用 HelloGoogleMaps 类,就像我在上面的 APIv2 代码中所做的那样 - schemas.android.com/apk/res/android" android :id="@+id/mapview" android:layout_width="fill_parent" android:layout_height="fill_parent" android:clickable="true" android:apiKey="0xxxxxxxxxxxxxxxxxxxxx" />
    • 它的活动你不能使用它..HelloGoogleMaps...地图类将来自它的图书馆..你不能那样做先生............
    • 我一直在使用此代码pastebin.com/87qY2hj1 这是一个扩展 MapView 的自定义类,我通过包名将其包含在我的布局中,因为它是一个可重用的组件
    • 我不能那样做,这是客户专有项目!我们可以通过屏幕共享 Skype 通话吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-10
    • 2013-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多