我试图使用gmaps V3提供的地址组件类型获取国家/地区名称。
我不知道我怎么能以正确的方式得到它...... http://code.google.com/apis/maps/documentation/javascript/services.html#GeocodingAddressTypes
我试图在这里提醒国家名字:alert(results[1].address_component[country]);
这里是代码..任何帮助都非常感谢..谢谢
function codeLatLng() {
var input = document.getElementById("latlng").value;
var latlngStr = input.split(",",2);
var lat = parseFloat(latlngStr[0]);
var lng = parseFloat(latlngStr[1]);
var latlng = new google.maps.LatLng(lat, lng);
if (geocoder) {
geocoder.geocode({'latLng': latlng}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
if (results[1]) {
alert(results[1].address_component[country]);
} else {
alert("No results found");
}
} else {
alert("Geocoder failed due to: " + status);
}
});
}
}
答案 0 :(得分:10)
首先,address_components应该是复数。由于输入错误,Google文档会因此而误导。
address_components数组为地址的每个组件都有一个项目。每个项目中的类型数组告诉您适用于每个地址组件的所有类型(例如:国家,地区等) - 所以您真正想要做的是找到具有“country”作为其中一个的address_components数组项它的类型,然后获取该数组项的short_name或long_name。
此外,您可能并不总是有结果值[1]。这将假设返回至少2个搜索结果。结果[0]将是第一个。
这是一个例子:
var country;
for (i=0;i<results[0].address_components.length;i++){
for (j=0;j<results[0].address_components[i].types.length;j++){
if(results[0].address_components[i].types[j]=="country")
country = results[0].address_components[i].long_name
}
}
答案 1 :(得分:0)
alert(results[1].address_component['country']);
// country是一个字符串
答案 2 :(得分:-1)
根据Google's documentation,结果总是按照最具体到最不具体的顺序返回:
通常,地址从最具体到最不具体地返回;更确切的地址是最突出的结果,就像在这种情况下一样。请注意,我们会返回不同类型的地址,从最具体的街道地址到不太具体的政治实体,如社区,城市,县,州等。如果您希望匹配更一般的地址,您可能希望检查{{ 1}}返回的
"types"
s。的字段。
鉴于这一事实,我们甚至不必遍历结果。只需选择最后的那些:
Placemark
如果结果是“结果”或“address_components”可能丢失或长度为0,则可以添加一些简单的错误检查。