Я использую API карт Google для извлечения информации о городе и состоянии/регионе из поиска почтового кода. Проблема в том, что в некоторых случаях поиск почтового кода не будет получать название города. Пример: 92625 (U.S).
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());
}
});
В некоторых случаях, как упоминалось выше, в результате не будет имени города, поэтому для города будет ошибка undefined, поскольку ключевая локация не существует. Эта ошибка предотвращает запуск остальной части script.
Я смог исправить это...
if (place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality != null)
var city = place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.LocalityName;
else
var city = '';
... но у меня есть параноик по поводу аналогичной ошибки для других ключей. Например: если AdministrativeArea undefined, указанный выше оператор IF также вызывает ошибку undefined. Поэтому следует ли проверять, существует ли каждый ключ /Node? Кажется, это грязный подход, потому что некоторые из этих клавиш имеют глубину более 5 уровней... есть ли более простой способ сделать это, может быть, какой-то метод JQuery, с которым я не знаком?