2011-07-31 36 views
10

我想獲得通用地址的郵政編碼,例如「los angeles,ca」。當我這樣做:如何輕鬆從谷歌地圖api的通用地址獲取郵編?

gcode = new google.maps.Geocoder() 
gcode.geocode({'address': 'Los Angeles, CA'}, function(results, status) { log(results); }); 
>> [Object { address_components=[4], formatted_address="Los Angeles, CA, USA", geometry={...}, more...}] 

我得到它返回一個對象不具有一個郵政編碼。不過,如果我再從該返回的對象的位置,那我就可以訪問到郵編:

gcode.geocode({'latLng': results[0].geometry.location}, function(results, status) { log(results[0].address_components[7].long_name) }); 
>> "90012" 

..但這似乎浪費,因爲我不得不作出兩次調用API來做到這一點..有什麼辦法,迫使谷歌最初給我的郵編?

+0

洛杉磯是一個巨大的城市。我認爲洛杉磯有不止一個郵政編碼,而經緯線只是他們定義的一點,恰好在洛杉磯。如果是這種情況,你描述的行爲是有道理的。 –

+0

但即使使用像「Beverly Hills,CA」這樣的小城市也不會返回一個郵政編碼...難道不可能告訴Google只給我一個估計的郵政編碼而不用兩次去API? – patrick

+0

貝弗利山還有好幾處。我認爲Google API幾乎不會爲您提供郵政編碼信息,因爲每個城市幾乎都有多個郵政編碼。你必須處理這種情況,不管是否有一些較小的案例給出了郵政編碼。這聽起來像你只需要撥打多個電話...... –

回答

11

爲什麼不使用(例如1600 +劇場+大路,+山+查看你的地址)

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

然後解析JSON用於

"long_name": "94043", 
    "short_name": "94043", 
    "types": [ "postal_code" ] 
} ] 

在這裏看到的 - >http://code.google.com/apis/maps/documentation/geocoding/

+1

但正如我在我的問題中所述,我需要獲得一個通用位置的郵政編碼,例如「Beverly Hills,CA」。不是一個具體的地址.... – patrick

+0

我不認爲這個答案應該是downvoted,因爲原始的海報似乎誤導了郵政編碼如何在美國工作。 5位數字郵政編碼的後兩位通常決定城市的面積,而不是城市本身,就像他想要的那樣。前三位數字將與州和地區相對應。他從他的第二個查詢中獲得一個郵政編碼,因爲他將座標引入到Google API可以從中確定郵政編碼的區域。 – Bill

+0

這不是答案。有時候,郵政編碼被包含在沒有「類型」的地址中:[「postal_code」]' – mitra

相關問題