我正在使用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 2009-07-15 17:15:25