我为 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();
}
}