24

地图活动不显示地图,它只是显示为带有缩放控制按钮的白屏。像这样的清单文件:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.demomap"
    android:versionCode="1"
    android:versionName="1.0" >
    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />
   <permission
        android:name="com.example.demomap.permission.MAPS_RECEIVE"
        android:protectionLevel="signature" />
    <uses-permission android:name="com.example.demomap.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" />
        <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.demomap.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

        <meta-data
            android:name="com.google.android.maps.v2.API_KEY"
            android:value="AIzaSyCTQZOcXFS3RpNSVe79HHN1xojat-2MbT4" />
    </application>
    <uses-feature
        android:glEsVersion="0x00020000"
        android:required="true" />
</manifest>

我的 XmL 文件如下所示:

<?xml version="1.0" encoding="utf-8"?>
<fragment
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/map"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    class="com.google.android.gms.maps.SupportMapFragment" />

日志猫错误:

05-15 17:15:16.255: E/Google Maps Android API(26201): Failed to load map. Error contacting Google servers. This is probably an authentication issue (but could be due to network errors).

请帮我。

4

19 回答 19

42

也许钥匙不正确。您可以尝试以下操作:

于 2013-05-23T10:59:39.827 回答
27

我使用 MapView 遇到了这个问题

片段映射.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">

<com.google.android.gms.maps.MapView
    android:id="@+id/mapview"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"/>

    @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
    String message = getArguments().getString(EXTRA_MESSAGE);
    v = inflater.inflate(R.layout.map_f, container, false);
    vh = new ViewHolder();
    assetHandler = new AssetHandler(getActivity());
    vh.mapView=assetHandler.mapViewHandler.set(v,R.id.mapview);
    vh.mapView.onCreate(savedInstanceState);

    vh.mapView.getMapAsync(new OnMapReadyCallback() {
        @Override
        public void onMapReady(GoogleMap googleMap) {
            googleMap.getUiSettings().setMyLocationButtonEnabled(true);
            googleMap.setMyLocationEnabled(true);
            // Needs to call MapsInitializer before doing any CameraUpdateFactory calls
            try {
                MapsInitializer.initialize(getActivity());
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
    return v;
}


@Override
public void onResume() {
    super.onResume();
    vh.mapView.onResume();


}

@Override
public void onPause() {
    vh.mapView.onPause();
    super.onPause();
}

@Override
public void onDestroy() {
    vh.mapView.onDestroy();
    super.onDestroy();
}

@Override
public void onLowMemory() {
    super.onLowMemory();
    vh.mapView.onLowMemory();
}

我注意到如果没有实现 LifeCycle 方法,您也将无法看到地图。希望这对某些人来说是有希望的。

于 2015-01-17T17:28:11.583 回答
7

很多时候,问题出在清单的权限中没有添加谷歌服务支持:

检查您的清单中是否存在此权限:

<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
于 2013-06-06T09:19:19.770 回答
6

我更改了包名称并更新了控制台。我的一切都正确(清单中正确的 SHA1 密钥、包名称和 API 密钥),但仍然收到相同的错误消息。

我必须卸载应用程序并重新启动手机才能解决问题。似乎正在缓存一些东西。

于 2013-08-03T08:39:34.993 回答
3

正如这里提到的,这个问题通常源于您没有引用google-play-service正确引用库。请查看以下指南的前 3 个步骤,我写了没有在您的应用程序中集成 Google 地图,并确保您正确执行了所有步骤:

谷歌地图 API V2

于 2013-05-15T12:43:24.513 回答
3

我和你有同样的问题,但是当我注意到我在创建新应用程序时没有提到 API 密钥中的包名称///// 你必须在 API 谷歌控制台中检查它时,我解决了它。

must be the same package name at the console and the one in your eclipse.

希望对你有帮助。

于 2013-05-17T00:18:30.670 回答
2

我只是在同样的错误上花了几个小时。我最初没有正确设置调试密钥库 API 密钥,并且我的 android 设备缓存了硬编码到我的清单中的不正确的 API 密钥。最终,我只是从设备中删除了应用程序,清理了项目,这清除了设备本地存储的任何残留 API 密钥。我再次运行该应用程序,一切都像魅力一样!

祝你好运。

于 2013-07-25T22:13:01.923 回答
2

我的建议是你可以使用 MapFragment。据我所知,几乎所有设备都升级到 11 及以上。MapFragment 支持 11 及以上。再次登录 google api 控制台并检查您的应用程序密钥是否存在。我知道你已经做到了。但是再检查一次。因为我遇到了没有保存 api 密钥的问题。我每次都必须创建一个新项目。也许你也面临同样的问题。

于 2013-05-15T14:41:16.023 回答
1

这是 99% 的密钥库问题。

1)我用于发布和调试同一个文件 debug.keystore 我从 C:/Users/EEfimenko/.android/debug.keystore 复制到 C:\Users\EEfimenko\Android\MyApp\app 文件夹,以便直接访问喜欢'debug.keystore' 没有“C:/Users/...”链接

2)然后我从'android {'中的build.gradle(模块:app)文件添加指向它: signingConfigs { debug { storeFile file('debug.keystore') } release { storeFile file('debug.keystore') } }

3) 从 C:\Users\EEfimenko\Android\MyApp\app 文件夹中的 cmd 运行“keytool -list -v -keystore debug.keystore”命令,并将生成的 SHA1 指纹与小程序名称混合:FR:TY:CG... ..YF:ER;com.myapp.nameofit

4)然后我去https://code.google.com/apis/console/b/0/?noredirect到:

a) 服务并将“Google Maps Android API v2”启用为 ON 状态

b) 将 FR:TY:CG.....YF:ER;com.myapp.nameofit 放入“API Access”中,例如创建新的 Android 密钥

现在你可以再次看到你的地图,就像开始时没有钥匙一样!:)

于 2015-04-30T15:16:28.073 回答
1

如果您使用为 创建的 API 密钥debug.keystore,则只有在调试模式下运行应用程序时,您的地图才会呈现。确保你正在这样做。

于 2014-01-10T04:04:40.057 回答
1

有签名和未签名的两种类型的apk。如果你的apk是签名的,那么你想使用发布密钥。如果你使用调试密钥并签署了一个apk,它将无法工作。因此,当您导出 apk 并签入真实设备时,请使用发布密钥。在本文档中,它给出了https://developers.google.com/maps/documentation/android/start#the_google_maps_api_key 。显示发布证书指纹。

于 2013-05-15T12:20:35.607 回答
0

除了上面提到的要检查的项目之外 - 我已经在 Eclipse 之外生成了 SHA1 密钥。然后我将我的项目移动到 eclipse 中(我正在尝试 android studio)并且 eclipse 自动生成了一个新的 SHA1 密钥,所以我必须基于它生成一个新的 API_KEY。

于 2013-07-09T05:36:53.737 回答
0

这就是我所做的...... 1)更改了工作区。2) 从 Lance Nanek 的网站http://permalink.gmane.org/gmane.comp.handhelds.android.devel/98066看来,使用新的库功能,您无需指定您依赖的 Android 项目在属性的 Java 构建路径部分中。您可以在属性的 Android 部分执行此操作。

因此,转到Java构建路径中的应用程序项目的属性->点击项目-选择库并将其删除。这解决了我的问题!

于 2013-06-08T04:59:58.893 回答
0

我只是在这上面花了很多时间。结果发现我的磁盘上有一个不同的 debug.keystore(四处搜索以确保您使用的是正确的)。此外,如果您收到此错误,请让应用程序运行一段时间。当我在 Google API 访问中添加正确的 SHA1/app 时,我再次遇到错误,当我正在阅读一些文档时,地图突然出现了。大概需要1-2分钟。

于 2013-08-02T18:09:25.243 回答
0

我遇到了同样的问题,所以我继续在 API 控制台创建了一个新密钥。此外,请确保您按照说明在 API 控制台上记录您的发布密钥:显示发布证书指纹

它现在对我有用...

于 2013-06-04T02:27:17.030 回答
0

您是否在 API 控制台中激活了 Google 地图服务?

于 2013-05-23T10:54:08.087 回答
0

您需要使用在 google api 控制台相同的应用程序包名称和在 google api 控制台的 map v2 服务上注册的相同 sh1 签署您的 apk,确保使用相同的 sh1 分发 debug.keystore 签署您的 apk,然后在真实设备上测试它会工作喜欢魅力。

于 2014-06-18T05:50:04.073 回答
0

我有同样的问题,通过将其添加到清单文件来解决。

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

  
        <uses-library
            android:name="org.apache.http.legacy"
            android:required="false" />
于 2021-07-31T12:37:46.057 回答
-1

在我的清单的应用程序标记中添加以下内容之前,我无法让它工作:

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

希望这可以帮助!

于 2013-07-25T22:04:15.150 回答