2011-03-07 46 views
3

我使用PHP腳本(遵循本教程http://www.bitconsultants.net/2010/geocoding-with-google-maps-and-the-zend-framework/)獲得的緯度和不同不會忽略的經度,谷歌地圖api地理編碼不如人工搜索精確,爲什麼?

的問題是,如果我手動搜索的地址在谷歌地圖它給了我正確的位置, 而使用PHP腳本,從谷歌的JSON響應甚至500米遠離手動搜索結果,這使得它的那種毫無意義的適合我的需要...

我傳遞的地址以這種格式

$address = "{$data['street']}, {$data['postcode']}, {$data['city']}, {$data['province']}"; 

,我正在通過googl e一把鑰匙

謝謝

回答

1

我找到了原因,不要在$地址中使用PHP的urlencode()來,它奇怪的東西用「」也許其他的東西,因此谷歌並不非常瞭解你的網址

1

您的地址是否真的形成良好?你能舉一個具體的例子嗎?

如果在給定的城市或城鎮未找到郵政地址,並且Google試圖部分匹配給定的地址,則可能會發生這種差異。請參閱API documentation上的* partial_match *。

另外:不幸的是,你上面給出的鏈接在這裏不起作用(「Forbidden」錯誤)。

+0

HMM我只是再次嘗試鏈接,它從我的工作場所...反正一個例子將搜索這個「Via Albalonga,6 00183 Roma RM」,谷歌地圖手動搜索給我41.442726,12.392578,而劇本給我41.881206,12.5137996 – max4ever

+0

這裏是腳本打開的鏈接http://maps.google.com/maps/geo?q=Via%20Albalonga,%206%2000183%20Roma%20RM®ion=It&language=我是使用舊鏈接還是什麼? – max4ever

+1

你是對的!我切換到其他網址http://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&sensor=true_or_false,我確實得到partial_match,但是相同手動地址是好的,使用腳本有時我甚至最終在另一條街道附近的交叉口,我不明白爲什麼 – max4ever