4

我正在将我的应用程序迁移到新的 Google 的 Android API。我决定使用 MapView 而不是 Fragment,因为地图是 Fragment 的一部分。我已经成功地使用 MapFragment 显示地图,但是当尝试对 MapView 执行相同操作时,它只显示空图块。有人知道我缺少什么吗?这些是 Manifest 文件中的权限:

<permission android:name="com.beezer.permission.MAPS_RECEIVE" 
                 android:protectionLevel="signature"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="com.beezer.permission.MAPS_RECEIVE" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

我在日志中没有收到任何错误。

4

2 回答 2

13

您是否转发了此处编写的所有 Activity 生命周期方法 https://developers.google.com/maps/documentation/android/map#mapview

“这个类的用户必须将所有的Activity生命周期方法——例如onCreate()、onDestroy()、onResume()和onPause()——转发给MapView类中的相应方法。”

@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    mapView.onCreate(savedInstanceState);
    try {
       MapsInitializer.initialize(mContext);
    } catch (GooglePlayServicesNotAvailableException e) {
       e.printStackTrace();
    }
 }

@Override
public void onPause() {
    super.onPause();
    mapView.onPause();
}

@Override
public void onResume() {
   super.onResume();
   mapView.onResume();
}

@Override
public void onDestroy() {
    super.onDestroy();
    mapView.onDestroy();
}
于 2013-01-13T16:20:03.663 回答
3

我只能解决两个问题:

  1. 您构建的签名与您的地图 api 密钥不匹配
  2. 您没有在 MapActivity 中使用 MapView。否则它将无法正常工作。
于 2013-01-12T17:54:59.303 回答