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