2010-11-01 77 views
3

我有大约1600个地址需要在我的地图上绘制。我不想在运行时进行地理编码,因为我相信这会花费太长时间。相反,我想预先对地址进行地址解析,将其Lat/Long值添加到表中,并在运行时从表中读取。不幸的是,我无法弄清楚如何/在哪里对一批地址进行地理编码。请问你们其中一个人向我解释和/或指向我一个很好的教程?谷歌地图 - 预先地理编码许多地址?

在此先感谢。

回答

5

您可以使用Google Maps Data API执行此操作。地理编码部分将对您感兴趣(See API docs)。只要写一个PHP脚本:通过您的地址

2)发送HTTP请求(使用卷曲或只是file_get_contents()

1)循环到http://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&sensor=true_or_false

3)解析JSON响应

4 )存储在您的数据库中

请注意Google有使用限制。我不确定这些是什么1600个请求可能或不可能是一个问题。您可能希望在请求之间添加延迟和/或在几天内运行它。

+0

只是一次更新,Google已正式停止支持Maps Data API:http://googlegeodevelopers.blogspot.com/2010/11/maps-data-api-deprecation-announcement.html – 2010-11-06 17:49:50

+0

您可能想了解一下Fusion Tables,这是目前推荐的迁移路径,如果您使用过Maps Data API:http://www.google.com/fusiontables/public/tour/index.html – 2010-11-06 17:50:40

+0

这实际上就是我最终做的。我使用myGeoCoder.getFromLocationName来代替HTTP请求。然后,我将lat/long添加到我桌子上的新字段中。 – user359519 2011-02-03 16:09:43

1

为了避免违反TOS违规和性能问题/限制,您可以考虑寻找替代服务。

我为一家名为SmartyStreets的公司工作,我们对地址进行地理编码和验证。虽然Google会对地址的有效性(以及地理编码的准确性)进行最佳猜测,但是在返回纬度/经度坐标之前,CASS-Certified会首先确定地址是否存在。我们有一个名为LiveAddress API的服务,它可以做到这一点。

  • 您可以与我们的API进行批量地理编码(每个请求最多100个地址)

  • 可以存储结果(1600个地址实际上是一个非常小的数目。我们可以处理的数据集一样大数千万定期)。

  • 速度很快 - 没有节流或使用限制;你支付你使用的东西。

从你提到的,我认为这将满足您的需求。如果您有任何其他问题,请告诉我。