【问题标题】:Google Maps - Pre-geocoding many addresses?谷歌地图 - 对许多地址进行预地理编码?
【发布时间】:2010-11-01 18:49:58
【问题描述】:

我需要在地图上绘制大约 1600 个地址。我不想在运行时进行地理编码,因为我相信它会花费太长时间。相反,我想提前对地址进行地理编码,将它们的纬度/经度值添加到表中,并在运行时从表中读取。不幸的是,我无法弄清楚如何/在哪里对一批地址进行地理编码。你们中的某个人会向我解释它和/或向我指出一个好的教程吗?

提前致谢。

【问题讨论】:

    标签: google-maps geocoding


    【解决方案1】:

    您可以使用 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 个请求可能是也可能不是问题。您可能希望在请求之间添加延迟和/或在几天内运行它。

    【讨论】:

    • 只是一个更新,Google 已正式终止对 Maps Data API 的支持:googlegeodevelopers.blogspot.com/2010/11/…
    • 如果您使用过 Maps Data API,您可能需要查看 Fusion Tables,这是当前推荐的迁移路径:google.com/fusiontables/public/tour/index.html
    • 这基本上就是我最终要做的。我使用 myGeoCoder.getFromLocationName 而不是 HTTP 请求。然后,我将纬度/经度添加到表上的新字段中。
    • 小心,您正在接近该 API 服务条款的边缘。请参阅第 10.1.3 节,b 和 c:developers.google.com/maps/terms——但我认为如果你只是暂时保留这些值,你会没事的。 (但你仍然不能en masses。)
    【解决方案2】:

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

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

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

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

    • 它很快——而且没有节流或使用限制;你为你使用的东西付费。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-07
      • 2017-04-19
      • 1970-01-01
      • 2014-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多