我有一个利用谷歌地图的Android应用程序。 我已经按照指示操作,并使用调试键使应用程序在调试模式下工作。 我从这里找到的debug.keystore中检索了我的SHA-1密钥。
使用C:\用户\自己\ .android \ debug.keystore
c:\ Program Files \ Java \ jdk1.7.0_03 \ bin> keytool -list -v -keystore c:\ debug.keystore
每当我通过在我的测试手机上运行eclipse的应用程序(运行android 2.3.6)时,地图显示正常。
然而,在完成应用程序后,在已发布的应用程序中,地图未显示。可见的只是灰色瓷砖。
我知道这是API密钥的问题。
所以我创建了一个新密钥(和带有它的apk),用它从谷歌的控制台生成一个新的API密钥。我删除了用密钥生成的apk,因为它有旧的ApiKey,并在此处粘贴了新的api密钥。
<com.google.android.maps.MapView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true"
android:id="@+id/mymap"
android:apiKey="my_api_key"
然后我重新导出了我的项目,但是这次使用的是与之前创建的步骤相同的密钥,因为它们包含相同的SHA-1。
但是,地图仍然没有显示,只显示灰色方块。 我已通过以下方式在api控制台中输入了SHA-1密钥。
18:3E:1D:8C:XX:XX:XX:XX:XX:XX:XX:XX:XX:X:XX:1D:E1:08:32:8E; com.mycompany.mapapp
我试图恢复到我的调试密钥,但这次调试应用程序(从eclipse运行)也没有显示任何地图。
我的问题如下。
这仍然是正确的使用方法吗?因为在 - https://developers.google.com/maps/documentation/android/start#obtaining_an_api_key - 谷歌使用不同的方法使用片段。
我缺少什么?
此方法是否已弃用或应该有效?
答案 0 :(得分:7)
您正在为Google Maps V2生成ApiKey,但您使用的是v1 MapView com.google.android.maps.MapView
。
在Android Maps V2 API上,密钥会放在清单上,您可以使用com.google.android.gms.maps.MapView
来显示地图,使用Google Play服务库。
答案 1 :(得分:5)
如果您正在开发google maps api。你需要有两套map api密钥。通过使用调试密钥库中的SHA1指纹生成的一个映射api密钥,当您在eclipse中调试应用程序并从那里运行时,将使用此映射api密钥。另一个地图api密钥是使用官方或生产密钥库中的SHA1指纹生成的,当您签署或发布应用程序时,将使用此地图api密钥。
我认为您的密钥不匹配,因为清单上的地图api密钥来自调试密钥库,而您已使用官方密钥库签署了应用程序。
另外我认为你正在开发MapView。现在建议立即使用MapFragments。我这里有链接可能对你有帮助。
快速入门指南:https://docs.google.com/document/d/1dFzZT0C782BxLkDIUEb711rmsbMmYPURFV_2Cdb36so/edit?usp=sharing
如果您遇到MapFragment或Google Play服务库的问题,请排查问题: Unable instantiate android.gms.maps.MapFragment
此处我也可以在How to/Error in declaring google-play-services-component中找到可能对您有帮助的答案。