2010-07-23 8 views
15

J'ai trouvé plusieurs exemples V2 sur la façon de faire un panoramique de la carte pendant le déplacement d'un marqueur. Par exemple: http://www.putyourlightson.net/projects/coordinatesDans Google Maps V3, comment puis-je obtenir un marqueur déplaçable pour afficher la carte?

// create map and add controls 
var map = new GMap2(document.getElementById("map")); 
map.addControl(new GLargeMapControl());   
map.addControl(new GMapTypeControl()); 

// set centre point of map 
var centrePoint = new GLatLng('53.34870686020199', '-6.267356872558594'); 
map.setCenter(centrePoint, 14); 

// add a draggable marker 
var marker = new GMarker(centrePoint, {draggable: true}); 
map.addOverlay(marker); 

// add a drag listener to the map 
GEvent.addListener(marker, "dragend", function() { 
    var point = marker.getPoint(); 
    map.panTo(point); 
    document.getElementById("latitude").value = point.lat(); 
    document.getElementById("longitude").value = point.lng(); 
}); 

Cette page semble "auto-pan", tandis que le marqueur est en cours de déplacement; notez que son seul écouteur d'événement est pour "dragend". Mais je vous assure que cette carte pique pendant que le marqueur est traîné. J'essaye de réaliser la même chose avec l'API V3, sans aucun succès. J'ai même essayé d'appeler map.panTo() alors que l'icône est en cours de déplacement, avec des résultats peu satisfaisants: http://www.publicgloucester.com/test.html

function initialize() 
    { 
    Gloucester = new google.maps.LatLng (42.6159285, -70.6619888); 

    myOptions = 
     { 
     zoom: 14, 
     mapTypeId: google.maps.MapTypeId.ROADMAP, 
     center: Gloucester, 
     streetViewControl: false 
     } 

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

    marker = new google.maps.Marker ({position: Gloucester, title: "Gloucester, MA"}); 
    marker.setMap (map); 
    marker.setDraggable (true); 

    google.maps.event.addListener (marker, 'drag', function (event) 
     { 
     // Pan to this position (doesn't work!) 
     map.panTo (marker.getPosition()); 
     }); 

    } 

Il me semble logique que cela ne fonctionnerait pas, car panning placer le marqueur au centre de la carte, pendant que la carte bouge, est fausse.

Est-ce aussi simple que l'API V2 le fait automatiquement, contrairement à l'API V3? Comment puis-je obtenir cet effet avec l'API V3?

Merci.

+0

J'ai creusé, et il semble que cette fonctionnalité a été supprimée dans la transition V2 -> V3. Je ne trouve aucun mot officiel, mais cela semble être ce qui s'est passé. Bummer. –

+0

FYI - http://code.google.com/p/gmaps-api-issues/issues/detail?id=2404 –

Répondre

19

utilisez dragend au lieu de glisser. le code sera,

google.maps.event.addListener(marker, "dragend", function(event) { 

     var point = marker.getPosition(); 
     map.panTo(point); 

     }); 
+0

Ce code "fonctionne", mais ne réalise pas ce que je veux. Ce code parcourt la carte lorsque le marqueur est relâché. Je veux que la carte fasse un panoramique pendant la libération du fabricant, tout comme le comportement automatique dans l'API v2. J'ai posté votre exemple à http://www.publicgloucester.com/test2.html –

1

L'événement que vous souhaitez écouter est celui utilisé dans votre exemple « glisser », ce que vous pouvez faire pour le faire paraître moins « faux » est d'ajouter un retard, de sorte que les cartes suit le marqueur au lieu d'être immédiatement mis à jour. Essayez ceci:

google.maps.event.addListener(marker, "drag", function(event) { 
    var point = marker.getPosition(); 
    window.setTimeout(function(){ 
    map.panTo(point); 
    }, 100); 
}); 
+0

Cela a le même problème que mon code original fait; le marqueur et la main divergent, et il ne se déplace pas correctement. En d'autres termes, le marqueur ne fait pas un panoramique automatique de la carte comme il le faisait en v2, ce qui pue. Merci! –

+0

J'ai fait quelques recherches et la propriété 'dragCrossMove' a été supprimée dans la v3, sans aucun remplacement. L'option bouncy semble avoir disparu aussi bien. – xmarcos

Questions connexes