我的地图上有多个图层,每个图层对应一个特定的符号(一个Mapbox图标),并包含带有该符号的所有标记。我希望每个标记都可以通过自己的弹出窗口进行点击。但是,只有最后添加的图层允许用户单击这些标记并查看弹出窗口,而前面的图层会被覆盖,因此这些图层中的标记不可点击。
这里是JS Fiddle(大部分代码来自网站上的两个例子,我试图将它们组合在一起)
https://jsfiddle.net/wy5rdwzz/
我需要这行代码才能通过切换列表来过滤标记,我需要每个标记都是可点击的。
"filter": ["==", "marker-symbol", symbol]
我如何才能使所有标记都可访问(以便可以单击它们并显示弹出窗口),而不仅仅是最后一层中添加的标记?
另外,如果每个标记都有自己的图层,您将如何显示相应标记旁边的每个标记的名称?
答案 0 :(得分:4)
问题在于您从未存储过图层ID。每次添加图层时,都会使用最新ID覆盖layerID
。因此,当您创建onclick& mousemove listeners,您只是将这些侦听器添加到最近的层:{ layers: [layerID] }
。
我已经编辑了你的jsfiddle(here),每次添加一个图层时都会将每个图层ID推送到一个数组中:{ layers: layerIdCollection }
。
如果您有任何疑问,请告诉我们。)