Pregunta

Estoy getBounds llamando al () directamente después de una llamada a fitBounds (), y pensé que me gustaría obtener una copia de cota válida como el mapa recentra y zooms para adaptarse a los límites. Por desgracia, getBounds () se vuelven nulas.

El código para reproducir este es el siguiente:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml"> 
    <head> 
        <meta http-equiv="content-type" content="text/html; charset=utf-8"/> 
        <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true"></script>

        <style>
            #map {
                width: 800px;
                height: 400px;
            }
        </style>

    </head>
    <body>
        <div id='map'></div>

        <script>
            var myLatlng1 = new google.maps.LatLng(-38.397, 150.644);
            var myLatlng2 = new google.maps.LatLng(-34.897, 150.844);
            var myLatLngBounds = new google.maps.LatLngBounds(myLatlng1, myLatlng2);

            var myOptions = {
                  mapTypeId: google.maps.MapTypeId.ROADMAP,
                  center: new google.maps.LatLng(0, 0),
                  zoom: 0
            }

            var map = new google.maps.Map(document.getElementById("map"), myOptions);

            map.fitBounds(myLatLngBounds);

            console.log(map.getMapTypeId());
            console.log(map.getZoom());
            console.log(map.getBounds());
        </script>
    </body>
</html>

¿Hay algo que me falta? No he podido encontrar nada en la documentación sobre esta situación. El más cercano que consigue es una nota en getBounds que dice:

  

Si el mapa aún no se inicializa (es decir, el mapType todavía es null), o centro y de zoom no se han establecido entonces el resultado es nulo.

Tenga en cuenta que los rendimientos getZoom indefinidos, también. ¿El fitBounds () no establece este valor?

Editar He actualizado el código con un zoom predeterminado y el centro, de acuerdo con las sugerencias de Marcelo.

¿Fue útil?

Solución

tendrá que obtener los límites después del evento bounds_changed.

Otros consejos

Como @CrazyEnigma sugerido, puede obtener los límites después del evento se desencadena bounds_changed:

map.fitBounds(myLatLngBounds);

google.maps.event.addListener(map, 'bounds_changed', function() {
  console.log(map.getMapTypeId());
  console.log(map.getZoom());
  console.log(map.getBounds());
});

Lo anterior se imprimiría la siguiente a la consola:

roadmap
6
Object

Nota que si sólo desea getBounds y hacer algo una vez, el usuario debe sustituir addListener con addListenerOnce (Gracias, @Tomas).

Uso addListenerOnce cuando tilesloaded

google.maps.event.addListenerOnce(map, 'tilesloaded', function(){ 
map.setCenter(myLatLngBounds)
});

La respuesta está en su propia cita. Usted tiene que fijar el centro y hacer zoom para ver el mapa a ser inicializado.

Tenga en cuenta que en la documentación para la especificación de objetos MapOptions, los valores del centro y zoom están marcados como requerida

http://code.google.com/apis /maps/documentation/javascript/reference.html#MapOptions

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top