我正在使用Google Map API從郵政編碼查找中檢索城市+州/地區信息。問題在於,在某些情況下,郵政編碼查詢不會檢索城市名稱。一個例子是92625(美國)。檢查JSON密鑰/節點是否存在
var g = new GClientGeocoder();
g.setBaseCountryCode('US');
g.getLocations('92625', function(response){
if (response) {
var place = response.Placemark[0];
var state = place.AddressDetails.Country.AdministrativeArea.AdministrativeAreaName;
var city = place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.LocalityName;
GLog.write("City = "+city+" : State/Region = "+state+" : Country = " + g.getBaseCountryCode());
}
});
在某些情況下,如上面提到的,不會出現在結果是一個城市的名稱,這樣就會有城市一個未定義的錯誤,因爲關鍵地點不存在。此錯誤會阻止腳本的其餘部分運行。
我能夠彌補它...
if (place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality != null)
var city = place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.LocalityName;
else
var city = '';
...但是這有我偏執有關其他按鍵類似的錯誤。例如:如果AdministrativeArea未定義,則上面的IF語句也會導致未定義的錯誤。那麼我應該檢查一下每個鍵/節點是否存在?似乎是一個混亂的方法,因爲其中的一些鍵的深度是5級以上...是否有更簡單的方法去實現它,也許是我不熟悉的一些JQuery方法?
在上面的例子中,92625總是隻有1個結果。 – Seth 2009-07-15 17:15:25