Google Maps API v3: How to remove all markers?

后端 未结 30 2791
悲哀的现实
悲哀的现实 2020-11-22 05:36

In Google Maps API v2, if I wanted to remove all the map markers, I could simply do:

map.clearOverlays();

How do I do this in Google Maps A

相关标签:
30条回答
  • 2020-11-22 06:19

    To clear of all the overlays including polys, markers, etc...

    simply use:

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

    Here is a function that I wrote to do it form me on a map application:

      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 讨论(0)
  • 2020-11-22 06:19

    Most voted answer at top is correct but in case if you have only one marker at a time (like I had in my situation) and every time you need to kill the previous location of that marker and add a new one then you don't need to create whole array of markers and manage it on every push and pop, you can simply just create a variable to store your marker's previous location and can set that to null on creation of new one.

    // Global variable to hold marker location.

    var previousMarker;

    //while adding a new marker

        if(previousMarker != null)
    previousMarker.setMap(null);
    
    var marker = new google.maps.Marker({map: resultsMap, position: new google.maps.LatLng(lat_, lang_)});
    previousMarker = marker;
    
    0 讨论(0)
  • 2020-11-22 06:20

    A clean and easy application of rolinger's answer.

    function placeMarkerAndPanTo(latLng, map) {
          while(markersArray.length) { markersArray.pop().setMap(null); }
          var marker = new google.maps.Marker({
            position: latLng,
            map: map
          });
          map.panTo(latLng);
    
          markersArray.push(marker) ;
        }
    
    0 讨论(0)
  • 2020-11-22 06:20

    I have just tried this with kmlLayer.setMap(null) and it worked. Not sure if that would work with regular markers but appears to work correctly.

    0 讨论(0)
  • 2020-11-22 06:21

    On the new version v3, They recommended to keep in arrays. as following.

    See sample at overlay-overview.

    var map;
    var markersArray = [];
    
    function initialize() {
      var haightAshbury = new google.maps.LatLng(37.7699298, -122.4469157);
      var mapOptions = {
        zoom: 12,
        center: haightAshbury,
        mapTypeId: google.maps.MapTypeId.TERRAIN
      };
      map =  new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
    
      google.maps.event.addListener(map, 'click', function(event) {
        addMarker(event.latLng);
      });
    }
    
    function addMarker(location) {
      marker = new google.maps.Marker({
        position: location,
        map: map
      });
      markersArray.push(marker);
    }
    
    // Removes the overlays from the map, but keeps them in the array
    function clearOverlays() {
      if (markersArray) {
        for (i in markersArray) {
          markersArray[i].setMap(null);
        }
      }
    }
    
    // Shows any overlays currently in the array
    function showOverlays() {
      if (markersArray) {
        for (i in markersArray) {
          markersArray[i].setMap(map);
        }
      }
    }
    
    // Deletes all markers in the array by removing references to them
    function deleteOverlays() {
      if (markersArray) {
        for (i in markersArray) {
          markersArray[i].setMap(null);
        }
        markersArray.length = 0;
      }
    }
    
    0 讨论(0)
  • 2020-11-22 06:21

    Just walk over markers and remove them from map, empty maps markers array after that:

    var markers = map.markers;
    for(var i = 0; i < markers.length; i++) {
        markers[i].setMap(null);
    }
    map.markers = [];
    
    0 讨论(0)
提交回复
热议问题