【问题标题】:Geocoding results without displaying them on a map地理编码结果而不在地图上显示
【发布时间】:2014-03-12 20:02:40
【问题描述】:

我正在开发一个让用户知道其位置的应用程序。我正在使用这个example

但我也看到here 说“地理编码 API 只能与谷歌地图一起使用;地理编码结果不显示在地图上是被禁止的”。所以我不能在地图上不显示结果的情况下使用 Geocoder?

【问题讨论】:

标签: android google-maps google-geocoder


【解决方案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 servicea base abstract GeocoderProvider to be implementedan interface for location providers implementing the Geocoder services - 不是实际的 Geocoder 服务实现。

        因此,当您的应用在设备上运行时,它可能会在使用 Android Geocoder API 时访问任意数量的地理编码提供程序,具体取决于特定 OEM 在该特定设备上实现服务的方式。 Google 可能与某些 OEM 达成协议,通过他们自己的 web-based Geocoding API 提供这些服务,但该协议不涉及作为开发人员的您,也不会强制您执行基于 Web 的 Geocoding API 服务条款(因为您无法了解您的应用是否实际使用 Google 服务)。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-03-10
          • 2015-10-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-02-07
          • 1970-01-01
          相关资源
          最近更新 更多