反向地理编码 - 仅返回城镇/城市或国家

时间:2014-02-19 01:02:45

标签: javascript google-maps

我有一个谷歌地图上有一个标记,所以人们可以移动它。当他们这样做时,我试图将地理位置转换为适当的地址,但我只想要城镇/城市和国家,我不希望邮政编码返回

是否可以在不使用正则表达式删除邮政编码的情况下获取地点 - 这可能很难!

提前致谢

3 个答案:

答案 0 :(得分:2)

响应不仅返回地址,还包含address_components,一个包含位置特定细节的数组,例如:国家,城市,街道等(见https://developers.google.com/maps/documentation/geocoding/#JSON

从此数组中提取所需的组件。

答案 1 :(得分:2)

反向GeoCoding返回包含少量对象的address_components数组。 (您可以在控制台中打印此对象以获得感觉。) 从这个数组中提取所需的信息非常容易。 现在来看看代码 -

function getLatLong(position) {
  geocoder = new google.maps.Geocoder();
  var latitude = position.coords.latitude;
  var longitude = position.coords.longitude;

  // Reverse Geocoding, Location name from co-ordinates.
  var latlng = new google.maps.LatLng(latitude, longitude);
  geocoder.geocode({'latLng': latlng}, function(results, status) {
    if (status == google.maps.GeocoderStatus.OK) {
      if (results[0]) {
        var components=results[0].address_components;

        for (var component=0;component<(components.length);component++){
            if(components[component].types[0]=="administrative_area_level_1"){
                var admin_area=components[component].long_name;
            }
            if(components[component].types[0]=="country"){
                var country=components[component].long_name;
            }

            if(components[component].types[0]=="postal_code"){
                var postal_code=components[component].long_name;
            }
        }
      }
    }
  }
}

答案 2 :(得分:1)

我认为你可以!

if (status == google.maps.GeocoderStatus.OK) {
                if (results[0]) {
                    for (var i = 0; i < results.length; i++) {
                        if (results[i].types[0] === "locality") {
                            var city = results[i].address_components[0].short_name;
                            var state = results[i].address_components[2].short_name;
                            alert('Serial=' + i+ ' city=' + city+ ' state=' + state)
                        };
                    };
                };
            };