3 votes

Google Maps v3 - mettre à jour les marqueurs en les faisant glisser

Lorsque je fais glisser le marqueur de mon propre emplacement, il devrait mettre à jour les autres marqueurs, puisque je travaille avec un rayon. Ainsi, si je fais glisser mon emplacement, les marqueurs situés en dehors du rayon doivent être supprimés et les marqueurs situés à l'intérieur du rayon doivent être ajoutés. C'est ce qu'il fait, mais il continue d'ajouter les mêmes marqueurs pendant environ 8 fois, et bien sûr personne ne veut cela.

google.maps.event.addListener(marker, 'drag', function() {
geocoder.geocode({'latLng': marker.getPosition()}, function(results, status) {
    if (status == google.maps.GeocoderStatus.OK) {
        if (results[0]) 
        {
            $('#address').val(results[0].formatted_address);
            ownlat = marker.getPosition().lat();
            ownlng = marker.getPosition().lng();
            clearOverlays(); //deletes old markers
            getevents(); //adds new markers  
        } 
    }   
});             

}) ;

2voto

Tina CG Hoehr Points 2596

La documentation de l'API indique que l'événement "drag" se déclenche de manière répétée lorsque le marqueur est déplacé. J'ai donc pensé qu'il appelait getevents() rapidement plusieurs fois de suite.

Vous devriez utiliser "dragend" à la place, avec l'inconvénient d'introduire un délai d'apparition des marqueurs pendant que le géocodeur s'exécute. (Si cela devient un problème, essayez de laisser getevents en dehors de l'appel au géocodeur).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X