【问题标题】:How to get address from center (pan) Google Maps API?如何从中心(泛)Google Maps API 获取地址?
【发布时间】:2016-01-25 21:00:09
【问题描述】:

我正在构建一个谷歌地图,您可以在其中获取表格的纬度、经度和地址。它通过 GPS 获取您的位置,并自动将地图居中并获取坐标。此外,如果您平移地图,您将从新中心获取此数据。

我看到了一个类似的问题How to get the formatted address from a dragged marker in Google Version Maps,它可以从可拖动的标记中获取地址。我想看看反向地理编码服务是否有可能在我平移它时仅从地图中心获取它。

这是部分代码。

  google.maps.event.addListener(map, "center_changed", function() {
    var lat = map.getCenter().lat();
    var lng = map.getCenter().lng();
    $('#lat').val(lat);
    $('#lng').val(lng); 
  }); 

...

<body>
<div id="map-canvas"></div>

    <input id="lat"/>
    <input id="lng"/>
</body>

现在我可以得到坐标了。在这里你可以看到我的地图。 http://output.jsbin.com/vopuhu

这张地图与 Uber 用来接客的地图相似。

谢谢!

这里也是地理位置部分...

if(navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position) {
  var pos = new google.maps.LatLng(position.coords.latitude,
                                   position.coords.longitude);
document.getElementById('lat').value = position.coords.latitude;
document.getElementById('lng').value = position.coords.longitude;
  var marker = new google.maps.Marker({
    map: map,
    position: pos,
    title: 'Ubicación GPS',
      icon:'https://storage.googleapis.com/ops_geojson/Flecker/Icons/GPS_Tiny01.png'
  });

  map.setCenter(pos);
}, function() {
  handleNoGeolocation(true);
});
} else {

handleNoGeolocation(false);
}
}

function handleNoGeolocation(errorFlag) {
if (errorFlag) {
var content = 'Error: The Geolocation service failed.';
} else {
var content = 'Error: Your browser doesn\'t support geolocation.';
}

var options = {
map: map,
position: new google.maps.LatLng(19.043516, -98.198232),
content: content,
};

var infowindow = new google.maps.InfoWindow(options);
map.setCenter(options.position);

}

【问题讨论】:

    标签: javascript google-maps google-maps-api-3 gps geocoding


    【解决方案1】:

    你可以使用reverseGeocoder

    google.maps.event.addListener(map, "center_changed", function() {
    var lat = map.getCenter().lat();
    var lng = map.getCenter().lng();
    $('#lat').val(lat);
    $('#lng').val(lng); 
    
    var myLatLng =  new google.maps.LatLng(lat, lng);
    gmgeocoder = new google.maps.Geocoder();
    
    gmgeocoder.geocode({'latLng': myLatLng}, function(results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
            if (results[0]) {
                if(results[0].formatted_address.length>64){
                    document.getElementById(aElementId).innerHTML = results[0].formatted_address.substring(0,64)+'...';
                }
                else {
                    document.getElementById(aElementId).innerHTML = results[0].formatted_address;
                //console.log(results[0].formatted_address);    
                }
            }                   
        }
        else {
            document.getElementById(aElementId).innerHTML = "Geocoder not possible";
        }
     });
    }
    

    【讨论】:

    • 感谢您的回答。我有一个疑问,您如何将此 reverseGeocoder 与我拥有的“center_changed”侦听器功能集成?我想这是完成目标的最后一件事。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-16
    相关资源
    最近更新 更多