2010-11-01 105 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個地址實際上是一個非常小的數目。我們可以處理的數據集一樣大數千萬定期)。

  • 速度很快 - 沒有節流或使用限制;你支付你使用的東西。

從你提到的,我認爲這將滿足您的需求。如果您有任何其他問題,請告訴我。