隐藏标记-地图盒

Hide Markers - Mapbox

本文关键字:地图 隐藏      更新时间:2023-09-26

我已经添加了如下示例所示的标记。

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]); 
objMap.removeLayer(mapMarkers[0]); 

如果您将mapmarker添加到地图中,这将是有意义的,但正如这段代码所示,情况并非如此:mapmarker是在添加到地图之前使用createMarker方法转换为标记对象的数据。

从概念上讲,您有mapObject,其中包含markerClusters,其中包含标记(您没有分配变量名称)。因此,如果您想从标记集群中删除一个特定的标记,您需要从集群的角度调用removeLayer,而不是从映射的角度。

可以用markerCluster.eachLayer,比如

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

这将移除第一层。如果您想要删除集群的有一些其他标准,则需要在将标记添加到集群之前将它们存储在数组中,或者将简单的if语句更改为测试是否应该删除标记的语句。