13

我正在尝试显示谷歌地图。我可以看到背景(浅灰色背景、小瓷砖、左下角的 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)

我正在使用带有系留电话的 Google maps 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>
4

12 回答 12

16

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

于 2013-05-14T19:46:07.860 回答
4

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

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

于 2013-05-14T20:05:37.467 回答
2

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

于 2018-02-24T21:43:14.193 回答
2

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

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

刚刚删除了xml文件......希望它有帮助!

于 2018-11-19T17:55:02.353 回答
1

如果您的应用程序中有多个包,请在创建时小心,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" > 
于 2014-03-18T22:53:22.137 回答
1

好吧,实际上我曾经遇到过这个问题,这让我发疯。在我找到解决方案之后。非常简单:

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 链接都是唯一的

于 2017-05-04T07:37:19.970 回答
0

我有同样的问题。问题出在我的清单文件中。检查您存储在 STRING.xml 中的谷歌地图键和 google_maps_api.xml 中的谷歌地图键是否具有相同的名称。

于 2017-05-26T04:40:31.673 回答
0

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

于 2019-01-01T09:45:10.070 回答
0

这可能是因为您必须将 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>
于 2019-04-03T15:59:18.573 回答
0

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

于 2019-07-12T15:45:16.207 回答
0

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

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

于 2020-02-06T17:51:03.843 回答
0

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

于 2020-05-01T08:07:56.957 回答