2013-05-08 4 views
0

Я хочу, чтобы просмотреть и удалить маркеры на карте в зависимости от пользователя мыши по типу расположения ..Удаление группы маркеров Google Maps API v3

Я использую этот код, чтобы удалить маркеры

1- Определить markersArray, как глобальный массив

var markersArray =new Array(); 

2- Определение clearOverlays функционировать

function clearOverlays() { 


    if (markersArray && markersArray.length) { 


    google.maps.Map.prototype.clearOverlays = function() { 

     for (var i = 0; i < markersArray.length; i++) { 

      markersArray[i].setMap(null); 
     } 
    } 

    markersArray = []; 
    markersArray = new Array(); 
    markersArray.length = 0; 
    } 

} 

3- Я вызываю функцию, когда хочу удалить маркеры

Проблема такова: ничего не удалено с карты!

Мне интересно узнать почему!

Edit: Вот где я добавить маркеры и подтолкнуть их в markersArray

downloadUrl("getPlacesForType/"+markerType+"/"+lang, function(data) { 


       var xml = data.responseXML; 

       var myMarkersArray = xml.documentElement.getElementsByTagName("marker"); 


       for (var i = 0; i < myMarkersArray.length; i++) { 

        var name = myMarkersArray[i].getAttribute("name"); 
        var version = myMarkersArray[i].getAttribute("version"); 
        var description = myMarkersArray[i].getAttribute("description"); 
        var type = myMarkersArray[i].getAttribute("type"); 
        var point = new google.maps.LatLng(
         parseFloat(myMarkersArray[i].getAttribute("lat")), 
         parseFloat(myMarkersArray[i].getAttribute("lng"))); 
        var html = "<b>" + name + "</b> <br/>" + description; 
        var icon = customIcons[type] || {}; 

        var marker = new google.maps.Marker({ 
         map: map, 
         position: point , 
         icon: icon.icon, 
         shadow: icon.shadow 
        }); 
        markersArray.push(marker); 
        bindInfoWindow(marker, map, infoWindow, html); 
       } 
      }); 
+0

Что и когда вы добавляете в markersArray? – duncan

+0

@duncan, я добавляю часть того, как добавляю маркеры в markersArray, добавляю их при нажатии на якорь и класс showMarkers. когда там класс не завершается, я вызываю removeOverlay fnction – palAlaa

+0

Похоже на ["category" map] (http://www.geocodezip.com/v3_MW_example_categories.html) – geocodezip

ответ

1

попробуйте использовать массив для хранения маркеров. вам нужно нажать каждый маркер при его создании.

var markerArray=[]; 
var locations = [ [56.066877,21.069274], [55.279849,26.048155] ]; 
for (i = 0; i < locations.length; i++) 
{ 
marker = new MarkerWithLabel({ 
position: new google.maps.LatLng(locations[i][0], locations[i][1]), 
map: map 
}); 
markerArray.push(marker); 
}/

и удаление маркеров,

function deleteMarkers() { 
    if (markersArray) { 
    for (i in markersArray) { 
    markersArray[i].setMap(null); 
    } 
markersArray.length = 0; 
} 
} 

посмотрите на этот небольшой пример,

<!DOCTYPE html> 
<html> 
<head> 

<title>Google Maps</title> 
<meta name="viewport" content="initial-scale=1.0, user-scalable=no"> 
<meta charset="utf-8"> 
<style> 
html, body, #map-canvas { 
margin: 0; 
padding: 0; 
height: 100%; 
} 
</style> 
<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script> 
<script> 
    var markersArray = []; 
    function initialize() { 
     var mapOptions = { 
      zoom: 4, 
      center: new google.maps.LatLng(-25.363882, 131.044922), 
      mapTypeId: google.maps.MapTypeId.ROADMAP 
     }; 
     var map = new google.maps.Map(document.getElementById('map-canvas'), 
    mapOptions); 

     google.maps.event.addListener(map, 'click', function (e) { 
      placeMarker(e.latLng, map); 
     }); 
    } 

    function placeMarker(position, map) { 
     var marker = new google.maps.Marker({ 
      position: position, 
      map: map 
     }); 
     markersArray.push(marker); 
     map.panTo(position); 
    } 

    google.maps.event.addDomListener(window, 'load', initialize); 

    function deleteOverlays() { 
     if (markersArray) { 
      for (i in markersArray) { 
       markersArray[i].setMap(null); 
      } 
      markersArray.length = 0; 
     } 
    } 
    </script> 
    </head> 
    <body> 
    <input type="button" value="deletemarker" onclick="deleteOverlays()" /> 
    <div id="map-canvas"></div> 
    </body> 
</html> 
+0

Я пытался это сделать, но также не пожалуйста, проверьте раздел редактирования вопроса – palAlaa

+0

@palAlaa: просмотрите отредактированную часть. Это рабочий пример. –

Смежные вопросы