地理编码结果而不在地图上显示
Posted
技术标签:
【中文标题】地理编码结果而不在地图上显示【英文标题】:Geocoding results without displaying them on a map 【发布时间】:2014-03-12 20:02:40 【问题描述】:我正在开发一个让用户知道其位置的应用程序。我正在使用这个example
但我也看到here 说“地理编码 API 只能与谷歌地图一起使用;地理编码结果不显示在地图上是被禁止的”。所以我不能在地图上不显示结果的情况下使用 Geocoder?
【问题讨论】:
您确定限制不仅仅针对 REST API 吗?在Geocoder
的Javadoc 中我看不到这个限制。
这就是我要问的
看到这个***.com/questions/15711499/…
【参考方案1】:
Geocoder
,您使用的类,对于 android,位于包下:android.location.Geocoder
。
这与 Google 地理编码 API 不同:https://developers.google.com/maps/documentation/geocoding/?hl=fr 我们将使用 url:http://maps.googleapis.com/maps/api/geocode/output?parameters
有一个用于 javascript 的 GeoCoder 类,它与 Google Geocoding API 相关,它是 Google Maps API v3 的 Geocoder 类。 (搜索将我们带到:https://developers.google.com/maps/documentation/javascript/services?hl=fr#Geocoding)
因此,当提到“Geocoding API 只能与 Google 地图一起使用时;禁止在不将其显示在地图上的情况下进行地理编码结果。”
它将用于 API 和 v3 API 的相关类,而不是 android.location.Geocoder
。
另外,我想让你知道:https://code.google.com/p/android/issues/detail?id=8816
我遇到过那个。
【讨论】:
【参考方案2】:其实你可以使用Geocoding API,没有限制。看我最后的回答
Get current location using json
【讨论】:
【参考方案3】:TLDR:你应该没问题。
您引用的内容确实适用于 Google 的 REST API 和状态:
Geocoding API 只能与 Google 地图一起使用;禁止在未在地图上显示的情况下对结果进行地理编码。有关允许使用的完整详细信息,请咨询Maps API Terms of Service License Restrictions。
据我所知,这不会影响 Android 的使用。引用this answer 似乎是:
因此对 Android GeoCode API 的使用没有硬性限制,更多的是每台设备(客户端)的公平使用政策
来自TOS:
(a) 免费访问(免费)。您的 Maps API 实施必须通常可供用户免费访问,并且不得要求付费订阅或其他基于费用的受限访问。此规则适用于您的内容和 Maps API 实施中的任何其他内容,无论您的内容或其他内容是现在存在还是以后添加。
但是:
(b) 移动应用程序。 (i) 如果您的 Maps API 实施用于通过在线商店收费出售的移动应用程序,并且可以下载到移动设备上,则第 9.1.1(a) 节(免费访问)中的规则不适用访问在线商店。
(ii) 第 9.1.1(b) 节(公共访问)中的规则不适用,如果 您的 Maps API 实现是一个 Android 应用程序,它使用 谷歌地图安卓 API。 (但是,第 9.1.1(b) 节中的规则 如果您的 Maps API 实施,(公共访问)将继续适用 是使用任何其他 Maps API 的 Android 应用程序,除非 Maps API 实现符合第 1 节中的例外情况 9.1.2(a)(与 Google 的企业协议)。)
我一直觉得 TOS 有点难以理解,因此最终联系了 Google。虽然他们一直非常友好,但有时需要一些时间才能做出回应。我希望这有助于为您和遇到它的任何其他人解决这个问题。
【讨论】:
【参考方案4】:您可以使用Android Geocoder 而无需在地图上显示结果。
Android 的地理编码服务是从任何特定的服务器端实现中抽象出来的,并且依赖于在设备中实现此功能的 OEM。在上面的文档中,它说:
Geocoder 类需要一个不包含在核心 android 框架中的后端服务。如果平台中没有后端服务,Geocoder 查询方法将返回一个空列表。使用 isPresent() 方法确定是否存在 Geocoder 实现。
换句话说,Android 开源项目仅包含 a proxy class for the Geocoder service、a base abstract GeocoderProvider to be implemented 和 an interface for location providers implementing the Geocoder services - 不是实际的 Geocoder 服务实现。
因此,当您的应用在设备上运行时,它可能会在使用 Android Geocoder API 时访问任意数量的地理编码提供程序,具体取决于特定 OEM 在该特定设备上实现服务的方式。 Google 可能与某些 OEM 达成协议,通过他们自己的 web-based Geocoding API 提供这些服务,但该协议不涉及作为开发人员的您,也不会强制您执行基于 Web 的 Geocoding API 服务条款(因为您无法了解您的应用是否实际使用 Google 服务)。
【讨论】:
以上是关于地理编码结果而不在地图上显示的主要内容,如果未能解决你的问题,请参考以下文章