谷歌地图 SDK 地理编码

Posted

技术标签:

【中文标题】谷歌地图 SDK 地理编码【英文标题】:Google Maps SDK Geocoding 【发布时间】:2018-10-29 21:06:12 【问题描述】:

问题:

问题在于 android 的内置 Geocoder 后端在 AOSP 的分支和 IGeocodingProvider 的实现之间有所不同。为了保持一致性,最好使用 Google Maps Geocoding API。在我的搜索中,我没有找到使用 Google Play 服务 SDK 进行地理编码的方法。

存在地理编码 REST API,但我将无法将 API 密钥限制为我的 Android 应用程序。

问题:

是否有用于地理编码的 Google Play 服务 SDK 必须能够限制 API 密钥?

【问题讨论】:

【参考方案1】:

很遗憾,Google Play 服务 SDK 中包含的 Google Maps Android API v2 没有自己的地理编码器,可以与具有 Android 应用限制的 API 密钥一起使用。

该功能请求是在 2013 年创建的,但 Google 似乎并未对此任务设置高优先级。您可以在 Google 问题跟踪器中查看功能请求并为其加注星标:

https://issuetracker.google.com/issues/35823852

目前,唯一可以替代 Android 内置地理编码器的是 REST API。有一个Java client library for Google Maps API Web Services 可以更轻松地将 Geocoding REST API 与 Java 代码集成,但是,REST API 中的 API 密钥可能仅受 IP 地址限制:

https://developers.google.com/maps/faq#keysystem

为了应用 IP 限制,您需要添加一个中间服务器,该服务器将向 Google 发送网络服务请求并将响应传回您的移动应用程序。在这种情况下,您可以通过服务器的 IP 地址来保护 API 密钥。

【讨论】:

以上是关于谷歌地图 SDK 地理编码的主要内容,如果未能解决你的问题,请参考以下文章

谷歌地理编码 API 不如使用地址的谷歌地图准确

用于场地的谷歌地图地理编码器

如何解析谷歌地图地理编码结果

如何从谷歌地图地理编码返回地址类型?

谷歌地图地理编码器返回相同的结果

从谷歌地图的地理位置获取邮政编码