3

我目前使用下面的代碼向地圖添加標記。我希望能夠通過推送JavaScript命令隨時刪除任何一個。這可能嗎?使用javascript刪除Google地圖上的多個標記之一

前。放置5個標記物。移除第三個,同時保持另一個4.

$('#map').show(); 
var geocoder = new google.maps.Geocoder(); 
var address = document.getElementById("address").value +", " + document.getElementById("city").value; 

geocoder.geocode({ 'address': address}, function(results, status) { 
if (status == google.maps.GeocoderStatus.OK) { 
    var lat = results[0].geometry.location.lat(); 
    var lng = results[0].geometry.location.lng(); 
    locationsall[counter] = new Array(); 
    locationsall[counter][0] = address; 
    locationsall[counter][1] = lat; 
    locationsall[counter][2] = lng; 
    var mapOptions = { 
     zoom: 13, 
     center: new google.maps.LatLng(lat, lng), 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    } 

var map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions); 
var marker, i; 
for (i = 0; i < locationsall.length; i++) { 
    marker = new google.maps.Marker({ 
    position: new google.maps.LatLng(locationsall[i][1], locationsall[i][2]), 
    map: map, 
    title: 'You are here!' 
    }); 
} 
counter++; 
} else { 
    alert("Geocode was not successful for the following reason: " + status); 
} 

}); }

編輯1:

 }).text("Remove").click(function() { 
    var index2 = $tr2.index(); 
    $("#locationDeals input[type='hidden']").each(function() { 
     this.name = this.name.replace(/\[(\d+)\]/, function(str2, number2) { 
      return "[" + (+number2 > index2 - 1 ? number2 - 1 : number2) + "]"; 
     }); 
    }); 
    //locationsall[locations.indexOf(location)].setMap(null); 
    $tr2.remove(); 
    locations.splice(locations.indexOf(location), 1); 
    return false; 
     }).appendTo($tdRemoveRow2); 

回答

2

for loop之外定義Array將控制所有添加的標記。例如。 allMarkers = []

創建標記後,在for loop的內部,將其推入所述數組中。例如。 allMarkers.push(marker)

當你要刪除的第一標記:allMarkers[0].setMap(null),或第三標記:allMarkers[2].setMap(null)

+0

請記住,上面的建議只會從地圖中刪除標記。它不會被垃圾收集。爲此,應該刪除數組中的條目。 – Nils

+0

你是對的。但我選擇不要把OP比混淆更多;) – doesterr

+0

所以我嘗試了它,但它不適用於我的情況。你有什麼建議如何做到這一點? (請參閱edit1)。基本上我有兩個生成表格並映射地址的texbox。每個tr都有一個刪除按鈕。我點擊刪除,它從表中刪除ti。我試圖把它從地圖上移除。 – Den

1

是的,這是可能的。 Google Maps文檔涵蓋了全部內容,包括代碼示例等。基本上,標記是疊加而不是地圖本身。您可以將這些疊加層放入數組中,然後使用setMap()爲空來隱藏。

完整文檔here

相關問題