我添加了以下示例中给出的标记。
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 :(得分:0)
objMap.removeLayer(mapMarkers[0]);
如果您要将mapMarkers添加到地图中,这是有意义的,但正如此代码所示,情况并非如此:mapMarkers是在添加到createMarker
方法之前转换为标记对象的数据地图。
从概念上讲,您有mapObject
,其中包含markerClusters
,其中包含标记(您没有为其指定变量名称)。因此,如果要从标记集中删除特定标记,则需要从集群的角度调用removeLayer
,而不是从地图中调用。{/ p>
所以你可以使用markerCluster.eachLayer
,比如
markerClusters.eachLayer(function (layer, i) {
if (i == 0) markerClusters.removeLayer(layer);
});
那将删除第一层。如果您要删除哪个群集的其他条件,则需要先将标记存储在数组中,然后再将其添加到群集中,或者更改该简单if
语句测试是否应该删除标记的东西。