我需要为每个请求对200个地址进行地理编码,每天执行大约3,000个请求。我将使用PHP来做这个服务器端。我查看了How to convert an address to a latitude/longitude?,但无法找到Google Maps HTTP Request API或Yahoo Geocoding REST API(不能使用JavaScript,因为这是服务器端)发送多个地址的方法。
我将主要使用它来根据坐标对地址进行排序,如果API支持,请填写每个地址的任何缺失数据。地址仅限于美国。地理编码的地址将来自用户输入,因此可以是自由形式,如“街道地址,邮政编码”或“城市,州”等。准确性对于坐标来说并不重要,例如在500英尺左右。
是否有免费的API来处理这个问题?有没有办法让雅虎或谷歌在请求中执行多个位置?
答案 0 :(得分:20)
我查看了Google Maps api,Yahoo Maps Api,MapQuest API和Microsoft Virtual Earth API。这些免费服务都不允许批量地理编码。
但是,Google Maps api每天允许15,000个goecodes。但是当你一次发送太多时他们不喜欢它。他们建议在请求之间等待200ms。他们通过IP地址btw跟踪你。
雅虎每天允许5,000次,也是一种简单易用的API。 Microsoft Virtual Earth每天允许5,000个,但api文档是一个痛苦的对接。
MapQuest很奇怪,似乎没有给出好的结果(我所见过的所有内容都不准确)。
我实际上已将代码设置为在多个服务之间切换,因此我可以一次发出多个请求。这种 - 模拟批量编码。
答案 1 :(得分:6)
geocoder.us会执行您想要的操作,但批量查找可能会遇到同样的问题。他们会收取批量查询费用。
GeoNames会通过批量原始数据还是通过web services提供足够的信息?
答案 2 :(得分:5)
USC WebGIS Geocoder提供可以执行此操作的several geocoding API's。它是免费的,允许从代码中批量查找,或者您可以上传数据库进行批处理。
答案 3 :(得分:2)
Mapquest有一个允许批量地理编码的API。但是他们不直接为PHP提供一个。但是您可以查找他们的协议文档http://developer.mapquest.com/Library/SDK_Documentation/Protocols来自己实现它。他们可能会将批量地理编码称为文档中的位置集合。
答案 4 :(得分:2)
这可能听起来很奇怪,但我不久前做了一个网站,客户希望用户只输入一个zip,我们会提供剩余的数据。我使用了yahoo weather api,当时它返回了一个包含所有天气数据的xml文件,并且ciy,state,zip在美国的地址中运行良好
答案 5 :(得分:2)
查看http://www.torchproducts.com/tools/geocode以快速对地址列表进行地理编码
答案 6 :(得分:0)
使用GDirections。它一次最多允许25个航点,并为每个航点返回一个地理编码的位置。