首页 > 解决方案 > 具有受限密钥的应用程序中的谷歌地图不起作用

问题描述

我有一个渲染 MapView 和折线的 android 应用程序,如果我使用 IP 受限 API 密钥,它可以在 Android 模拟器上正常工作,但当我使用 android 受限密钥时,它甚至不显示地图,而且绝对没有折线世博会构建的应用程序在我的手机上运行。

我的 app.json 中有以下内容:

{
  "expo": {
    "android": {
      "package": "com.company.project",
      "permissions": [ "CAMERA" ],
      "config": {
        "googleMaps": {
          "apiKey": "ACTUAL_API_KEY_HERE"
        }
      }
    },
...

代码的方向部分如下:

        const key = Constants.manifest.android.config.googleMaps.apiKey;
        const resp = await fetch(`https://maps.googleapis.com/maps/api/directions/json?origin=${ startLoc }&destination=${ destinationLoc }&key=${ key }`);
        const respJson = await resp.json();

我正在使用以下命令构建我的应用程序:

世博会构建:安卓

然后我从 expo.io 下载 apk。

该密钥仅限于 GCP 控制台中的 android 应用程序。我已验证我的 app.json 中的包名称与限制中的名称匹配,并且我从“expo fetch:android:hashes”命令中获取了 SHA-1 指纹。

正如我所说,这在模拟器中运行良好(使用 IP 受限密钥),但在我的手机上运行时却不行。我错过了什么吗?

标签: androidgoogle-directions-api

解决方案


检查你在 Manifest 文件中使用元数据。

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

推荐阅读