2011-11-02 39 views
5

Tôi muốn lưu vị trí hiện tại nơi người dùng đang xem và khôi phục lại sau một số lần nhấp.nhận giới hạn hiện tại?

Làm cách nào để nhận các giới hạn kinh độ vĩ độ hiện tại để tôi có thể map.fitBounds trên đó?

+0

Chủ đề này có anser tốt hơn, để tránh nhiều vụ cháy [Nhấn vào đây để đi đến câu trả lời] (http://stackoverflow.com/questions/4338490/google-map-event-bounds-changed-triggered-multiple -times-when-dragging) –

Trả lời

6

Dưới đây là đoạn code để nắm bắt các giới hạn bản đồ hiện tại, trên các sự kiện "bounds_changed"

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

Sau đó, bạn có thể trở lại bản đồ các ràng buộc sử dụng mã này

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

getBounds() trong Google Maps API v3

Vì vậy, để có được vĩ độ và kinh độ của chúng tôi, chúng tôi cần di chuyển getBounds() đến bounds_changed trình xử lý sự kiện.

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

Sự kiện này được kích hoạt khi giới hạn khung nhìn đã thay đổi. Nếu bạn có một số cuộc gọi ajax trong đó, mọi vị trí thời gian của bản đồ thay đổi cuộc gọi ajax sẽ bị sa thải.

Vì vậy, giải pháp tốt hơn trong trường hợp đó là di chuyển getBounds() trong idle trình xử lý sự kiện. Sự kiện này được kích hoạt khi bản đồ trở nên nhàn rỗi sau khi phóng to.

 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()); 
    }); 
Các vấn đề liên quan