我有 3 个 d3 svgs 我想放在同一张传单 map 上。我希望能够像控制传单层一样轻松地控制它们。
这是 code that works ,但是很卡。
相关部分是第 75 行到末尾,我在其中创建了一个专门绑定(bind)到我的 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);
必须有更好的方法来做到这一点。例如,因为这是一个 hack,图层控件不知道图层已经被激活,所以复选框未被选中。
如有任何帮助,我们将不胜感激!
最佳答案
我真的会推荐你看看Vector OSM , 特别是 tilejson.js .您会看到一个正确的实现,它使层控制与 SVG 覆盖一起工作。
关于javascript - 如何使用传单图层控件切换 d3 svg 叠加层?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20926490/