2016-10-03 41 views
0

我在尋找以下代碼leaflet0.7.7的解決方案:了Methode刪除不leaflet0.7.7工作

var currentlyDisplayedRectangles = []; //Used in CorridorHandler 

drawRoute = function(route) { 
    route = new L.Polyline(L.PolylineUtil.decode(route)); // OSRM polyline decoding 
    boxes = L.RouteBoxer.box(route, this.wideroad); 
    var bounds = new L.LatLngBounds([]); 
    if (currentlyDisplayedRectangles) { 
     for (var i = 0; i < currentlyDisplayedRectangles.length; i++) { 
     //currentlyDisplayedRectangles[i].remove(); //Doesn't work in leaflet0.7.7 
     console.log(currentlyDisplayedRectangles[i]); 
     } 
    } else { 
     currentlyDisplayedRectangles = []; 
    } 
    for (var i = 0; i < boxes.length; i++) { 
     var displayedRectangle = L.rectangle(boxes[i], {color: "#ff7800", weight: 1}).addTo(this.map); 
     currentlyDisplayedRectangles.push(displayedRectangle); 
     bounds.extend(boxes[i]); 
    } 
    this.map.fitBounds(bounds); 
    return route; 
    }; //End drawRoute() 

這工作完全在leaflet1.0.0但不是在leaflet0.7.7

currentlyDisplayedRectangles[i].remove(); 

這會給出該函數不可用的錯誤。

出於某種原因,我實際上可能不會更新到leaflet1.0.0,因爲很多其他的東西不再工作了,而且我必須接受這一點。

後來我肯定會更新。但與此同時,我需要一個解決方案,以前的版本的傳單。

有沒有人有一個想法如何解決這個問題?

回答

3

在小冊子0.7.x中,Ilayer abstract class根本沒有remove方法。

將其與Leaflet 1.0中的remove method of the Layer class進行比較。

作爲替代方案,請使用removeLayer method from the Map class

+0

好吧,我不知道如何實現它。你可以給我一個例子嗎? –

+1

@Guido創建圖層時,請保留一個圖層。例如,'var polyline = L.polyline(dataArray,{color:'blue'})。addTo(map);'然後刪除它,使用:'map.removeLayer(polyline);' – user2441511

+0

謝謝@Ivan,我得到了它... –