2011-11-02 13 views
5

Chcę zapisać bieżącą pozycję, w której użytkownik obserwuje i przywraca dane po kilku kliknięciach.uzyskać aktualne ograniczenia latlng?

Jak uzyskać aktualne ograniczenia długości geograficznej, aby można było na nim map.fitBounds?

+0

Wątek lepszą Anser, aby uniknąć wielokrotnych pożarów [Kliknij, aby przejść do odpowiedzi] (http://stackoverflow.com/questions/4338490/google-map-event-bounds-changed-triggered-multiple -czasy-kiedy-przeciąganie) –

Odpowiedz

6

Oto kod, aby uchwycić aktualną mapę granic, na „bounds_changed” wydarzenie

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

Następnie można przywrócić na mapie związany przy użyciu tego kodu

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

getBounds() w Google Maps API v3

Aby uzyskać naszą szerokość i długość geograficzną, musimy przenieść getBounds() do bounds_changed detektora zdarzeń.

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

To wydarzenie jest wywoływane, gdy zmieniły się granice widoczności. Jeśli masz jakieś wywołanie ajax, to za każdym razem, gdy zmienia się położenie mapy, wywołanie ajax zostanie uruchomione.

Lepszym rozwiązaniem w tym przypadku jest przeniesienie getBounds() do detektora zdarzeń idle. To zdarzenie jest wywoływane, gdy mapa staje się bezczynna po powiększeniu.

 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()); 
    }); 
Powiązane problemy