得到当前的latlng界限?

时间:2011-11-02 15:47:37

标签: google-maps-api-3

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

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

2 个答案:

答案 0 :(得分:7)

这是在“bounds_changed”事件

上捕获当前地图边界的代码
google.maps.event.addListener(map, 'bounds_changed', function() {
        try {
            if( initialBounds == null ) {
                initialBounds = map.getBounds(); 
            }
        } catch( err ) {
            alert( err );
        }
    });

然后,您可以使用此代码

返回绑定的地图
google.maps.event.addDomListener(controlUI, 'click', function() {
        // map.setCenter(home)
        if( initialBounds != null ) {
            map.fitBounds( initialBounds );
        }
    });

答案 1 :(得分:4)

Google Maps API v3中的

getBounds()

为了获得我们的纬度和经度,我们需要将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());
     });

当视口边界发生变化时会触发此事件。如果你有一个ajax调用,每次map更改位置时都会触发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());
     });