Android“Hello, MapView”教程-地图瓷砖不加载

16

我是 Android 软件开发的新手,也是这个网站的新手。希望有人能够提供一些与我遇到问题相关的经验。

我一直在按照 Hello, MapView 教程 的步骤来学习 Android 框架和 Google 地图库。我已尽力按照教程的指导来实现应用程序。我的问题是,应用程序在模拟器中(甚至在我的手机上)都能够加载,但是地图瓦片却无法加载。

在谷歌搜索中,我找到了另一个网站上的一个帖子,该帖子的作者遇到的问题与我的类似,但他/她的问题是 AndroidManifest.xml 文件中添加的重要元素顺序不正确。我在我的文件中仔细检查了一遍,但一切似乎都是正确的。

所以,我不确定问题出在哪里,希望其他人能够提供帮助。如果需要,我可以提供任何代码片段。

谢谢。


请确保 keytool 程序在您的路径中。除非此程序在路径中,否则 ADT 将无法为您的应用进行签名。 - John Atwood
10个回答

20

瓦片无法加载通常是由于API密钥设置不正确导致的。 获取地图API密钥

回答留给d的回复:如果您想在从Eclipse运行时“只需工作”,则需要为调试证书获取API密钥。 同一页面上有说明,但请注意,在发布之前必须切换回其他密钥。


@fiXedd,链接似乎不再有效了。您能否更新一下? - Syn3sthete

5
我遇到了瓷砖加载不出来的问题。正如你在原帖中提到的,其中一个可能性是AndroidManifest.xml文件中元素的排序。具体来说,我最初有这一行代码:
<uses-permission android:name="android.permission.INTERNET" />

在应用程序元素之后。一旦我将此行移至应用程序元素之前,我的地图瓦片就开始再次加载。

5
我猜测问题不在于您拥有了错误的地图密钥,而是您没有正确设置密钥库。应用程序需要使用与生成地图密钥相同的密钥库进行签名。您已经注意到,当您自己对应用程序进行签名时,可以使其正常工作,但是您需要设置一个调试密钥库以便在常规Eclipse构建中使用Maps API。
所有Eclipse构建都需要一个调试密钥库;通常您不会注意到它,因为ADT会自动为您生成一个。您应该按照这里的说明创建自己的调试密钥库,或者使用ADT自动为您创建的调试密钥(它会告诉您在Windows > Preferences > Android > Build中创建了哪个密钥库),并注册另一个Maps API密钥。那个密钥将与Eclipse一起使用。
(顺便说一下,这确实让发布编译变得麻烦,因为您需要根据签名密钥库来回切换密钥。)

谢谢你,Daniel。是的,正如fiXedd也指出的那样,这正是我的问题。我已经设置好了调试密钥,Google的瓦片/数据正在传输中。再次感谢你的回复和耐心。 - Onyx
那么有没有好的方法来处理这个问题,或者你必须在每次发布构建之前切换密钥? - Roaders

3
瓷砖无法加载几乎总是由于使用不准确的API密钥导致的。你检查过你的密钥了吗?
详情请参考:获取地图API密钥

我知道我的API密钥是正确的。但是你的回应让我开始调查我的应用程序签名。我手动完成了导出过程,将生成的APK文件使用获取API密钥时使用的密钥进行签名,安装了随后生成的APK文件,这样就成功了。所以,我想知道下一步该如何自动化这个过程,这样当我在Eclipse中点击“运行”按钮时,它会构建、签名并将其安装到模拟器中? - Onyx

2
我曾经有同样的问题...我的错误在于将INTERNET权限放在应用程序内的清单文件中。当我将其移到外面(上面)时,一切都正常工作了。

啊,谢谢。我知道我的API密钥处理是正确的,因为我以前做过,但是直到这个解决方案出现之前都没有成功。 - T. Markle

1

确保您的顶部面板上有3G信号。如果没有,则表示无法连接到互联网。有时我不得不多次启动和关闭模拟器,才能使3G信号连接。


0

d. 可能是正确的。但是,互联网问题也会导致类似的症状。请确保您的INTERNET权限设置正确,并且没有代理服务器/防火墙阻止访问互联网。


请看我在d.的帖子下面的评论。 - Onyx

0

另一个问题可能是你所在的代理。代理会大大地减慢速度,即使仿真器中的地图应用程序和网络浏览器工作正常,它也会影响你的应用程序。


0

0
这是一个老问题,但这里有一个答案:如果你和我一样匆忙,你可能会不小心从网页上复制指纹代码而不是 API 密钥 :)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接