web-dev-qa-db-fra.com

Zoomez sur le marqueur google.maps

Je ne peux pas zoomer correctement sur un marqueur.

J'essaie de basculer la vue vers un marqueur spécifié, mais je ne peux pas commencer à travailler.

J'ai essayé

map.setCenter(location);
map.setZoom(20);

et

map.fitBounds(new google.maps.latLngBounds(location,location));

mais dans le premier cas, je fais simplement un zoom avant sans que le changement de centre ne soit enregistré, et dans le second cas j'obtiens cette vue d'ensemble sur une zone immense, pas du tout zoomée.

Peut-être que ce problème pourrait être résolu en définissant un délai d'expiration de setcenter à setzoom, mais c'est un vilain hack pour moi, donc une meilleure solution serait préférable.

Comment faites-vous ça?

De plus, si la fenêtre d'information pouvait être affichée sans changer de contenu, ce serait vraiment un plus, mais la chose la plus importante est de zoomer sur le marqueur au bon endroit, de près.

merci beaucoup.

38
Jakob

La solution s'est avérée être

map.setZoom(17);
map.panTo(curmarker.position);
89
Jakob

J'ai pensé publier une réponse ici car les gens voulaient un exemple de code.

Moi aussi, je devais pouvoir zoomer et centrer dès qu'un marqueur était ajouté à la carte.

J'espère que cela aide quelqu'un.

function getPoint(postcode) {

    var geocoder = new google.maps.Geocoder();

    geocoder.geocode( { 'address': postcode + ', UK'}, function(results, status) {
        if (status == google.maps.GeocoderStatus.OK) {

            var marker = new google.maps.Marker({
                map: map,
                position: results[0].geometry.location
            });

            map.setZoom(10);
            map.panTo(marker.position);
        }
        else {
            alert('Geocode was not successful for the following reason: ' + status);
        }
    });
}
8
AdRock

s'agit-il d'une nouvelle instance d'un objet cartographique que vous créez? si c'est le cas, vous pouvez simplement avoir un objet qui contient l'emplacement et le zoom, puis passer cet objet à la carte lors de son initialisation (extrait du didacticiel sur les bases de Gmaps http://code.google.com/apis/ maps/documentation/javascript/basics.html :

function initialize() {
var myLatlng = new google.maps.LatLng(-34.397, 150.644);
var myOptions = {
zoom: 8,
center: myLatlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
}
3
Will Ayd