传单:如何仅在一层上显示标记或图例?
Posted
技术标签:
【中文标题】传单:如何仅在一层上显示标记或图例?【英文标题】:Leaflet: how can I display a marker or legend only on one layer? 【发布时间】:2020-06-19 03:57:59 【问题描述】:我制作了一张带有不同图层的传单地图,如下所示:
L.easyButton('<span class ="buttons">Example </span>', function (btn, map)
if (map.hasLayer(example1))
map.removeLayer(example1);
;
if (map.hasLayer(example2))
map.removeLayer(example2);
;
if (map.hasLayer(example3))
map.removeLayer(drittpa2017zweit);
map.addLayer(example4);
, 'FirstExample').addTo(map);
等等…… 我声明了一个图例,我只想在一个图层打开时使用它,现在它一直出现在我的脑海中,因为这个
legendwahlbeteiligung.addTo(map);
我尝试了在这里看到的所有内容,使其仅在一层上可见,但随后它们都消失了... 我使用的标记有同样的问题,我也只想在提到的图层之一上显示... 谁能告诉我如何使图例和标记仅在单击一层时出现?
【问题讨论】:
【参考方案1】:要使标记myMarker
在图层example1
可见时出现,而在不可见时消失:
var myMarker = L.marker(...);
example1.on('add', function(e)
if (! map.hasLayer(myMarker))
myMarker.addTo(map);
);
example1.on('remove', function(e)
if (map.hasLayer(myMarker))
myMarker.removeFrom(map);
);
【讨论】:
谢谢!对于标记,这是可行的,但是如果我对图例执行相同操作,则一旦我选择了带有图例的图层,它就不会消失 对于控件,您可能应该跳过 if 条件并无条件地将其从映射中删除。由于控件不是层,我猜map.hasLayer
将不起作用。以上是关于传单:如何仅在一层上显示标记或图例?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用传单和 jQuery Birdseye 在点击时突出显示标记