Google Map API 无法插入到 url,包括 Google Map Json

Posted

技术标签:

【中文标题】Google Map API 无法插入到 url,包括 Google Map Json【英文标题】:Google Map API cannot be inserted into url including in Google Map Json 【发布时间】:2020-01-18 10:38:25 【问题描述】:

我有一个如下所示的网址。

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

我想通过如下所示的改造部分从 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 : Responseprotocol=h2, code=200, message=, url=https://maps.googleapis.com/maps/api/geocode/json?latlng=40.9927242%2C29.0231916

API key 不能插入到 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时,由于没有在url中添加API,错误以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"

我该如何解决?

【问题讨论】:

【参考方案1】:

您需要在 Geocoding API 请求中显式添加 API 密钥(即https://maps.googleapis.com/maps/api/geocode/json?key=AIza...)。

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

另一方面,Geocoding API 不使用也不识别该 Android 密钥。它需要自己的密钥。现在您对该 API 的调用是无密钥的,这就是您收到 REQUEST_DENIED 错误的原因。

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

关于如何限制您的地理编码密钥,请查看 Google 的 documentation“在使用 Maps Web 服务 API 的移动应用程序上”部分中提到的技术。

希望对你有所帮助。

【讨论】:

以上是关于Google Map API 无法插入到 url,包括 Google Map Json的主要内容,如果未能解决你的问题,请参考以下文章

将 Google Map 的标记位置作为 url 插入

Google Map Road API 没有插入路径,也没有给出平滑的路线

Google Map Directions Api v2 无法执行路线/路径请求

如何将变量从 AsyncTask 返回到 Android 中的 Google Map 活动

iOS Google Map API错误

在Xamarin中使用Google Map