从纬度,经度获取邮政编码?

时间:2010-08-25 10:23:43

标签: iphone

我想从用户当前位置(纬度,经度)获取邮政编码,我曾使用MKReverse Geocoder委托方法,但有时我无法获得基于纬度和广度的邮政编码信息。经度(有效值)。 MKReverseGeocoder还有其他选择吗? ZipCode数据库特定于国家,这就是我不想使用它们的原因。还有其他想法或线索吗?

由于

5 个答案:

答案 0 :(得分:34)

考虑GeoNames web service。它是Creative Commons归属许可下的完整地理编码/反向地理编码套件。您可以下载他们的数据,也可以点击他们的网络服务。最棒的是,他们不需要任何API密钥或许可愚蠢 - 你只需点击他们的网络应用程序,然后就可以获得数据。

以下是一个示例:http://ws.geonames.org/findNearbyPostalCodesJSON?formatted=true&lat=36&lng=-79.08这将为您返回北卡罗来纳州教堂山区域的邮政编码的JSON对象。

这也是国际性的。这里是英格兰的西福德,唯一的区别是我发送的一对一对:http://ws.geonames.org/findNearbyPostalCodesJSON?formatted=true&lat=50.5&lng=0.08

然后你需要学习制作网页请求并解析JSON(如果你还没有抓住这些东西),那么你们已经完成了设置。

答案 1 :(得分:6)

这实际上是一个棘手的问题。使用像GeoNames这样的地理编码解决方案很可能会导致很多查询出现重大错误。这样做的原因是GeoNames通过在他们的数据库中查找最接近您的查询点的记录,然后返回他们在该点记录的邮政编码。当您的查询点位于其数据库中的记录之上时,这非常有用,但否则会导致错误。例如,如果他们最近的记录在几个街区之外的其他邮政编码中,您将得到错误的答案。

美国人口普查局创建了邮政编码地图:

https://www.census.gov/geo/reference/zctas.html

请在该页面上查看他们的说明。

我还参与了一个项目,该项目使用Census地图提供一个API,用于返回给定纬度和经度的邮政编码。它在:

http://askgeo.com

我们提供可在您自己的服务器上运行的Web API和Java库。图书馆表现出色。由于我们的网站提供的信息不仅仅是邮政编码,您可以在这里阅读我们的邮政编码服务:

http://askgeo.com/database/UsZcta2010

您在此处阅读了有关Web API的文档:

http://askgeo.com/#web-api

GeoNames方法对于此类查询存在根本缺陷。如果要查找包含给定查询点的多边形,则需要包含多边形的地图,并且需要空间索引来提供快速查找。 GeoNames没有。 AskGeo都有。

答案 2 :(得分:2)

如果您有一个免费的数据库(可从该网站获得?只需搜索邮政编码数据库,您就会看到它)

然后您可以对附近的纬度/长度运行内部SQL查询测试。这样您就不必担心许可Web服务了。

那么你有三个选择。 SQL BETWEEN语句,斜边方程或Haversine。 Haversine是最好的,幸运的是它在其他地方的教程

答案 3 :(得分:1)

答案 4 :(得分:1)

示例代码:

从结果中获取Zipcode [1] .formatted_address

https://developers.google.com/maps/documentation/javascript/examples/geocoding-reverse