javascript - 传单控件不过滤标记

标签 javascript leaflet

我正在尝试在我的传单 map 中与标记聚类器一起实现“过滤”功能,我已经拥有控制框并绘制了标记,但是在取消勾选“类别”后,我在 map 上没有任何更新附上此功能正在运行的示例 http://jsfiddle.net/RogerHN/31v2afte/2/

这就是我绘制标记的方式。

    case 'antisocialbehaviour':
    marker = L.marker(new L.LatLng(a[0], a[1]), {
                icon: icons,
                title: 'antisocialbehaviour'
            });
            markers_cluster.addLayer(marker); 
            break;

控制框所需的代码(JavaScript 顶部)

var groupA = L.layerGroup(markersA);
var groupB = L.layerGroup(markersB);
var markersA = [];
var markersB = [];
var overlayMaps = {
    "A": groupA,
    "B": groupB
};
L.control.layers(tileLayer, overlayMaps, {position:'topleft'}).addTo(map);

如果有人需要查看问题,我在 JSFiddle 上的代码。 https://jsfiddle.net/jgov83fg/25/

最佳答案

我做了一个copy您的 JSFiddle 并对其进行了一些更改。

我添加了Leaflet.MarkerCluster.LayerSupport JSFiddle HTML 的 body 标签中的子插件:

<script src="https://unpkg.com/<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="90fcf5f1f6fcf5e4befdf1e2fbf5e2f3fce5e3e4f5e2befcf1e9f5e2e3e5e0e0ffe2e4d0a2bea0bea1" rel="noreferrer noopener nofollow">[email protected]</a>/dist/leaflet.markercluster.layersupport.js"></script>

我将以下内容添加到 JavaScript 代码中:

var mcgLayerSupportGroup = L.markerClusterGroup.layerSupport(),
  group1 = L.layerGroup(),
  group2 = L.layerGroup(),
  group3 = L.layerGroup(),
  group4 = L.layerGroup(),
  control = L.control.layers(null, null, {
    collapsed: false
  }),
  i, a, title, marker;

mcgLayerSupportGroup.addTo(mymap);

mcgLayerSupportGroup.checkIn([group1, group2, group3, group4]);

control.addOverlay(group1, 'Anti-Social Behaviour');
control.addOverlay(group2, 'Violent Crime');
control.addOverlay(group3, 'Bicycle Theft');
control.addOverlay(group4, 'Burglary');
control.addTo(mymap);

group1.addTo(mymap); // Adding to map or to AutoMCG are now equivalent.
group2.addTo(mymap);
group3.addTo(mymap);
group4.addTo(mymap);

然后,在 create_marker 函数中,我调用 marker.addTo(group1)marker2.addTo(group2)marker3.addTo(group3)marker4.addTo(group4) 基于标记所关联的犯罪类型。

希望这对您有所帮助,如果您有任何疑问,请告诉我。

关于javascript - 传单控件不过滤标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48692493/

相关文章:

javascript - 隐藏 dc.js 行图中的指定行

javascript - 图像文件到可汗学院代码

leaflet - 如何在触摸设备上禁用单指拖动

javascript - 在传单中单击标记时不生成 map 单击事件

javascript - 如何在php中模拟浏览器来执行javascript文件?

javascript - 如何在 when 函数中延迟 promise

javascript - 无法使用搜索检测单个大写或小写

leaflet - 如何将纬度/经度转换为 GridLayer Tile 中的正确像素位置

javascript - 如何在 Mapbox 中将 geojson + CSV 文件与杂食动物传单连接起来,将数据映射为多边形?

javascript - 放大和缩小时如何避免 Canvas 元素中圆形标记的不必要的填充不透明度变化?