【问题标题】:In Version 2 Map view does not show map在版本 2 中,地图视图不显示地图
【发布时间】:2013-05-15 12:05:10
【问题描述】:

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

<?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).

请帮帮我。

【问题讨论】:

  • 您是否在地图项目中引用了 google play services 库?
  • @Suraj 您是否遵循了所有必要的步骤?
  • @Raghunandan:是的,我在我的项目中提供了 Google Play servives Library 的参考
  • @Pratik:我按照所有必要的步骤...
  • 如果您已按照地图 api v2 文档中的所有步骤操作,它应该可以工作。

标签: android google-maps android-maps-v2


【解决方案1】:

也许密钥不正确。您可以尝试以下方法:

  • 确保输入正确的包名称,例如this
  • 在更新了最新 google play 的真实设备上进行测试。或者使用带有this guide的模拟器
  • google console site 上为 android 活动的 google map api v2

【讨论】:

  • 这真是太神奇了..即使他已经得到了它的 api 密钥,也必须去激活地图 api..谢谢哥们
  • 天哪,真是一场噩梦。花了 2 个小时检查所有内容,但不知道您必须明确打开 Google Maps Android API v2。它应该是隐式可用的。
  • @jigar 你在模拟器上测试吗?
  • 哇!花了 15 分钟试图找出最后一个选项在哪里!!哈哈。对于那些正在寻找去哪里打开“Google Maps Android Api v2”和“Google Maps API v2”的人,请在您管理 API 访问的网站内。
  • 现在没有 Google Maps API v2 这样的东西。
【解决方案2】:

我在使用 MapView 时遇到了这个问题

fragment_map.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 方法,您也将无法看到地图。希望这对某些人来说是有希望的。

【讨论】:

  • 是的......这对我有帮助:D
  • 没想到!为 MapView 实现所有生命周期方法都有效!谢谢!
  • 几个小时都没有头绪,它从来没有点击过我必须实现一次 onResume 方法......
【解决方案3】:

很多时候问题来自于未在清单的权限中添加谷歌服务支持:

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

<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>

【讨论】:

  • 这是给我的,很好,谢谢。真的应该读到安装文档的末尾。
【解决方案4】:

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

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

【讨论】:

  • 是的,我必须卸载我的应用并重新启动手机才能正常工作。
【解决方案5】:

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

Google Maps API V2

【讨论】:

  • 在我的情况下,问题是由于我没有添加此权限:
  • 很高兴我的回答对你有帮助,@BoD :)
  • 在添加用户对 READ_SERVICES 的用户权限(如用户 BoD)后,我的问题得到了解决。我不知道为什么谷歌文档中没有提到这一点。谢谢@Emil Adz
【解决方案6】:

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

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

希望对您有所帮助。

【讨论】:

  • 谷歌地图示例包名是;com.example.mapdemo
【解决方案7】:

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

【讨论】:

  • 不,他不能使用 MapFragment。他的目标最小 SDK 为 8,因此必须使用 SupportMapFragment。
  • @EmilAdz:是的,你是对的。但我只是给他一个建议,如果他选择制作 minSDK 11 或更高版本,这也是可能的。
  • @stickypens:我将在 google api 控制台中检查我的应用程序密钥。
  • 如果有人还在寻找答案,请在此处查看 - 同样的问题:stackoverflow.com/a/17947755/1891118
  • 根据this26.3%的用户仍在使用API Level 10
【解决方案8】:

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

祝你好运。

【讨论】:

    【解决方案9】:

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

    【讨论】:

      【解决方案10】:

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

      【讨论】:

        【解决方案11】:

        这是 99% 的密钥库问题。

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

        2)然后我从'android {'中的build.gradle(Module: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”启用为开启状态

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

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

        【讨论】:

          【解决方案12】:

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

          【讨论】:

            【解决方案13】:

            我遇到了同样的问题,所以我继续在 API 控制台创建了一个新密钥。此外,请确保按照说明在 API 控制台上记录发布密钥:Displaying the release certificate fingerprint

            它现在对我有用...

            【讨论】:

              【解决方案14】:

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

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

              【讨论】:

                【解决方案15】:

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

                【讨论】:

                  【解决方案16】:

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

                  【讨论】:

                    【解决方案17】:

                    您需要使用相同的 sh1 对您的 apk 进行签名,该 sh1 在 google api 控制台上注册相同的应用程序包名称并在 google api 控制台的 map v2 服务上,确保使用相同的 sh1 分发 debug.keystore 对您的 apk 进行签名,然后在真实设备上进行测试它会像魅力一样起作用。

                    【讨论】:

                      【解决方案18】:

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

                       <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" />
                      

                      【讨论】:

                        【解决方案19】:

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

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

                        希望这会有所帮助!

                        【讨论】:

                        • 这是针对 api v1 的!!已弃用!!
                        • @user901987 您的建议仅与地图 V1 相关,与 V2 无关。
                        猜你喜欢
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 2015-05-29
                        • 1970-01-01
                        • 2019-06-27
                        • 2020-05-23
                        • 2018-06-21
                        • 1970-01-01
                        相关资源
                        最近更新 更多