如何从中心(pan)谷歌地图API获取地址

How to get address from center (pan) Google Maps API?

本文关键字:谷歌地图 API 获取 地址 pan      更新时间:2023-09-26

我正在构建一个谷歌地图,您可以在其中获得表单的时间,长度和地址。它通过GPS获取你的位置,并自动将地图居中,获取坐标。如果你平移地图,你会从新的中心得到这些数据。

我看到过一个类似的问题,如何从一个拖拽的标记在谷歌版本地图中获得格式化的地址,从一个可拖拽的标记。我想看看反向地理编码服务是否有可能在我平移它的时候让它在地图的中心。

下面是部分代码:

  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

这张地图和优步用来接送顾客的地图很像。

谢谢!

这里是地理位置部分也…

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);
}

您可以使用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";
    }
 });
}