19

每个请求我需要对大约 200 个地址进行地理编码,并且每天执行大约 3,000 个请求。我将使用 PHP 做这个服务器端。我看过如何将地址转换为纬度/经度?,但找不到 Google Maps HTTP Request API 或 Yahoo Geocoding REST API(不能使用 JavaScript,因为这是服务器端)发送多个地址的方法。

我将主要使用它来根据坐标对地址进行排序,如果 API 支持,则为每个地址填写任何缺失的数据。这些地址将仅在美国。地理编码的地址将来自用户输入,因此可以是自由格式,例如“街道地址、邮政编码”或“城市、州”等。对于坐标而言,精度并不重要,比如在五百英尺左右。

是否有免费的 API 来处理这个问题?有没有办法让雅虎或谷歌在一个请求中做多个位置?

4

7 回答 7

21

我查看了 Google Maps API、Yahoo Maps Api、MapQuest API 和 Microsoft Virtual Earth API。这些免费服务都不允许批量地理编码。

但是,Google Maps api 每天允许 15,000 个 goecode。但是他们不喜欢你一次发送太多。他们建议在请求之间等待 200 毫秒。顺便说一句,他们通过 IP 地址跟踪您。

雅虎每天允许 5,000 个,也是一个易于使用的 api。Microsoft Virtual Earth 每天允许 5,000 个,但 api 文档令人头疼。

MapQuest 很奇怪,而且似乎没有给出好的结果(我所见过的最不准确的)。

我实际上已经设置了我的代码以在多个服务之间交替,因此我可以一次发出多个请求。这 - 有点 - 模拟批量编码。

于 2008-12-28T23:36:41.017 回答
7

geocoder.us会做你想做的事,但你可能在批量查找时遇到同样的问题。不过,他们会收费进行批量查找。

GeoNames是否会通过大量原始数据或通过其网络服务提供足够的信息?

于 2008-12-28T23:10:41.630 回答
5

USC WebGIS Geocoder提供了几个可以执行此操作的地理编码 API 。它是免费的,允许从您的代码中进行批量查找,或者您可以上传数据库进行批量处理。

于 2009-02-08T20:06:54.627 回答
2

Mapquest 有一个允许批量地理编码的 API。但是,他们没有直接为 PHP 提供一个。但是您可以查看他们的协议文档http://developer.mapquest.com/Library/SDK_Documentation/Protocols来自己实现它。他们可能将批量地理编码称为文档中的位置集合。

于 2008-12-28T23:30:54.163 回答
2

这可能听起来很奇怪,但我不久前做了一个网站,客户希望用户只输入一个 zip,我们将提供剩余的数据。我使用了 yahoo 天气 api,当时它返回了一个包含所有天气数据的 xml 文件,而 ciy、state、zip 对美国的地址很有效

于 2008-12-29T00:28:35.263 回答
1

查看http://www.torchproducts.com/tools/geocode以快速对地址列表进行地理编码

于 2013-01-08T14:26:33.653 回答
0

使用GDirections。它一次最多允许 25 个航路点,并为每个航路点返回一个地理编码位置。

于 2009-05-07T06:01:40.787 回答