我正在使用Google Map的GClientGeocoder将地图坐标反转为字符串地址。完全与google示例中的此处http://code.google.com/apis/ajax/playground/?exp=maps#geocoding_reverse所示
但是,我想从place.address删除LocalityName(place.AddressDetails.Country.AdministrativeArea.Locality.LocalityName),并使用没有任何LocalityName的地址字符串。
直接方法将联接所有AddressDetails元素,不包括LocalityName。但是,最终字符串表示形式中结构元素的顺序取决于地理位置。
例如:
订购澳大利亚城市:
ThoroughfareName +“,” + LocalityName +“” + AdministrativeAreaName +“” + PostalCodeNumber +“,” + CountryName
订购俄罗斯城市:
CountryName +“,” + PostalCodeNumber +“,” + LocalityName +“,” + ThoroughfareName
此外,最后一个示例在AddressDetails中未提供PostalCodeNumber。
请帮忙!
最佳答案
获取LocalityName并创建一个没有它的新字符串。由于LocalityName以未知方式隐藏在JSON结构中,因此您需要递归遍历整个AddressDetails,直到找到LocalityName为止。例:
function findLocalityName(item) {
for (key in item) {
if (key == "LocalityName") return item[key];
else if (item[key] instanceof Object) return findLocalityName(item[key]);
}
}
var place = response.Placemark[0];
var localityName = findLocalityName(place.AddressDetails);
var noLocalityAddress = place.address.replace(localityName, '');
工作示例:
http://savedbythegoog.appspot.com/?id=6da11815a8a7435cc971acc9cebe99f4732fc5d0
单击地图上的任意位置以显示完整地址,LocalityName和固定地址。
这可能需要一些细微的改进,即,如果您点击“ Redfern St.”在该示例中,它将删除街道名称而不是地点名称,因为街道名称与地点相同!