Używam interfejsu API Google Map do pobierania informacji o mieście i stanie/regionie z kodu pocztowego. Problem polega na tym, że w niektórych przypadkach wyszukiwanie kodu pocztowego nie spowoduje wyszukania nazwy miasta. Przykładem jest 92625 (U.S).Sprawdź, czy istnieją klucze/węzły 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());
}
});
W niektórych przypadkach, jak wspomniano powyżej, nie będzie nazwę miasta w rezultacie więc nie będzie niezdefiniowany błąd dla miasta, ponieważ klucz Miejscowość nie istnieje. Ten błąd uniemożliwia działanie pozostałej części skryptu.
udało mi się go naprawić ...
if (place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality != null)
var city = place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.LocalityName;
else
var city = '';
... ale to ma mnie paranoikiem o błędzie podobny do innych klawiszy. Np .: jeśli pole AdministrativeArea jest niezdefiniowane, powyższa instrukcja IF spowoduje również niezdefiniowany błąd. Czy powinienem sprawdzać, czy każdy klucz/węzeł istnieje? Wydaje się być niechlujnym podejściem, ponieważ niektóre z tych kluczy mają 5 poziomów głębokości ... czy jest łatwiejszy sposób na zrobienie tego, może jakaś metoda JQuery, której nie znam?
W powyższym przykładzie zawsze jest tylko jeden wynik dla 92625. – Seth