【发布时间】:2010-11-01 18:49:58
【问题描述】:
我需要在地图上绘制大约 1600 个地址。我不想在运行时进行地理编码,因为我相信它会花费太长时间。相反,我想提前对地址进行地理编码,将它们的纬度/经度值添加到表中,并在运行时从表中读取。不幸的是,我无法弄清楚如何/在哪里对一批地址进行地理编码。你们中的某个人会向我解释它和/或向我指出一个好的教程吗?
提前致谢。
【问题讨论】:
标签: google-maps geocoding
我需要在地图上绘制大约 1600 个地址。我不想在运行时进行地理编码,因为我相信它会花费太长时间。相反,我想提前对地址进行地理编码,将它们的纬度/经度值添加到表中,并在运行时从表中读取。不幸的是,我无法弄清楚如何/在哪里对一批地址进行地理编码。你们中的某个人会向我解释它和/或向我指出一个好的教程吗?
提前致谢。
【问题讨论】:
标签: google-maps geocoding
您可以使用 Google 地图数据 API 执行此操作。您可能会对地理编码部分感兴趣 (See API docs)。只需编写一个 PHP 脚本即可:
1) 循环访问您的地址
2) 发送 HTTP 请求(使用 CURL 或只是 file_get_contents())到 http://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&sensor=true_or_false
3) 解析 JSON 响应
4) 存储在您的数据库中
请注意,Google 有使用限制。我不确定这些是什么,所以 1600 个请求可能是也可能不是问题。您可能希望在请求之间添加延迟和/或在几天内运行它。
【讨论】:
为了避免违反 TOS 和性能问题/限制,您可以考虑寻找替代服务。
我在一家名为 SmartyStreets 的公司工作,我们在那里对地址进行地理编码和验证。虽然 Google 会对地址的有效性(以及地理编码的准确性)做出最佳猜测,但 CASS-Certified 将首先确保地址存在,然后再返回纬度/经度坐标。我们有一个名为LiveAddress API 的服务可以做到这一点。
您可以使用我们的 API 执行批量地理编码(每个请求最多 100 个地址)
您可以存储结果(1600 个地址实际上是一个很小的数字。我们可以定期处理数千万的数据集)。
它很快——而且没有节流或使用限制;你为你使用的东西付费。
从您提到的情况来看,我认为这将满足您的需求。如果您有任何其他问题,请告诉我。
【讨论】: