Google 地图 API 无法插入到 url 中,包括 Google 地图 Json

Google Map API cannot be inserted into url including in Google Map Json

我有一个 url 如下所示。

https://maps.googleapis.com/maps/api/geocode/json?key=MY-KEY-API&latlng=40.9927242,29.0231916

我想通过如下所示的 Retrofit 部分从 url 获得 json 结果。

public static final String URL = "https://maps.googleapis.com";

@GET("/maps/api/geocode/json")
    Call<Location> getInformation(@Query("latlng") String lat);

Call<Location> req = Manager.getInstance().getCity("40.9927242,29.0231916");

响应如下所示。

response : Response{protocol=h2, code=200, message=, url=https://maps.googleapis.com/maps/api/geocode/json?latlng=40.9927242%2C29.0231916}

API 键无法插入 url 部分,即使它在 AndroidManifest.xml

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

google_maps_key.xml

<string name="google_maps_key"
        templateMergeStrategy="preserve" translatable="false">
        MY-KEY-API
</string>

当我点击url时,由于没有将API添加到url中,所以以json格式定义错误。

{
"error_message": "You must use an API key to authenticate each request to Google Maps Platform APIs. For additional information, please refer to http://g.co/dev/maps-no-account",
"results": [],
"status": "REQUEST_DENIED"
}

我该如何解决?

您需要向地理编码 API 请求明确添加 API 键(即 https://maps.googleapis.com/maps/api/geocode/json?key=AIza...)。

Maps SDK 使用您插入 Android 清单的密钥 Android 在您的 Android 应用程序上加载地图。

另一方面,地理编码 API 既不使用也不识别 Android 键。它需要自己的密钥。现在你对这个 API 的调用是无密钥的,这就是你得到 REQUEST_DENIED 错误的原因。

旁注: 建议您为 Web 服务使用另一个 API 密钥,因为 xml 文件中的密钥应该是 Android restricted.

至于如何限制您的地理编码密钥,请查看 Google 的 documentation、"On mobile apps that use Maps Web Service APIs" 部分中提到的技术。

希望对您有所帮助。