2015-08-27 45 views
-1

下面的函數在調用時不會刪除標記。爲什麼?函數無法從Google Map中刪除標記

// Remove existing markers from the Map 
function removeMarkers(markersArray) { 
    var j,position; 

    for (j = 0; j < markersArray.length; j += 1){ 
     position = new google.maps.Marker({ 
      position: {lat: markersArray[j][1], lng: markersArray[j][2]} 
     }); 

     position.setMap(null); 
    }; 
}; 

這裏是被送入功能數組:

var educationMarkers = [ 
    ['Grafton Campus, Auckland University', -36.861717, 174.769424], 
    ["Auckland Boys' Grammar", -36.872432, 174.768126], 
    ["Epsom Girls' Grammar", -36.876177, 174.773639], 
    ["St. Peter's College", -36.868412, 174.768575], 
    ["ACG Parnell College", -36.863163, 174.778555], 
    ["Newmarket Campus, Auckland University", -36.865905, 174.7733] 
]; 
+1

你能告訴你如何放置標記嗎? – Neverever

+0

你必須刪除現有的標記。您的代碼正在創建新標記,然後不會將它們添加到地圖中... – geocodezip

+0

下面是我用來創建標記的功能。一旦標記在地圖上,我希望能夠將它們全部刪除。 '上的地圖// 功能地點標記//把新的標誌(markersArray){ \t變種標記,I,postiion,界限=新google.maps.LatLngBounds(); \t爲(I = 0; I Arshavsky

回答

0

您需要繼續參考您放置的標記。

var placedMarkers = []; 

function placeMarkers(markersArray) { 
    var marker, i, postiion, bounds = new google.maps.LatLngBounds(); 
    for (i = 0; i < markersArray.length; i += 1) { 
     marker = new google.maps.Marker({ 
      map: map, 
      position: { 
       lat: markersArray[i][1], 
       lng: markersArray[i][2] 
      } 
     }); 

     // keep reference of the markers you placed 
     placedMarkers.push(marker); 

     position = new google.maps.LatLng(markersArray[i][1], markersArray[i][2]); 
     bounds.extend(position); 
    } 
    map.fitBounds(bounds); 
}; 

當刪除標記時,請使用您保留的參考數組。

// Remove existing markers from the Map 
function removeMarkers() { 
    var j,position; 

    // loop through reference array you kept. 
    for (j = 0; j < placedMarkers.length; j += 1){ 
     placedMarkers[j].setMap(null); 
    }; 
}; 
+0

我還必須在for循環之後將以下代碼行添加到removeMarkers()函數中: 'placedMarkers = [];' – Arshavsky

-1

如果在循環中的標記是正確的,只要改變你與這個循環,使可能的話

一個小提琴手
for (j = 0; j < markersArray.length; j += 1){ 
    position[j] = new google.maps.Marker({ 
     position: {lat: markersArray[j][1], lng: markersArray[j][2]} 
    }); 

    position[j].setMap(null); 
    }; 
+0

介意評論爲什麼downvoted,我也可以學習 – sajanyamaha

+0

'markersArray'是一個字符串數組的數組。因此,'setMap'不是一個函數 – Neverever

+0

Thanks @Neverever編輯了代碼,不確定由OP創建的標記是否正確 – sajanyamaha