2013-05-08 92 views
0

我要查看,並根據用戶點擊過的位置上型地圖中刪除標記..刪除標記組谷歌地圖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-當我想要刪除標記時調用該函數

問題是:沒有任何東西從地圖中刪除!

我想知道爲什麼!

編輯:這裏,我添加標記,並將其推入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 2013-05-08 09:06:13

+0

@duncan,我添加了如何將標記添加到markersArray中的部分,我在添加它們時單擊錨點並使showMarkers類。當有班級donesn't退出我呼籲removeOverlay功能 – palAlaa 2013-05-08 09:33:19

+0

聽起來像[[類別]地圖](http://www.geocodezip.com/v3_MW_example_categories.html) – geocodezip 2013-05-08 12:32:44

回答

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 2013-05-08 09:33:42

+0

@palAlaa:瀏覽已編輯的部分。它是一個工作的例子。 – 2013-05-08 09:57:57