传单 z 指数

Seb*_*wak 6 javascript leaflet mapbox

我正在将一些 Google 地图代码移植到 Leaflet(实际上是 Mapbox)。我在地图上有很多形状(如矩形、多边形)和标记,我需要能够随时手动调整它们的顺序,而不仅仅是在第一次添加它们时。

在谷歌地图中,​​有一种setZIndex方法可以调整窗格内元素的顺序(形状始终位于标记下方)。我怎样才能在传单中做到这一点?如果 api 中不可用,那么实现它的最佳方法是什么?

Ste*_*EOX 9

默认情况下,Leaflet 将形状(“覆盖”)和标记放在不同的窗格中,并具有不同的z-index值:

传单文档/地图窗格

来源: https: //leafletjs.com/reference-1.5.0.html#map-pane


Seb*_*wak 4

目前它在 Leaflet API 中不可用。幸运的是,如果 Leaflet 使用 SVG,所有对象都是 DOM 元素,我们可以简单地更改它们的顺序。这是示例代码:

L.Path.prototype.setZIndex = function (index)
{
    var obj = $(this._container || this._path);
    if (!obj.length) return; // not supported on canvas
    var parent = obj.parent();
    obj.data('order', index).detach();

    var lower = parent.children().filter(function ()
    {
            var order = $(this).data('order');
            if (order == undefined) return false;
            return order <= index;
    });

    if (lower.length)
    {
            lower.last().after(obj);
    }
    else
    {
            parent.prepend(obj);
    }
Run Code Online (Sandbox Code Playgroud)

};