【发布时间】:2020-05-29 18:39:14
【问题描述】:
我们的设置
我们有一个 L.map,其中包含从跨月的动态事件数组加载的不同层 L.markers。列出的许多场地在任何特定时期都会举办许多活动,因此我们最终会使用我们从 CDN 运行的 OMS-Leaflet 插件 (0.2.6) 很好地收集许多共享位置的标记 /p>
根据星期几或事件是否已确认/到期,例如,每个标记被放入多个标记层之一。这是一个周末的: 我花了一段时间才弄清楚如何正确堆叠标记,以便它们按特定顺序显示(1. 即将到来的标记,2 . 其他未来日期标记和 3. 任何过期标记(如果适用))使用 zIndexOffset 作为 bringToFront() 方法不支持L.标记。 我们已按要求加载和堆叠所有内容,一切正常,直到我们unspiderfy/spiderfy。当标记被重新蜘蛛化时最终在顶部的那个不是最初显示的那个。 我查看了所有的 OMS 问题,而不仅仅是 OMS-Leaflet(也就是 Google Maps API v3 的 OMS 版本),并发现了几个似乎暗示类似问题的已关闭的: OMS should remember original zIndex of marker #76
z-Indices 重置 #117(之前的修复关闭了这个) 现在据我所知,这些问题的相关修复似乎已应用于 OverlappingMarkerSpiderfier/1.0.2/oms.js(我想现在也是 1.0.3),但也许 不是 OverlappingMarkerSpiderfier-Leaflet/0.2.6/oms.js 版本。 无论如何,我们随后为解决上述问题所做的努力似乎确实在一定程度上解决了 zIndex,但并未克服与 OMS spiderfy 相关的堆叠问题。 决定调整我的标记选项以保留原始 zIndexOffset 设置 遗憾的是,尽管它似乎保留了标记的 zIndex 值,但在 unspiderfy/spiderfy 之前和之后,最终标记仍保持打开状态top 不是之前的那个,也不是提供的 zIndex 计数最高的那个(spiderfy 的 addListener)。 我在以下 jsfiddle 上重新创建了我们网站功能的精简版本,控制台记录了 spiderfy 前后初始标记的 zIndexes:
蜘蛛侠 UnSpiderfy
最终标记元素 据我所知,无法弄清楚具有先前较低 zIndex 的第 3 项(与第 2 项相比)如何最终排在首位 新的 z-index: 5218 恰好是 与 item 2 相同的新 z-index 值!markerWeekEnd = L.marker([lat, lon], { %options% });
markerWeekEnd.addTo(map);
weekend.addLayer(markerWeekEnd);
oms.addMarker(markerWeekEnd);
问题
我们尝试了什么
L.marker([lat, lon], {... zIndexOffset: mIndex, mDay: mDay}) 并查看使用保留值重置 zIndex 是否可以解决我的堆叠问题// for both spiderfy & unspiderfy
oms.addListener('spiderfy', function(markers) {
markers.forEach(function(marker) { zIndexCheck(marker); });
}
function zIndexCheck(marker){
L.setOptions( marker, { zIndex: mIndex, zIndexOffset: mIndex });
}
Marker Title: 'London Socials #1 (1/2)' startTime:ENDED: 1st Feb zIndex:-10
Marker Title: 'London Socials #2 (14/2)' startTime:Fri 14th Feb zIndex:5054 (Active)
Marker Title: 'London Socials #3 (28/2)' startTime:Fri 28th Feb zIndex:2026
#2 最初是活动项目[London Socials #1 (1/2)] index:990
[London Socials #2 (14/2)] index:5027
[London Socials #3 (28/2)] index:5013
[London Socials #1 (1/2)] index:990
[London Socials #2 (14/2)] index:5027
[London Socials #3 (28/2)] index:5013 (Active)
#3 现在是 spiderfy/unspiderfy 之后的活动项目(请参阅下面的最终元素)<div class="awesome-marker-icon-blue awesome-marker leaflet-zoom-animated leaflet-interactive"
title="London Socials #2 (14/2)" tabindex="0" style="margin-left: -17px; margin-top: -42px; width: 35px; height: 45px; transform: translate3d(83px, 218px, 0px);
z-index: 5218;"><i class=" fa fa-moon icon-white"></i></div>
<div class="awesome-marker-icon-blue awesome-marker leaflet-zoom-animated leaflet-interactive"
title="London Socials #3 (28/2)" tabindex="0" style="margin-left: -17px; margin-top: -42px; width: 35px; height: 45px; transform: translate3d(83px, 218px, 0px);
z-index: 5218;"><i class=" fa fa-moon icon-white"></i></div>
我将此作为 gitHub 上的错误发布,但现在我不太确定这是 OMS-Leaflet 的错误。所以我也在这里发帖。这是显示问题的小提琴:
https://jsfiddle.net/magicmb/17j2z4gy/
环境特定版本: Leaflet.js (1.6.0), Leaflet.awesome-markers (2.0.2), OverlappingMarkerSpiderfier-Leaflet (0.2.6)
【问题讨论】:
标签: leaflet maps oms markerspiderfier