[英]Android: Google Maps not displaying
我正在尝试显示谷歌地图。 我可以看到背景(浅灰色背景,小瓷砖,左下角的谷歌标志),所以我知道我很接近。 但是,没有显示实际地图。 在 LogCat 中,我看到这条消息一遍又一遍地重复:
05-14 13:28:17.926:W/System.err(27458):在 android_maps_conflict_avoidance.com.google.googlenav.datarequest.DataRequestDispatcher$DispatcherServer.run(DataRequestDispatcher.java:1702)
我正在使用带有系留电话的 Google 地图 api 2 来测试正在运行的 2.3.4。
有谁知道这可能是什么原因造成的? 谢谢!
package com.example.maptest;
import android.os.Bundle;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapController;
import com.google.android.maps.MapView;
public class MyMapActivity extends MapActivity {
private MapView mapView;
private MapController mapController;
@Override public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.map_layout);
mapView = (MapView)findViewById(R.id.map_view);
}
@Override
protected boolean isRouteDisplayed() {
return false;
}
}
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.maptest"
android:versionCode="1"
android:versionName="1.0" >
<permission android:name="com.example.maptest.permission.MAPS_RECEIVE" android:protectionLevel="signature"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="com.example.maptest.permission.MAPS_RECEIVE"/>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-feature
android:glEsVersion="0x00020000"
android:required="true"/>
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<uses-library android:required="true" android:name="com.google.android.maps" />
<activity
android:name="com.example.maptest.MyMapActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".MainActivity" >
</activity>
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="xxxxxxxxxxxxxxxxxxxx"/>
</application>
</manifest>
基本上,您将弃用的 Android API v1 与新的 API v2 混合在一起。
最简单的迁移方法是删除所有与 v1 相关的代码并从头开始,点击此链接: https : //developers.google.com/maps/documentation/android/start
转到开发人员控制台,为您的设备启用地图 API,然后复制您的密钥并粘贴到 values->google_maps_api.xml 中。 如果在 android 设备上,它可以使用 Android 密钥(由谷歌服务自动创建)
经过几天的斗争,我发现了这个问题。 在我的清单中,我将键值存储在一个 xml 文件中,但它不起作用。 我现在有
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="AIzxxxxxxxxxxxxxxxxxxxxxxxkey" /> and it works.
刚刚删除了 xml 文件...希望它有帮助!
如果您的应用中有多个包,请在创建API key
时注意,您必须使用包含在 android mainfest.xml 文件顶部的包名称
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
**package="com.xxx.xxx"**
android:versionCode="1"
android:versionName="1.0" >
好吧,实际上我遇到了这个问题,这让我发疯了。 在我找到解决方案之后。 很简单的:
1- 在您的项目中,google_maps_api.xml 只需检查 web 链接是否为您的包名称,如果您的包名称存在且正确。 转到页面并获取密钥
要获得一个,请点击此链接,按照说明操作并在最后按“创建”:
https://console.developers.google.com/flows/enableapi?apiid=maps_android_backend&keyType=CLIENT_SIDE_ANDROID&r=...
2- 只需创建新的谷歌地图活动项目即可获取 SHA-1 代码。
不要忘记 SHA-1 代码在您的其他项目中是相同的,但您的每个程序的网络链接都是唯一的
我有同样的问题。 问题出在我的清单文件中。 检查您存储在 STRING.xml 中的 google maps 键和 google_maps_api.xml 中的 google maps 键是否具有相同的名称。
一个最可能的原因是您没有在项目清单文件中添加 API 密钥。 解决此问题的最简单方法是转到“google_maps_api.xml”文件并复制文件中的链接并将其粘贴到浏览器中。 点击链接中的创建按钮,复制之后生成的api key,粘贴到AndroidManifest.xml中meta-data标签中“Your Api Key”的位置,编译项目解决问题。
可能这是因为您必须将 google_maps_api.xml 文件放在 values 文件夹中并在其中粘贴正确的 API 密钥的 Google API 密钥。 并且您还必须将此代码放在 AndroidManifest.xml 文件中
<application>
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="YOUR_API_KEY" />
</application>
如果以上所有答案都不起作用。然后使用另一个模拟器。 它对我有用。
如果您使用google_maps_api.xml
的链接创建密钥,它会设置 MapActivity 的包名称,而不是应用程序的包名称(在清单中定义)。
确保您的包名称console.developers.google.com
与应用程序清单中的包名称相同。
这可能是因为您的密钥尚未限制。 创建 API 密钥后,您应该限制该密钥。 https://console.cloud.google.com/apis/credentials
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.