2016-11-10 179 views
1

我已添加標記,如以下示例中所示。隱藏標記 - Mapbox

for (let x = 0; x < mapMarkers.length; x++) { 
    //mapObject.totalMarkers.push(createMarker(mapMarkers[x].whereLat, mapMarkers[x].whereLng, mapMarkers[x].id, detailContId)); 
    markerClusters.addLayer(createMarker(mapMarkers[x].whereLat, mapMarkers[x].whereLng, mapMarkers[x].id, detailContId)); 

} 

markerClusters.on('clusterclick', function(a) { 
    zoomLevel = mapObject.getZoom(); 
    if (zoomLevel < appConfig.userSetting.maxZoom) { 
    mapObject.zoomIn(); 
    } else { 
    a.layer.spiderfy(); 
    } 
}); 

mapObject.addLayer(markerClusters); 

現在我想隱藏一些標記。我做了一些像以下給出的Rnd,但無法成功。任何幫助對我來說都很棒。

objMap.removeLayer(mapMarkers[0]); 

回答

0
objMap.removeLayer(mapMarkers[0]); 

這將使意義,如果你是在加入mapMarkers地圖,但作爲這個代碼所示,這是不是這樣的:mapMarkers是您在使用createMarker方法轉化爲標記對象中的數據然後添加到地圖中。

從概念上說,您有​​,其中包含markerClusters,其中包含標記(您不分配變量名稱)。因此,如果您想從標記羣體中刪除特定標記,則需要從羣集的角度調用removeLayer,而不是從地圖中調用。

所以,你可以使用markerCluster.eachLayer,像

markerClusters.eachLayer(function (layer, i) { 
    if (i == 0) markerClusters.removeLayer(layer); 
}); 

這將消除第一層。如果您還有其他準則需要刪除其中的羣集,則需要先將這些標記存儲到數組中,然後再將其添加到羣集中,或者將該簡單的if語句更改爲測試標記是否應該是除去。