4

我为 google maps v2 for android 创建了我的 google api 密钥,一切都在 eclipse 中为 google maps 设置(使用 google+api 构建,链接到 google play 服务,api 密钥排序等),我可以查看地图应用程序罚款我的手机,但是当我在 AVD 上查看同一个应用程序时,它会转到正确的位置,我可以看到所有的谷歌地图覆盖(例如缩放按钮),但没有地图,它只是一个灰色框。网络也很好。

我使用的是最新的 4.3 API 18 版本,我的 AVD 是默认的 Nexus One。在此之前,我收到了可怕的“更新谷歌播放服务”消息,我发现这是由于地图 v2 根本无法在 4.2 上运行,所以我升级阅读地图应该可以在 AVD 上使用 SDK 18。

知道为什么它不显示吗?当我启动 AVD 时,我确实注意到它说使用软件 opengl,但我认为没问题。

我已经阅读了各种 stackoverflow 文章,但它们都指向不正确的配置,我的很好,当我将它发送到我的手机时工作得很好,并且没有抛出任何错误。

如果有任何帮助,这里有一些我正在使用的代码片段。

显现:

<uses-sdk android:minSdkVersion="9" android:targetSdkVersion="18" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-feature android:glEsVersion="0x00020000" android:required="true" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
<uses-library android:name="com.google.android.maps" />
<meta-data android:name="com.google.android.maps.v2.API_KEY" 
        android:value="XXXXXXXXXXXXXXXXXXXX"/>

布局片段:

<fragment
    android:id="@+id/worldmap"
    android:name="com.google.android.gms.maps.SupportMapFragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

初始化地图的代码:

private void initialiseMap() {
    if (googleMap == null) {
        googleMap = ((SupportMapFragment) getFragmentManager().findFragmentById(
                R.id.worldmap)).getMap();

        // check if map is created successfully or not
        if (googleMap == null) {
            Toast.makeText(activity.getApplicationContext(),
                    "Unable to create maps", Toast.LENGTH_SHORT)
                    .show();
        }
    }       
}

显示地图的代码:

private void displayLocation(Location l, String text) {
    if(googleMap!=null) {
        googleMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
        LatLng ll=new LatLng(l.getLatitude(), l.getLongitude());
        CameraPosition cp=new CameraPosition.Builder()
            .target(ll)
            .zoom(18)
            .build();

        googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(cp));
        Toast.makeText(activity, l.getLatitude()+":"+l.getLongitude(), Toast.LENGTH_LONG).show();

    }
}
4

3 回答 3

0

在 AVD 上成功运行 Google 地图

  1. 创建非 Google API 模拟器 API 级别高于 3.0
  2. 使用在线 apk 下载器将Google Play 服务 apk下载到您的电脑(必须是最新版本)
  3. 下载Google play srore apk(必须是最新版本)
  4. 在 Android 模拟器上使用 adb install 命令安装这些 apk

现在一切准备就绪,可以在模拟器上测试 Google 地图 v2。在模拟器上运行您的应用程序

于 2013-10-16T16:19:07.853 回答
0

根据我的经验,我发现仅仅获得一张灰色地图意味着存在一些许可证密钥问题(因此 Google 拒绝提供彩色地图图块),但除此之外,您的应用程序可能一切都很好(特别是如果你可以滚动灰色地图)。

于 2013-10-16T17:53:19.270 回答
0

你应该看到类似的东西

E/Google Maps Android API﹕ Google Maps Android API v2 only supports devices with OpenGL ES 2.0 and above

在控制台中。这是带有 Google API 的模拟器的一个已知问题。我建议切换到Genymotion,它工作得很好。

于 2013-10-09T20:10:19.767 回答