如何将邮政编码转换为城市名称,是否有可用的API?

16

如何将邮政编码转换为城市名称,是否有可用的API?


4
我相信会有人能够提供一些有用的建议,但是要小心。邮政编码与城镇/市之间的映射不是一对一的关系。例如,13209覆盖了纽约州的锡拉丘兹和索尔韦。 - Timothy
嗨,谢谢Timothy,这很正确,这使得工作变得复杂。嗨Greg,为了全球。 - Ling
5个回答

22

两年后,我认为Google Maps Geocoding API是最好的选择。

只需将邮政编码作为地址参数传递:

http://maps.googleapis.com/maps/api/geocode/json?address=94043&sensor=false

1
在这里使用组件是很有帮助的 - 例如,如果您知道您正在寻找美国的邮政编码,您可以这样做:http://maps.googleapis.com/maps/api/geocode/json?components=postal_code:94043|country:US 这使得搜索更加具体化,可以帮助消除不必要的结果。 - But those new buttons though..

11

你需要一个能够进行地理编码的服务。


Yahoo的地理编码API在全球范围内的结果越来越好。

110021新德里和世界上其他一些地方的邮政编码之一。

这个API似乎包含了它们所有的信息。


谷歌地图 API是另一个这样的服务,但我对地理编码结果不满意,因为我无法获取所有110021的结果。

geocoder = new google.maps.Geocoder();
geocoder.geocode({ 'address': '110021'}, function(results, status) {
    console.log(results);
});

嗨,Anurag,非常感谢您提供的信息。实际上,我认为您的第二个答案给了我最好的解决方案,因为我手头上有经纬度信息,并希望将它们转换为城市/国家。我希望它能正常工作。谢谢, Ling - Ling
@Ling,你也可以使用Yahoo API将经纬度转换为城市/国家。请查看文档链接以了解可以传递哪些输入参数- http://developer.yahoo.com/maps/rest/V1/geocode.html - Anurag
谢谢大家,我认为Google API适合我。干杯! - Ling
我认为这个答案从第一句开始就是错误的。如果你拥有的是邮政编码,那么它被视为地址的一部分,因此你将使用正向(常规)地理编码而不是反向地理编码。反向地理编码是用于当你拥有坐标并想要查找其地址时使用的。 - jbdeguzman
谢谢!好的提醒,我会修复。 - Anurag

0

美国邮政局出售一个订阅服务,将5位数字邮政编码映射到城市/州值。正如@Timothy所说,映射是一对多的。然而,邮局数据库标记了哪个城市/州是给定邮政编码的“主要”。

不清楚其他国家的情况。请向您所在国家的邮政管理机构查询。

请参见USPS页面上的地址API部分


这些数据可通过CDROM获取,不是一个Web服务API。 - Clint Pachl
1
看起来这现在是一个免费的服务:https://www.usps.com/business/web-tools-apis/address-information.htm - mjhm
@Larry K,你有关于“primary”标志的更多细节吗?具体是哪个USPS产品和属性可以获取它。谢谢。 - Jorge Vidinha
我已经更新了我的答案中的链接。请查看USPS网站。当一个邮政编码与两个地名相关联时,“primary”标志是指主要地名。例如,14618是一个邮政编码,其主要地名为纽约州罗切斯特市。该邮政编码的次要地名是纽约州布莱顿市。 - Larry K

0

RedLine提供免费的邮编API服务(每小时最多250个请求)。有4种不同的变体,涵盖两个邮政编码之间的距离、半径内的邮政编码、城市、州和邮政编码的Lat/long以及城市的邮政编码。http://zipcodedistanceapi.redline13.com/


0

仅仅想提供我的意见,使用上述提到的Google Maps API,您可以查找全球信息。我目前正在开展一个项目,并且基本上将其作为解决此问题的方案实施。好的,下面结束我的小小演讲。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接