地理编码结果,而不在地图上显示它们

时间:2014-02-13 18:40:10

标签: android google-maps google-geocoder

我正在开发一款让用户知道其位置的应用。我正在使用此example

但我也看到here“地理编码API只能与Google地图一起使用;不会在地图上显示地理编码结果”。所以我不能在没有在地图上显示结果的情况下使用Geocoder?

4 个答案:

答案 0 :(得分:3)

Geocoder,您使用的类,适用于Android,位于以下程序包中:android.location.Geocoder

这与Google地理编码API不同:
https://developers.google.com/maps/documentation/geocoding/?hl=fr
为此我们使用网址:
http://maps.googleapis.com/maps/api/geocode/output?parameters

有一个与Google Geocoding API相关的javascript GeoCoder类,它是Google Maps API v3的Geocoder类。 (搜索哪个需要我们:https://developers.google.com/maps/documentation/javascript/services?hl=fr#Geocoding

因此,当提及“地理编码API只能与Google地图结合使用时,不会在地图上显示地理编码结果。”

它适用于v3 API的API和相关类,而不是android.location.Geocoder

此外,我希望您了解:
https://code.google.com/p/android/issues/detail?id=8816

我遇到过那个。

答案 1 :(得分:2)

实际上,您可以使用Geocoding API,没有限制。看我的上一个答案

Get current location using json

答案 2 :(得分:2)

TLDR:你应该没问题。

您引用的内容确实适用于Google的REST API,并声明:

  

地理编码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应用程序   Google Maps Android API。 (但是,第9.1.1(b)节中的规则   如果您的Maps API实施,(公共访问)将继续适用   是一个使用任何其他Maps API的Android应用程序,除非   Maps API Implementation符合Section中的例外条件   9.1.2(a)(与谷歌的企业协议)。)

我总是觉得TOS有点难以掌握,最后还是联系了谷歌。虽然他们总是非常友好,但有时需要一些时间来回应。我希望这有助于为您和遇到它的任何其他人清除这一点。

答案 3 :(得分:2)

您可以使用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 - 而不是实际的地理编码服务实施。

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