繁体   English   中英

Android:谷歌地图不显示

[英]Android: Google Maps not displaying

我正在尝试显示谷歌地图。 我可以看到背景(浅灰色背景,小瓷砖,左下角的谷歌标志),所以我知道我很接近。 但是,没有显示实际地图。 在 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 地图 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>

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

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

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

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

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

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

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

如果您的应用中有多个包,请在创建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" > 

好吧,实际上我遇到了这个问题,这让我发疯了。 在我找到解决方案之后。 很简单的:

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 代码在您的其他项目中是相同的,但您的每个程序的网络链接都是唯一的

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

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

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

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

 </application>

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM