Question

J'appelle getBounds () directement après un appel à fitBounds (), et je pensais que je serais obtenir un retour valide lié la carte et recentrée zoomée à des limites. Malheureusement, getBounds () est de retour nul.

Le code de reproduction est la suivante:

<!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>

Y at-il quelque chose que je suis absent? Je n'ai pas pu trouver quoi que ce soit dans la documentation au sujet de cette situation. Le plus proche je reçois est une note sur getBounds qui dit:

  

Si la carte n'a pas encore été initialisé (à savoir le mapType est encore nulle), ou le centre et le zoom n'a pas été défini, le résultat est nul.

Notez que le rendement getZoom non défini, aussi. Est-ce fitBounds () pas réglé cette valeur?

EDIT J'ai mis à jour le code avec un zoom par défaut et le centre, selon les suggestions de Marcelo.

Était-ce utile?

La solution

Vous devez obtenir les limites après l'événement bounds_changed.

Autres conseils

@CrazyEnigma suggéré , vous pouvez obtenir les limites après l'événement bounds_changed est déclenché:

map.fitBounds(myLatLngBounds);

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

Ce qui précède imprimer ce qui suit à votre console:

roadmap
6
Object

Notez que si vous voulez seulement getBounds et faire quelque chose une fois, vous devriez remplacer addListener avec addListenerOnce (Merci, @Tomas).

Utilisez addListenerOnce lorsque tilesloaded

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

La réponse est dans votre propre citation. Vous devez définir le centre et le zoom de la carte à initialiser.

Notez que dans la documentation pour la spécification de l'objet MapOptions, les valeurs du centre et le zoom sont marqués comme requis :

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top