441 votes

API Google Maps v3 : comment supprimer tous les marqueurs ?

Dans l'API Google Maps v2, si je voulais supprimer tous les marqueurs de carte, je pouvais simplement le faire :

map.clearOverlays();

Comment faire dans l'API de Google Maps v3 ?

En regardant le API de référence c'est pas clair pour moi.

3 votes

J'ai trouvé un peu de code au lien ci-dessous, mais bon sang - c'est beaucoup de code pour simuler la précédente ligne de code dans la v2 de l'API. lootogo.com/googlemapsapi3/markerPlugin.html

2 votes

N'oubliez pas que maps 3.0 est censé être TRÈS léger afin que les appareils mobiles puissent l'utiliser avec le moins de décalage possible...

1 votes

Les solutions proposées ici semblent ne pas fonctionner à partir du 29/07/2010. J'aimerais avoir une version fonctionnelle à proposer à la place.

0voto

Felipe Miosso Points 2518

Je ne sais pas pourquoi, mais, la mise setMap(null) à mes marqueurs ne fonctionne pas pour moi lorsque j'utilise DirectionsRenderer .

Dans mon cas, j'ai dû appeler setMap(null) à mon DirectionsRenderer également.

Quelque chose comme ça :

var directionsService = new google.maps.DirectionsService();
var directionsDisplay = new google.maps.DirectionsRenderer();

if (map.directionsDisplay) {
    map.directionsDisplay.setMap(null);
}

map.directionsDisplay = directionsDisplay;

var request = {
    origin: start,
    destination: end,
    travelMode: google.maps.TravelMode.DRIVING
};

directionsDisplay.setMap(map);
directionsService.route(request, function (result, status) {
    if (status == google.maps.DirectionsStatus.OK) {
        directionsDisplay.setDirections(result);
    }
});

0voto

kaiser Points 432

Il suffit de marcher sur les marqueurs et de les retirer de la carte, puis de vider le tableau des marqueurs de la carte :

var markers = map.markers;
for(var i = 0; i < markers.length; i++) {
    markers[i].setMap(null);
}
map.markers = [];

0voto

Effacer Googlemap

mGoogle_map.clear();

0voto

Geka K Points 34

J'ai essayé toutes les solutions proposées, mais rien n'a fonctionné pour moi tant que tous mes marqueurs étaient sous un cluster. Finalement, j'ai juste mis ceci :

var markerCluster = new MarkerClusterer(map, markers,
    { imagePath: 'https://developers.google.com/maps/documentation/javascript/examples/markerclusterer/m' });
agentsGpsData[agentGpsData.ID].CLUSTER = markerCluster;

//this did the trick
agentsGpsData[agentId].CLUSTER.clearMarkers();

En d'autres termes, si vous enroulez des marqueurs dans un cluster et que vous voulez supprimer tous les marqueurs, vous appelez :

clearMarkers();

0voto

Adil Points 71

La réponse la plus votée en haut de la page est correcte, mais si vous n'avez qu'un seul marqueur à la fois (comme c'est le cas dans ma situation) et qu'à chaque fois que vous avez besoin de supprimer l'emplacement précédent de ce marqueur et d'en ajouter un nouveau, vous n'avez pas besoin de créer un tableau entier de marqueurs et de le gérer à chaque push et pop, vous pouvez simplement créer une variable pour stocker l'emplacement précédent de votre marqueur et la mettre à null lors de la création d'un nouveau marqueur.

// Variable globale pour contenir l'emplacement du marqueur.

var previousMarker ;

//en ajoutant un nouveau marqueur

    if(previousMarker != null)
previousMarker.setMap(null);

var marker = new google.maps.Marker({map: resultsMap, position: new google.maps.LatLng(lat_, lang_)});
previousMarker = marker;

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