3

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

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

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

最终,我希望它能够在我可能远离铺好的道路的情况下工作,但仍然知道我在哪个县,而且我相信如果我什至无法弄清楚我在哪里城市,我永远不会弄清楚我在乡村环境中的位置。我宁愿不为这项服务付费,但如果服务足够好,我什至愿意付费。我想使用 web api,显然我会接受我需要在所述远程位置访问互联网。

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

  1. 在任何位置工作,非常可靠,无需道路
  2. 在美国发挥作用。
  3. 在任何国家工作,其相当于一个县,以技术用途为优先。
  4. 快速工作
  5. 每天至少可以免费拨打约 1000 次电话。
  6. 还提取状态信息和邮政编码。
  7. 甚至可以在无人居住的小岛上工作,当然前提是可以访问互联网。
4

3 回答 3

2

我不确定 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

于 2013-10-11T02:22:49.383 回答
1

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

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

如果您修改format参数,它也可以返回 JSON 而不是 XML。

OSM 的官方 Nominatim 实例具有相当严格的使用政策,因为它在捐赠的服务器上运行。但也有没有这种限制的替代实例,例如MapQuest提供的实例。当然,本地安装也是可能的。

于 2013-10-11T06:59:13.680 回答
0

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

  1. Android的地理编码器
  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 似乎总体上工作得最好,它会找出一个地区的邮政编码,也会找到县。总的来说我很满意。Google Maps API 未能通过弗吉尼亚独立城市,例如http://maps.googleapis.com/maps/api/geocode/json?latlng=38.7451,-77.478876&sensor=false,但我能够通过一点让它工作额外的代码。GeoNames 确实做过弗吉尼亚独立城市。事实上,GeoNames 似乎是总体赢家,但它在美国以外的地区不起作用,而且效果不如边缘案例。

于 2013-10-12T21:31:21.987 回答