使用谷歌地理编码api jquery从经度和纬度获取城市名称

akh*_*han 2 geocoding latitude-longitude

我想从经度和纬度获得城市名称.我正在使用以下代码,但它返回整个地址,包括城市名称,邮政编码,省份和国家/地区.我只想要城市名称.

     $.ajax({ url:'http://maps.googleapis.com/maps/api/geocode/json?latlng='+position.coords.latitude+','+position.coords.longitude+'&sensor=true',
               success: function(data){
               alert(data.results[4].formatted_address);

               }
               });
Run Code Online (Sandbox Code Playgroud)

请查看地理编码的结果

{
           "long_name" : "Vancouver",
           "short_name" : "Vancouver",
           "types" : [ "locality", "political" ]
        },
Run Code Online (Sandbox Code Playgroud)

Ste*_*ght 6

由于API中数据类型的性质,formatted_address总是会返回一个完整的地址字符串.您需要直接引用address_components数组中的位置类型.

Google Maps Geocoding API

因此,例如,您需要在返回的address_components数组中搜索位置类型:

for (var i = 0; i < data.results[4].address_components.length; i++) {
    for (var j = 0; j < data.results[4].address_components[i].types.length; j++) {
        if(data.results[4].address_components[i].types[j] == 'locality') {
            var city_name = data.results[4].address_components[i].long_name;
            alert(city_name);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)