代码之家  ›  专栏  ›  技术社区  ›  PearsonArtPhoto

通过web api以可靠的方式获取县名[已关闭]

  •  3
  • PearsonArtPhoto  · 技术社区  · 11 年前

    我正在寻找任何可以让我找到我所在的县的web api,给定一组lat/long。我知道这可以通过Android GeoCoder完成,但我对结果不满意,即使是从我的家乡,位于一个城市,该位置返回null,使用以下代码:

    addresses = geocoder.getFromLocation(mLocation.getLatitude(), mLocation.getLongitude(), 1);
    address=addresses.get(0);
    Log.v(TAG,""+address.getSubAdminArea());
    

    它找到了我的地址、我的州和我的城市,但没有找到我的县。

    最终,我希望这能在这样一种情况下发挥作用,即我可以远离铺好的道路,但仍然知道自己在哪个县,我相信,如果我甚至不能弄清楚自己在城市里的位置,我就永远无法弄清楚我在乡村的位置。我宁愿不为这项服务付费,但如果服务足够好,我甚至愿意付费。我想使用一个网络api,很明显,我会接受我需要在所述远程位置访问互联网。

    完美的应用程序将按优先级顺序满足以下要求。

    1. 在任何地点工作,非常可靠,不需要道路
    2. 在美国的职能。
    3. 在任何一个国家工作,相当于一个县,按技术用途优先。
    4. 快速工作
    5. 每天至少可以免费拨打1000个电话。
    6. 还要提取状态信息和邮政编码。
    7. 即使在无人居住的小岛上也可以工作,当然前提是可以上网。
    3 回复  |  直到 11 年前
        1
  •  2
  •   sam    11 年前

    我不确定Android GeoCoder是否使用Google GeoCoding api,但我刚刚用我的地址测试了这个api,它返回的地址包括一个类似县的地址。

    你能用你的地址试试这个吗?

    http://maps.googleapis.com/maps/api/geocode/json?latlng=37.6,125.961452&sensor=true

    参考文献:

    https://developers.google.com/maps/documentation/geocoding/#ReverseGeocoding https://developers.google.com/maps/documentation/geocoding/#Types

        2
  •  1
  •   scai    11 年前

    你可以给予 Nominatim 尝试一下。它应该满足您的所有要求。它使用来自OpenStreetMap的数据,并且能够 geocoding reverse-geocoding 。请参阅此示例反向地理编码查询:

    http://nominatim.openstreetmap.org/reverse?format=xml&lat=52.5487429714954&lon=-1.81602098644987&zoom=18&addressdetails=1

    如果您修改 format 参数

    OSM的官方Nomatim实例有一个相当严格的 usage policy 因为它运行在捐赠的服务器上。但也有没有这种限制的替代实例,例如 MapQuest 。当然还有 local installation 也是可能的。

        3
  •  0
  •   PearsonArtPhoto    11 年前

    我发现,组合方法似乎是管理准确性和API调用的最佳方法。我一直在做一些工作,到目前为止,我正在按顺序使用以下4项服务:

    1. Android的 Geocoder
    2. http://developer.mapquest.com/
    3. https://developers.google.com/maps/documentation/geocoding/#ReverseGeocoding
    4. http://www.geonames.org/maps/us-reverse-geocoder.html#findNearestAddress

    仍在处理其他地址,但这些地址似乎适用于我迄今为止输入的所有典型地址。

    其中,Map Quest似乎总体上效果最好,它可以找出一个地区的邮政编码,也可以找到该县。总的来说,我很满意。谷歌地图API在弗吉尼亚独立城市失败了,比如 http://maps.googleapis.com/maps/api/geocode/json?latlng=38.7451,-77.478876&sensor=false ,但我能够通过一些额外的代码使其工作。GeoNames确实做到了弗吉尼亚独立城市。事实上,GeoNames似乎是总的赢家,只是它在美国以外的地方不起作用,也不像边缘案例那样起作用。