得到当前的latlng界限?

7 google-maps-api-3

我想保存当前用户正在观看的位置,并在点击后恢复.

如何获取当前纬度经度界限以便我可以在其上绘制map.fitBounds?

Viv*_*mar 8

getBounds() 在 Google Maps API v3 中

所以为了获得我们的纬度和经度,我们需要移动getBounds()bounds_changed事件监听器。

     var map = new google.maps.Map(document.getElementById("map"), {
             zoom: 10,
             center: new google.maps.LatLng(lat, lng),
             mapTypeId: google.maps.MapTypeId.ROADMAP
     });
     google.maps.event.addListener(map, 'bounds_changed', function() {
              var bounds =  map.getBounds();
              var ne = bounds.getNorthEast();
              var sw = bounds.getSouthWest();
              console.log(ne.lat());
              console.log(ne.lng());
              console.log(sw.lat());
              console.log(sw.lng());
     });
Run Code Online (Sandbox Code Playgroud)

当视口边界发生变化时会触发此事件。如果你有一些 ajax 调用,每次地图的位置改变时都会触发 ajax 调用。

所以,在这种情况下,更好的解决方案是将getBounds()idle事件侦听器。当地图在缩放后空闲时会触发此事件。

     var map = new google.maps.Map(document.getElementById("map"), {
             zoom: 10,
             center: new google.maps.LatLng(lat, lng),
             mapTypeId: google.maps.MapTypeId.ROADMAP
      });
     google.maps.event.addListener(map, 'idle', function() {
              var bounds =  map.getBounds();
              var ne = bounds.getNorthEast();
              var sw = bounds.getSouthWest();
              console.log(ne.lat());
              console.log(ne.lng());
              console.log(sw.lat());
              console.log(sw.lng());
     });
Run Code Online (Sandbox Code Playgroud)


Wil*_*eth 7

这是在"bounds_changed"事件中捕获当前地图边界的代码

google.maps.event.addListener(map, 'bounds_changed', function() {
        try {
            if( initialBounds == null ) {
                initialBounds = map.getBounds(); 
            }
        } catch( err ) {
            alert( err );
        }
    });
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用此代码返回绑定的地图

google.maps.event.addDomListener(controlUI, 'click', function() {
        // map.setCenter(home)
        if( initialBounds != null ) {
            map.fitBounds( initialBounds );
        }
    });
Run Code Online (Sandbox Code Playgroud)