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