2011-11-02 9 views
5

Quiero guardar la posición actual donde el usuario está mirando y restaurar de nuevo después de algunos clics.obtener los límites latlng actuales?

¿Cómo obtengo los límites actuales de longitud lat para poder mapear.fitBounds en él?

+0

Esta discusión tiene una mejor Anser, para evitar múltiples incendios [Clic para responder] (http://stackoverflow.com/questions/4338490/google-map-event-bounds-changed-triggered-multiple -times-when-dragging) –

Respuesta

6

Aquí está el código para capturar los límites del mapa actual, en el evento "bounds_changed"

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

A continuación, puede volver el mapa el límite utilizando este código

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

getBounds() en Google Maps API v3

Para obtener nuestra latitud y longitud necesitamos mover getBounds() al bounds_changed detector de eventos.

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

Este evento se activa cuando los límites de la ventana gráfica han cambiado. Si tiene alguna llamada ajax, cada vez que cambia la posición del mapa, se activará la llamada ajax.

Por lo tanto, la mejor solución en ese caso es mover getBounds() en idle detector de eventos. Este evento se activa cuando el mapa queda inactivo después de hacer zoom.

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