J'utilise l'API Google Map pour récupérer les informations sur la ville + l'état/la région à partir d'une recherche de code postal. Le problème est que, dans certains cas, une recherche de code postal ne récupère pas le nom d'une ville. Un exemple est 92625 (États-Unis).Vérifier si les clés/nœuds JSON existent
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());
}
});
Dans certains cas, comme mentionné ci-dessus, il n'y aura pas un nom de ville dans le résultat donc il y aura une erreur non définie pour la ville, car la clé Localité n'existe pas. Cette erreur empêche le reste du script de s'exécuter.
j'ai pu y remédier par ...
if (place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality != null)
var city = place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.LocalityName;
else
var city = '';
... mais cela m'a paranoïaque à propos d'une erreur similaire pour les autres clés. Par exemple: si AdministrativeArea n'est pas défini, l'instruction IF ci-dessus entraînerait également une erreur non définie. Alors devrais-je vérifier pour voir si chaque clé/nœud existe? Semble être une approche désordonnée, car certaines de ces touches ont plus de 5 niveaux de profondeur ... y a-t-il un moyen plus simple d'y parvenir, peut-être une méthode JQuery que je ne connais pas?
Dans l'exemple ci-dessus, il n'y a toujours qu'un seul résultat pour 92625. – Seth