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

时间:2014-01-03 02:45:40

标签: javascript leaflet geojson svg d3.js

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

这是 code that works ,但是很笨拙。

相关部分是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);

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

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

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