如何将一个leaflet标记添加到多个图层组?

6

我正在通过以下方式向图层组添加标记:

var lGroup1 = new L.FeatureGroup(),
    lGroup2 = new L.FeatureGroup(),
    lGroup3 = new L.FeatureGroup();

new compMarker([50.07045,8.24660]).bindPopup('<p>Something</p>').addTo(lGroup1).on('click', onClick);
new compMarker([50.07045,8.24660]).bindPopup('<p>Something</p>').addTo(lGroup2).on('click', onClick);
new compMarker([50.07045,8.24660]).bindPopup('<p>Something</p>').addTo(lGroup3).on('click', onClick);

如您所见,我正在向三个图层组中添加一个相同的标记(相同的内容)。有没有一种方法可以在不生成三个相同标记的情况下完成此操作?我想要将一个标记添加到多个图层组中。
我已经尝试过以下方法但没有成功:
new compMarker([50.07045,8.24660]).bindPopup('<p>Something</p>').addTo(lGroup1,lGroup2,lGroup3).on('click', onClick);

任何帮助都将不胜感激!

1
你可以使用Leaflet的函数这样做:L.marker([50.07045,8.24660]).addTo(lGroup1).addTo(lGroup2).addTo(lGroup3)。但是它有一个副作用,当你激活所有组并且然后停用其中一个时,标记会消失 :/ 你可能需要编写一个函数,对所有图层进行可见性检查,并决定是否显示标记。 - chrki
很抱歉,这样做不起作用。如果我按照这种方式操作,我的标记将不会显示在任何组中。 - user3313389
@chrki 补充一下,开发人员在2012年拒绝了这个问题:https://github.com/Leaflet/Leaflet/issues/598 - approxiblue
@chrki,我正在寻找解决你所描述的副作用的方法。有什么想法/提示可以轻松实现吗?谢谢。 - user2297037
1个回答

0
const marker = m;
group1 = L.layerGroup();....

group1.addLayer(marker);
group2.addLayer(marker);
group3.addLayer(marker);

group1.hasLayer(marker) == true;

给一个变量分配标记,并将该标记添加到多个图层组中。然后,您可以使用 hasLayer 检查它们是否在所述图层组中。


2
请提供不仅仅是代码的答案。相反,对代码进行解释并分析为什么它能回答问题是最有益的。 - Jody Heavener

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接