Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android上的空白地图视图_Android_Android Mapview - Fatal编程技术网

Android上的空白地图视图

Android上的空白地图视图,android,android-mapview,Android,Android Mapview,一年前,我使用谷歌地图v1实现了一个Android应用程序,现在我需要修复一个bug。问题是,当我在硬件设备上从Eclipse运行应用程序时,映射是空白的。在LogCat中,我得到错误: 04-26 14:07:30.754: W/System.err(2354): at android_maps_conflict_avoidance.com.google.googlenav.map.BaseTileRequest.readResponseData(BaseTileRequest.jav

一年前,我使用谷歌地图v1实现了一个Android应用程序,现在我需要修复一个bug。问题是,当我在硬件设备上从Eclipse运行应用程序时,映射是空白的。在LogCat中,我得到错误:

04-26 14:07:30.754: W/System.err(2354):     at android_maps_conflict_avoidance.com.google.googlenav.map.BaseTileRequest.readResponseData(BaseTileRequest.java:115)
我认为这是一个API键错误,但在过去2天的搜索堆栈溢出、Google和Maps SDK网站的过程中,我找不到解决方案。虽然这个问题已经在堆栈溢出上得到了解决,但没有一个解决方案对我有效。希望有经验的人能帮我

我知道mapsv1已被弃用,我打算升级到v2。但是现在我只需要修复这个bug,根据Google的说法,现有的API键应该可以继续工作

需要注意的是,我最近将我的开发环境从PC移到了Mac,确保使用相同的
debug.keystore
文件。我不确定这是不是在转移注意力,但也许我需要从旧环境复制一些设置或文件

我所尝试的:

  • 检查debug.keystore文件是否与旧计算机上的文件相同
  • 试图在Google API控制台上检查我的API密钥是否正确,但它不再出现(可能是因为它已被弃用)
  • 为Maps v2注册了新的API密钥并尝试使用它

  • 可能还有其他几个原因

    1.)如果您使用的是java 1.7或更高版本,则必须以不同的方式生成md5打印,因为它通常会返回sh1键。使用-v开关

    C:\Program Files\Java\jdk1.7.0\bin>keytool -v -list -alias
    androiddebugkey -keystore debug.keystore -storepass android -keypass android
    
    2.)Android清单文件中需要Internet权限

    <uses-permission
         android:name="android.permission.INTERNET">
     </uses-permission>
     <uses-permission
         android:name="android.permission.ACCESS_FINE_LOCATION">
     </uses-permission>
    
     <!-- import the library com.google.android.maps!!! -->
     <uses-library android:name="com.google.android.maps" />
    
    
    
    3.)在清单文件中使用以下权限

    <uses-permission
         android:name="android.permission.INTERNET">
     </uses-permission>
     <uses-permission
         android:name="android.permission.ACCESS_FINE_LOCATION">
     </uses-permission>
    
     <!-- import the library com.google.android.maps!!! -->
     <uses-library android:name="com.google.android.maps" />
    

    我想我终于明白了。调试证书的默认到期日为365天,我的证书于2012年9月9日到期。这意味着我必须升级到GoogleMapsV2来修复这个bug,我绝对是在胡说八道,因为这意味着我不能再支持Android 1.6,但将被迫使用最低版本的2.2。这将减少8%因碎片而无法升级的用户,并浪费我2天令人沮丧的时间

    为什么谷歌让地图在自己的平台(Android)上使用变得如此困难?相比之下,为iOS创建谷歌地图应用程序非常容易。尽管他们可能正试图用谷歌Play SDK解决这个碎片问题,而谷歌Play SDK可以独立于Android版本下载?不管怎样,我马上就要知道了,因为我的手被强迫了


    Grrr

    谢谢你的回答:1。但我无法重新生成此密钥,因为它已弃用。对吗?2.我已经有这个了。3.我已经有这个了。奇怪的是,这曾经奏效!这里写的是什么。?那是debug.keystore还是什么?谷歌地图Android版v1现在被弃用,取而代之的是v2。你不能再申请v1api密钥了,当然我已经有了。谷歌表示,v1密钥将继续工作,但您无法获得新密钥。v1 API密钥是从debug.keystore生成的,这就是为什么我确保从旧系统复制它。