2016-11-10 303 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语句更改为测试标记是否应该是除去。