gmaps地址组件类型获取国家/地区名称

1 javascript google-maps-api-3

我试图使用gmaps V3提供的地址组件类型获取国家名称.

我不知道我怎么能以正确的方式得到它.. http://code.google.com/apis/maps/documentation/javascript/services.html#GeocodingAddressTypes

我想在这里提醒国家名字:

alert(results[1].address_component[country]);
Run Code Online (Sandbox Code Playgroud)

这里是代码..任何帮助都非常感谢..谢谢

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); 
        } 
      }); 
    } 
  } 
Run Code Online (Sandbox Code Playgroud)

小智 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
    }
}
Run Code Online (Sandbox Code Playgroud)