我在我的应用程序中实现了Google地图,但它只显示空白网格。我已经在AndroidManifest.xml文件中进行了更改,并在地图活动的布局文件中包含了API密钥。
我在我的应用程序中实现了Google地图,但它只显示空白网格。我已经在AndroidManifest.xml文件中进行了更改,并在地图活动的布局文件中包含了API密钥。
<uses-permission>
标签需要作为<manifest>
元素的直接子元素,而不是<application>
元素。我之前错误地把它们放在了<uses-library>
标签后面。所以你的AndroidManifest.xml文件的最终结构应该类似于这样:<?xml version="1.0" encoding="utf-8"?>
<manifest ... >
<uses-sdk ... />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<application ... >
<activity ... >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<uses-library android:name="com.google.android.maps" />
</application>
</manifest>
在API控制台中,我一直遇到相同的问题,直到我意识到我启用了Google Maps API v2而不是Google Maps Android API v2。启用后,一切都正常了。
private String getShaKey() {
//fucnion para saber si esta bien registrado el codigo de googlemaps
//ME SALE EXCEPTION DE NOMBRE NO ENCONTRADO?¿?¿
String strRet="";
try {
PackageInfo info = getPackageManager().getPackageInfo("your.package.name",
PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
//Log.v(TAG, "KeyHash:" + Base64.encodeToString(md.digest(),
strRet="KeyHash:" + Base64.encodeToString(md.digest(),Base64.DEFAULT);
}
} catch (NameNotFoundException e) {
//e.printStackTrace();
strRet="EXCEPTION NOMBRE NO ENCONTRADO";
} catch (NoSuchAlgorithmException e) {
//e.printStackTrace();
strRet="EXCEPTION ALGORITMO NO";
}
return strRet;
}
我也遇到过这种情况。第一次成功启动谷歌地图时,它运行良好;第二天,整个地图(默认视图)只渲染了一半,而另一半则仅填充了瓷砖,在更改地图中的某些属性后,它全部变成了瓷砖。
现在,我所做的就是更新我的 API 密钥,然后一切都恢复正常了。
这个问题发生在我启动地图时作为意图(Intent intent = new Intent(android.content.Intent.ACTION_VIEW, mapUrl) ...
)。地图被创建为空,没有加载任何内容。地图在右上角显示我的图标为"已登录用户",但没有任何错误信息。在模拟器上一切运行正常。最后,我检查了正常的谷歌地图应用程序,它也是空的。
解决方法:从开发设备的设置应用中移除我的谷歌帐户。我花了几个小时才弄清楚这个问题。不知道那是什么,但也许能帮助别人省些时间。
我曾经遇到过同样的问题。我在Manifest.xml文件中添加了这一行代码,现在一切都正常工作:
<uses-library android:name="com.google.android.maps" />