2010-05-29 46 views
11

Soy nuevo en la API de Google Maps. Me gustaría obtener sugerencias sobre cómo lograr la siguiente funcionalidad: cada vez que se carga la página, el mapa se cargará centrado en los EE. UU. Imagine una caja alrededor de los EE. UU. Con latitud/longitud especificadas que especifiquen los límites mínimo y máximo. Necesito que el mapa se cargue con el zoom apropiado (y el zoom debe deshabilitarse) para que este cuadro comprenda todo el mapa.Google Maps API - cargar los EE. UU.

Básicamente, me pregunto si hay una función que carga el mapa en función de los límites lat/long (o de alguna forma de lograr esto), en lugar de cargar el mapa dado un nivel de zoom.

Respuesta

14

Suponiendo que está utilizando el v3 API, es posible que desee utilizar el método fitBounds de la siguiente manera:

<!DOCTYPE html> 
<html> 
<head> 
    <meta http-equiv="content-type" content="text/html; charset=UTF-8"/> 
    <title>Google Maps fitBounds</title> 
    <script src="http://maps.google.com/maps/api/js?sensor=false" 
      type="text/javascript"></script> 
</head> 
<body> 
    <div id="map" style="width: 500px; height: 350px;"></div> 

    <script type="text/javascript"> 
     var myOptions = { mapTypeId: google.maps.MapTypeId.ROADMAP }; 
     var map = new google.maps.Map(document.getElementById("map"), myOptions); 
     var geocoder = new google.maps.Geocoder(); 

     geocoder.geocode({'address': 'US'}, function (results, status) { 
     var ne = results[0].geometry.viewport.getNorthEast(); 
     var sw = results[0].geometry.viewport.getSouthWest(); 

     map.fitBounds(results[0].geometry.viewport);    
     }); 
    </script> 
</body> 
</html> 

Captura de pantalla:

Google Maps fitBounds

En el ejemplo anterior, estoy recibiendo la vista de los EE. UU. por geocodificación. Sin embargo, también puede crear un objeto LatLngBounds pasando los puntos noreste y sudoeste, y el método fitBounds hará un zoom y desplazará su mapa de modo que quepa en el lienzo del mapa.

+0

gracias! fitBounds() es exactamente lo que estaba buscando – hjk

+0

@hjk: respondí [una pregunta similar hace algunos meses] (http://stackoverflow.com/questions/2494756/fitbounds-in-google-maps-api-v3- does-not-fit-bounds/2496558 # 2496558). Muestra con un cuadro delimitador rojo cómo reacciona 'fitBounds'. El cuadro delimitador rojo representa el 'LatLngBounds' que pasará a' fitBounds'. –

+0

Gracias Daniel, eso es útil. Entonces, ¿no hay forma de que Google Maps ajuste la granularidad del zoom? Es decir. sus niveles de zoom son fijos? – hjk

1

Bueno, dado que el tamaño y la forma de los EE. UU. No cambian con tanta frecuencia, puede encontrar manualmente la configuración óptima y usarla.

+1

Sí, pero las coordenadas de mi cuadro delimitador pueden cambiar ... – hjk