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.

3voto

kolis29 Points 18

Vous pouvez aussi le faire de cette façon :

function clearMarkers(category){ 
  var i;       

  for (i = 0; i < markers.length; i++) {                          
    markers[i].setVisible(false);        
  }    
}

2voto

bokor Points 875

Je viens d'essayer avec kmlLayer.setMap(null) et cela a fonctionné. Je ne sais pas si cela fonctionnerait avec des marqueurs ordinaires, mais cela semble fonctionner correctement.

2voto

Will Points 21

Pour effacer toutes les superpositions, y compris les polys, les marqueurs, etc...

utilisez simplement :

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

Voici une fonction que j'ai écrite pour le faire à ma place sur une application cartographique :

  function clear_Map() {
    directionsDisplay = new google.maps.DirectionsRenderer();
    //var chicago = new google.maps.LatLng(41.850033, -87.6500523);
    var myOptions = {
        zoom: 8,
        mapTypeId: google.maps.MapTypeId.ROADMAP,
        center: HamptonRoads
    }

    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
    directionsDisplay.setMap(map);
    directionsDisplay.setPanel(document.getElementById("directionsPanel"));
}

0 votes

Cela ne réinitialiserait-il pas également la carte ? supposons que l'utilisateur ait fait glisser la carte vers une nouvelle zone ?

1voto

Ogglas Points 1

C'est la méthode utilisée par Google lui-même dans au moins un échantillon :

var markers = [];

// Clear out the old markers.
markers.forEach(function(marker) {
  marker.setMap(null);
});
markers = [];

Consultez l'échantillon Google pour un exemple de code complet :

https://developers.google.com/maps/documentation/javascript/examples/places-searchbox

1voto

Rock Star Points 77

Pour supprimer tous les marqueurs de la carte, créez des fonctions comme celles-ci :

1.addMarker(location) : cette fonction permet d'ajouter un marqueur sur la carte.

2.clearMarkers() : cette fonction supprime tous les marqueurs de la carte, pas du tableau.

3.setMapOnAll(map) : cette fonction est utilisée pour ajouter des informations sur les marqueurs dans le tableau.

4.deleteMarkers() : cette fonction supprime tous les marqueurs du tableau en supprimant les références à ceux-ci.

// Adds a marker to the map and push to the array.
      function addMarker(location) {
        var marker = new google.maps.Marker({
          position: location,
          map: map
        });
        markers.push(marker);
      }

// Sets the map on all markers in the array.
      function setMapOnAll(map) {
        for (var i = 0; i < markers.length; i++) {
          markers[i].setMap(map);
        }
      }

// Removes the markers from the map, but keeps them in the array.
  function clearMarkers() {
    setMapOnAll(null);
  }

// Deletes all markers in the array by removing references to them.
      function deleteMarkers() {
        clearMarkers();
        markers = [];
      }

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