【问题标题】:Android: Google Maps not displayingAndroid:谷歌地图不显示
【发布时间】:2020-05-01 16:07:56
【问题描述】:

我正在尝试显示谷歌地图。我可以看到背景(浅灰色背景、小瓷砖、左下角的 Google 徽标),所以我知道我已经接近了。但是,没有显示实际的地图。在 LogCat 中,我看到这条消息一遍又一遍地重复:

05-14 13:28:17.926: W/System.err(27458): 在 android_maps_conflict_avoidance.com.google.googlenav.datarequest.DataRequestDispatcher$DispatcherServer.run(DataRequestDispatcher.java:1702)

我正在使用谷歌地图 api 2 和连接电话进行测试,运行 2.3.4。

有人知道这可能是什么原因吗?谢谢!

package com.example.maptest;
import android.os.Bundle;
import com.google.android.maps.MapActivity; 
import com.google.android.maps.MapController; 
import com.google.android.maps.MapView;

public class MyMapActivity extends MapActivity {   

  private MapView mapView;   
  private MapController mapController;

   @Override   public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.map_layout);
     mapView = (MapView)findViewById(R.id.map_view);
   }

   @Override   
   protected boolean isRouteDisplayed() {
     return false;   
   }

 }

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.maptest"
    android:versionCode="1"
    android:versionName="1.0" >

    <permission android:name="com.example.maptest.permission.MAPS_RECEIVE" android:protectionLevel="signature"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="com.example.maptest.permission.MAPS_RECEIVE"/>
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

    <uses-feature
        android:glEsVersion="0x00020000"
        android:required="true"/>

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >

        <uses-library android:required="true" android:name="com.google.android.maps" />

        <activity
            android:name="com.example.maptest.MyMapActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <activity
             android:name=".MainActivity" >
             </activity>

        <meta-data
            android:name="com.google.android.maps.v2.API_KEY"
            android:value="xxxxxxxxxxxxxxxxxxxx"/> 

    </application>

</manifest>

【问题讨论】:

    标签: android google-maps-android-api-2


    【解决方案1】:

    此问题通常与用于签署清单的地图 API 密钥有关。查看this postthis one,它们描述了您遇到的相同错误。在这两种情况下,都是因为他们使用的 API 密钥是用错误的keystore 创建的。如果要从 Eclipse 进行测试,则需要确保在 Google API 控制台中创建 API 密钥时使用调试密钥库。

    【讨论】:

    • 谢谢。我正在重用来自不同项目的另一个 API 密钥。我为这个项目生成了一个新的,它消除了 LogCat 中的错误。不过还是没有地图……
    【解决方案2】:

    基本上,您将弃用的 Android API v1 与新的 API v2 混合在一起。

    最简单的迁移方法是删除所有与 v1 相关的代码并从头开始,点击此链接:https://developers.google.com/maps/documentation/android/start

    【讨论】:

    • 我别无选择,因为这需要在 2.3.4 (API 10) 上运行。据我了解,v2 仅在 API 11 上运行。没有?
    • 没有。 API v2 从 2.2 (API 8) 开始工作。此外,它还需要 OpenGL ES 2.0,但(除非您正在为新兴市场开发)超过 99% 的设备都有。
    • 谢谢。我已经阅读了您之前建议的文档,但没有运气。该文档中有这一行:“请注意,下面的代码仅用于在针对 Android API 12 或更高版本的应用程序中测试您的设置”,所以我仍然卡住了。我会继续努力的。
    【解决方案3】:

    转到开发者控制台为您的设备启用地图 API,然后复制您的密钥并粘贴到 values->google_maps_api.xml 中。有用 如果在 Android 设备上使用 Android 密钥(由 Google 服务自动创建)

    【讨论】:

    • 在控制台中启用谷歌地图..你救了我!谢谢
    【解决方案4】:

    经过几天的努力,我找到了问题所在。 在我的清单中,我将键值存储在 xml 文件中,但它不起作用。 现在我有

    <meta-data
    android:name="com.google.android.geo.API_KEY"
    android:value="AIzxxxxxxxxxxxxxxxxxxxxxxxkey" />    and it works.
    

    刚刚删除了 xml 文件... 希望对您有所帮助!

    【讨论】:

    • 拯救了我的一天 :)
    • 完美解决方案!
    【解决方案5】:

    如果您的应用中有多个包,请在创建 API key 时小心,您必须使用 android mainfest.xml 文件顶部

    中包含的包名称
    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        **package="com.xxx.xxx"**
        android:versionCode="1"
        android:versionName="1.0" > 
    

    【讨论】:

      【解决方案6】:

      其实我遇到过这个问题,这让我发疯。在我找到解决方案之后。很简单:

      1- 在您的项目中,google_maps_api.xml 只需检查 Web 链接是否为您的包名称,如果您的包名称存在且正确。转到页面并获取密钥

      要获得一个,请点击此链接,按照说明操作,然后按“创建” 最后:

      https://console.developers.google.com/flows/enableapi?apiid=maps_android_backend&keyType=CLIENT_SIDE_ANDROID&r=...
      

      2- 只需创建新的谷歌地图活动项目即可获取 SHA-1 代码。

      不要忘记 SHA-1 代码在您的其他项目中是相同的,但您的每个程序的 Web 链接都是唯一的

      【讨论】:

      • 非常感谢@mehmet,您为我节省了一天的时间并为可行的解决方案投票。
      【解决方案7】:

      我遇到了同样的问题。问题出在我的清单文件中。检查您存储在 STRING.xml 中的 google maps 键和 google_maps_api.xml 中的 google maps 键是否具有相同的名称。

      【讨论】:

        【解决方案8】:

        一个最可能的原因是您没有在项目清单文件中添加 API 密钥。解决此问题的最简单方法是转到 "google_maps_api.xml" 文件并复制文件中的链接并将其粘贴到浏览器中。点击链接中的创建按钮,复制之后生成的 api 密钥,并将其粘贴到 AndroidManifest.xml 中的 "Your Api Key" 位置在 meta-data 标记内,编译项目这将解决问题。

        【讨论】:

          【解决方案9】:

          这可能是因为您必须将 google_maps_api.xml 文件放入 values 文件夹中并在其中粘贴正确的 API 密钥。 而且你必须把这段代码放在 AndroidManifest.xml 文件中

           <application>
           <meta-data
                  android:name="com.google.android.geo.API_KEY"
                  android:value="YOUR_API_KEY" />
          
           </application>
          

          【讨论】:

            【解决方案10】:

            如果以上所有答案都不起作用。然后使用另一个模拟器。它对我有用。

            【讨论】:

              【解决方案11】:

              如果您使用google_maps_api.xml 中的链接创建密钥,它会设置 MapActivity 的包名,而不是应用程序的包名(在清单中定义)。

              确保您的包名 console.developers.google.com 与应用程序清单中的相同。

              【讨论】:

                【解决方案12】:

                这可能是因为您的密钥尚未受到限制。创建 API 密钥后,您应该限制该密钥。 https://console.cloud.google.com/apis/credentials

                【讨论】:

                  猜你喜欢
                  • 2013-06-13
                  • 1970-01-01
                  • 1970-01-01
                  • 2016-01-26
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多