【问题标题】:Geocoding API vs Geocoder地理编码 API 与地理编码器
【发布时间】:2015-05-05 16:13:00
【问题描述】:

在我的应用程序中,我需要使用地理编码,但我不太清楚使用哪种方法。直到昨天我将参数添加到 URL maps.googleapis.com/maps/api/geocode/json?address=myparameter&sensor=false,但 Google 阻止了我一天的请求,导致应用程序崩溃,因为它没有返回任何地理编码请求的结果。

现在我正在使用 Geocoder 类做同样的事情,而且我还看到您可以创建和使用 API 密钥进行地理编码。
您推荐使用哪种方法?除了请求的限制之外,这两种方法有什么区别?

【问题讨论】:

    标签: android google-maps-android-api-2 google-geocoding-api


    【解决方案1】:

    如果您需要在应用中使用地图,则应使用名为:Google Maps Android API v2 的 API。

    如果您需要管理地理编码数据(地址为 lat/lng 或反之亦然),请启用 Geocoding API 并开始使用 Geocoder 类。

    例如(到地址的纬度/经度):

    Geocoder geocoder = new Geocoder(this, Locale.getDefault());
    addresses = geocoder.getFromLocation(gps.getLatitude(),  gps.getLongitude(), 1); 
    

    【讨论】:

    • 但是Geocoder类有一些限制? Geocoder类和Geocode API如何连接,必须把key放在Manifest中,地图的使用吗?
    • 不,你只需要从谷歌控制台启用API,然后你就可以开始使用它了。在 Manifest.xml 中你只需要设置:
    • @AndreaMontanari 是否需要定义 API 密钥,如果我不指定会发生什么?
    • @NigamPatro 基本上没有 API KEY,您将无法使用该服务。这是一种让 Google 知道您正在使用该特定 API 的证书
    • @AndreaMontanari 但是,如果我在没有 API 密钥的情况下在浏览器中执行该 API,那么它也会给出结果。
    【解决方案2】:

    Geocoder 是 Android 框架中免费的内置 API。地理编码 API 是一个付费的休息 API。 Geocoder 在内部使用不同的搜索堆栈,与 Geocoding REST API 相比,这会导致不同的结果。 Geocoding rest API 通常比 Geocoder 工作得更好,但有使用限制并且实现更大。

    【讨论】:

    • 请注意,内置 API 不一定可用,您必须有一个后备。
    【解决方案3】:

    免费 API 的用户有以下限制:

    • 每 24 小时有 2,500 个请求。
    • 每秒 5 个请求。

    您也可以在 web-request 中包含 API 密钥,例如:

    https://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&key=API_KEY
    

    不确定 android Geocoder 类,也许其他人可以在这方面帮助你。但我认为同样的限制也适用。

    【讨论】:

    • 但是,基本上,在没有在浏览器中提供任何密钥的情况下访问 API 时,它可以正常工作并给出结果。那么,是否总是需要提供密钥?
    【解决方案4】:

    Geocoder API 内置于系统中,使用方便。根据我的经验,它在大多数情况下都有效,尽管:

    • 在某些情况下会失败并抛出grpc failedIOException
           Non-fatal Exception: java.io.IOException: grpc failed
           at android.location.Geocoder.getFromLocation(Geocoder.java:136)
    
    • 它甚至可能在某些设备上不可用(使用isPresent() 方法来验证这一点)。

    以上,我不认为 Geocoder API 是超级可靠的,所以如果地理编码是你的应用程序的关键部分,你可以考虑其他选项(如 Google 的 Geocoding API,它不是免费的)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-30
      • 2016-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-03
      相关资源
      最近更新 更多