隐藏标记 - Mapbox

时间:2016-11-10 12:52:26

标签: javascript dictionary mapbox box

我添加了以下示例中给出的标记。

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]); 

1 个答案:

答案 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语句测试是否应该删除标记的东西。