谷歌地图api键不工作v2

问题描述:

我有一个Android应用程序,利用谷歌地图。 我遵循这些指令,并使用调试键在调试模式下工作。 我从这里找到的debug.keystore中检索了我的SHA-1密钥。谷歌地图api键不工作v2

C:\用户\自己\ .android \ debug.keystore使用

C:\ Program Files文件\的Java \ jdk1.7.0_03 \ BIN>的keytool -list -v -keystore c:\ debug.keystore

无论何时我在我的测试手机(运行android 2.3.6)时使用eclipse上的应用程序运行应用程序调试,地图显示都很好。

但是,完成应用程序后,在发布的应用程序中,地图未显示。什么是可见的只有灰色瓷砖。

我知道这是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运行)也没有显示任何地图。

我的问题如下。

  1. 这仍然是正确的使用方法吗?因为在 - https://developers.google.com/maps/documentation/android/start#obtaining_an_api_key - 谷歌使用不同的方法使用片段。

  2. 我错过了什么?

  3. 此方法已被弃用或应该工作吗?

+0

向我们展示您的AndroidManifest。我很好奇“18:3E:1D:8C:xx:xx:xx:xx:xx:xx:xx:xx:xx:x:xx:1D:E1:08:32:8E; .mycompany.mapapp“,尝试删除它。 – 2013-02-23 14:00:44

+0

这是一个打字错误。现在已经纠正了。 – tony9099 2013-02-23 14:09:21

您正在为Google Maps V2生成一个ApiKey,但是您正在使用v1 MapView com.google.android.maps.MapView。 在Android Maps V2 API上,密钥放置在清单上,并使用Google Play服务库使用com.google.android.gms.maps.MapView显示地图。

我建议阅读概述部分here,以了解如何使用Google Play服务库设置您的项目,并查看新的API参考here

+0

因此com.google.android.maps.MapView不起作用? – tony9099 2013-02-23 14:20:44

+1

仅适用于仍使用V1 ApiKey的旧应用程序。您正在使用v2 ApiKey,因此您必须将代码更改为V2版本,包括正确的MapView/Markers/Overlays /等。 – Marcelo 2013-02-23 14:22:55

+0

好吧,我没有办法使用我的旧代码? – tony9099 2013-02-23 15:00:47

如果您正在开发google maps api。你需要有两套map api key。通过使用调试密钥库中的SHA1指纹生成一个map api密钥,该图api密钥用于在eclipse中调试应用程序并从此处运行该应用程序。另一个map api key是通过使用官方或生产密钥库中的SHA1指纹生成的,当您将签名或发布您的应用时,将使用此map api key。

我认为您的密钥不匹配,因为清单上的map api密钥来自调试密钥库,并且您已使用官方密钥库对您的应用程序进行了签名。

另外我认为你正在开发MapView。现在建议现在使用MapFragments。我在这里有链接可能会帮助你。

快速入门指南:https://docs.google.com/document/d/1dFzZT0C782BxLkDIUEb711rmsbMmYPURFV_2Cdb36so/edit?usp=sharing

故障排除线程如果遇到问题,MapFragment或谷歌Play服务库: Unable instantiate android.gms.maps.MapFragment

而且我在这个How to/Error in declaring google-play-services-component这里的答案可以帮助你。

+0

“不匹配”是什么意思?你能详细说明吗?如果可能举个例子? – tony9099 2013-02-23 14:13:10

+1

@ tony9099当你从eclipse直接运行你的应用程序时,你基本上是用你的debug.keystore安装apk签名的,现在你的应用程序正在使用你的debug.keystore的SHA1生成的map api key,它会正常工作。现在,如果您正在发布apk,您将使用自己的密钥库对其进行签名,则地图现在不会显示,因为您的地图api密钥来自debug.keystore。您必须使用自己的密钥库中的SHA1指纹生成map api密钥,并在发布或签署应用时使用该映射api密钥。 – 2013-02-23 14:21:48

+0

我用更多的信息和链接更新了我的答案。我希望这会帮助你。 :) – 2013-02-23 14:31:45