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.
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.
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);
}
});
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();
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 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.
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.
9 votes
La réponse la mieux notée est fausse. Regardez la source de cet exemple pour voir comment faire : google-developers.appspot.com/maps/documentation/javascript/
0 votes
Veuillez jeter un coup d'œil à cette page gmaps-utility-library.googlecode.com/svn/trunk/markermanager/
0 votes
Veuillez sélectionner une réponse.