简体   繁体   English

传单控制层:选择器

[英]Leaflet control layer: selector

I am displaying two Geojson files on leaflet. 我在传单上显示了两个Geojson文件。 The two files are displaying fine on my map but I want to be able to have the selector working on both layers. 这两个文件在我的地图上都显示良好,但我希望能够使选择器在两层上都起作用。

As you can see here, my selector only display on province : http://bl.ocks.org/renauld94/8493ca671ce8de63bfab9fafd3f3f574/363f40907203cc431de22e16987669b7bae13fe8 如您所见,我的选择器仅显示在省份: http : //bl.ocks.org/renauld94/8493ca671ce8de63bfab9fafd3f3f574/363f40907203cc431de22e16987669b7bae13fe8

var ward = [];
var wardOverlay = L.d3SvgOverlay(function(sel, proj) {

  var upd = sel.selectAll('path').data(ward);
  upd.enter()
    .append('path')
    .attr('d', proj.pathFromGeojson)
    .attr('stroke', 'red')
    .attr('fill-opacity', '0.2');
  upd.attr('stroke-width', 1 / proj.scale);
});


var province = [];
var provinceOverlay = L.d3SvgOverlay(function(sel, proj) {

  var upd = sel.selectAll('path').data(province);
  upd.enter()
    .append('path')
    .attr('d', proj.pathFromGeojson)
    .attr('stroke', 'black')
    .attr('fill-opacity', '0.1');
  upd.attr('stroke-width', 1 / proj.scale);
}); 

L.control.layers({"Geo Tiles": tiles}, {"province": provinceOverlay}, {"ward": wardOverlay}).addTo(map);



d3.json("ward.geo.json", function(data) { ward = data.features; wardOverlay.addTo(map) });
d3.json("province.geo.json", function(data) { province = data.features; provinceOverlay.addTo(map) });  


</script>

</body>
</html>

How I can have a selector for both layers? 如何为两层都有一个选择器?

Have a look at the creation of Control.Layers : 看一下Control.Layers的创建:

L.control.layers(<Object> baselayers?, <Object> overlays?, <Control.Layers options> options?)

Creates an attribution control with the given layers. 使用给定的图层创建归因控件。 Base layers will be switched with radio buttons, while overlays will be switched with checkboxes. 基本层将通过单选按钮进行切换,而覆盖层将通过复选框进行切换。 [...] [...]

It means that the second object contains the entries for each switchable layer. 这意味着第二个对象包含每个可切换层的条目。 Try: 尝试:

L.control.layers({"Geo Tiles": tiles}, {
    "province": provinceOverlay, 
    "ward": wardOverlay
}).addTo(map);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM