【问题标题】:Android google maps not showing the actual mapAndroid 谷歌地图没有显示实际地图
【发布时间】:2015-11-23 09:01:30
【问题描述】:

一点上下文:

自从几周前我正在使用适用于 Android 的 google maps api 做一些事情以来,一周前我不得不重置我的电脑,然后我从我的私人存储库中克隆了我的 Android 项目。现在,该项目的谷歌地图部分不起作用,当我启动地图活动时,它显示了预期的布局但地图没有呈现,我只看到左下角的谷歌标志。

我已经检查了以下内容:

  • 我有一个格式为 AIzaSyA********************** 的开发者控制台 API KEY
  • API KEY 凭证用于包 co.com.something.activities 和由自动生成的 google_maps_api.xml 给出的 SHA1 证书

    您还可以使用以下行将您的凭据添加到现有密钥: D6:76:DA:B5:##:##:##:##:##:##:##:##:##:##:##:##:##;co.com .something.activity

  • 我的清单中有

        <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" />
    <meta-data android:name="com.google.android.geo.API_KEY" android:value="@string/google_maps_key" />
            <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
  • google_maps_api.xml 上的 API KEY 与控制台 API KEY 相同

  • onMapReady(GoogleMap googleMap) 方法在我的活动中被调用,我正在设置一些 LatLng 点并移动相机(仍然不会显示地图)

  • 我在 Android Studio 中尝试了以下操作:构建 APK,生成签名的 APK,然后将这些 APK 上传到我的手机(无效)。

  • 我在应用程序的项目文件夹下有要发布的密钥库,我已将其删除并创建它并使用新的 SHA1 重新创建 API KEY

  • 我没有接触过 debug.keystore,因为我不知道它的位置。

  • 我正在将地图加载到活动的片段中(效果很好)

<fragment xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        xmlns:map="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent"
        android:layout_height="fill_parent" android:id="@+id/map"
        tools:context="co.com.wayfit.activities.RouteActivity"
        android:name="com.google.android.gms.maps.SupportMapFragment" />

这是我的 gradle 文件

android {
compileSdkVersion 23
buildToolsVersion "23.0.1"
signingConfigs {
    release {
        storeFile file('C:/ProjectDir/app/wayfit.keystore')
        storePassword "wayfit"
        keyAlias "wayfit"
        keyPassword "wayfit"
    }
}
defaultConfig {
    applicationId "co.com.wayfit"
    minSdkVersion 15
    targetSdkVersion 23
    versionCode 1
    versionName "1.0"
    signingConfig signingConfigs.release
}

buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        signingConfig signingConfigs.release
    }
}
productFlavors {
}
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.1.1'
    compile 'com.android.support:design:23.1.1'
    compile 'com.google.android.gms:play-services:8.3.0'
    compile 'com.google.android.gms:play-services-ads:8.3.0'
    compile 'com.google.android.gms:play-services-identity:8.3.0'
    compile 'com.google.android.gms:play-services-gcm:8.3.0'
}

编辑:

我认为我的问题是由于 API KEY。我尝试删除活动并创建一个新的地图活动,android studio 为我生成了一个名为 google_maps_api.xml 的文件,它说 您还可以使用以下行将凭据添加到现有密钥: D6:76:DA:B5:##:##:##:##:##:##:##:##:##:##:##:##:##;co.com .something.activity

所以我想将它用于我的 api 凭据,但是当我运行命令提示符“keytool -v -list -keystore mykeystore.keystore”时,这与我用来签署 apk 的相同,我收到另一个不同的 SHA1

D8:B2:29:2C:C5:##:##:##:##:##:##:##:##

我在开发者控制台的同一个包下的同一个 API KEY 中使用了两者。

让我烦恼的另一件事是 google_maps_api.xml 在名称右侧显示(调试),这会影响什么吗?

【问题讨论】:

  • 您的 API 密钥似乎限制了对您正在使用的 SHA1 密钥库指纹的访问。

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


【解决方案1】:
  • 检查您设备的日期和时间设置是否与您当前的时区相对应(遗憾的是,日志输出不会返回太多建设性信息来引导您考虑日期和时间)
  • 检查您是否在 API 控制台中启用了正确的服务(启用 Google Maps API Android V2 而不是 Google Maps API V2,如果您在此步骤中操作错误,日志将返回 Authentication Failed)
  • 检查您是否使用了正确的密钥库来获取 API 机密(日志会提示您身份验证失败
  • 检查您是否包含了正确的库文件

更多信息可以在关于空白谷歌地图的大量其他问题中找到: https://stackoverflow.com/a/15636254/1099716

【讨论】:

  • 我已经检查了所有内容,但我认为 API KEY 有问题,我在最后用我发现的内容编辑了我的问题。
  • 是的。典型的情况是包名称发生变化等
【解决方案2】:

debug 的 API_KEY 已存储 app\src\debug\res\values\google_maps_api.xml

release 的 API_KEY 放入文件夹 app\src\release\res\values 的 google_maps_api.xml 文件中对我有用,如该答案所述..

https://stackoverflow.com/a/42123330/2796625

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-20
    • 1970-01-01
    • 2014-12-27
    • 2020-04-03
    • 1970-01-01
    相关资源
    最近更新 更多