如何使用传单图层控件切换 d3 svg 叠加层



我有 3 个 d3 svg,我想放在同一个传单地图上。我希望能够像传单层一样轻松地控制它们。

这是有效的代码,但很卡顿。

相关部分是第 75 行到末尾,我在其中创建了一个专门绑定到我的 d3 svg 组的自定义层控件,实例化它,并在 addTo(map) 之前的叠加哈希中弹出它。

var lineLayer = L.Class.extend({
  initialize: function () {
    return;
  },
  onAdd: function (map) {
    railLineGroup.style("display", "block");
  },
  onRemove: function (map) {
    railLineGroup.style("display", "none");
  },
});
var railLineLayer = new lineLayer();
overlays["Rail Lines"] = railLineLayer;
L.control.layers(baseLayers, overlays).addTo(map);

必须有更好的方法来做到这一点。例如,由于这是一个黑客,图层控件不知道该图层已被激活,因此未选中该复选框。

任何帮助将不胜感激!

我真的建议你看看Vector OSM,特别是tilejson.js。在那里,您可以看到一个正确的实现,它使图层控制与 SVG 叠加一起工作。

最新更新