我正在使用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.”在该示例中,它将删除街道名称而不是地点名称,因为街道名称与地点相同!

07-28 11:02