Javascript 传单z指数

Javascript 传单z指数,javascript,leaflet,mapbox,Javascript,Leaflet,Mapbox,我正在将一些谷歌地图代码移植到传单(实际上是Mapbox)。我在地图上有很多形状(如矩形、多边形)和标记,我需要随时手动调整它们的顺序,而不仅仅是在第一次添加它们时 在谷歌地图中有一种setZIndex方法,可以调整窗格中元素的顺序(形状总是在标记下方)。我怎样才能在传单上做到这一点?如果它在api中不可用,那么实现它的最佳方法是什么?请查看类中的选项zIndexOffset 您可以将函数绑定到layeradd事件,以单独设置每个标记的样式 myLayer.on('layeradd', func

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


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

请查看类中的选项
zIndexOffset

您可以将函数绑定到
layeradd
事件,以单独设置每个标记的样式

myLayer.on('layeradd', function (e) {
    var marker = e.layer;
    var zindex = 0;
    var feature = marker.feature;
    if (feature.geometry.type == 'Point') {
        marker.setStyle({
            'zIndexOffset': 3
        }
    });
});

目前在宣传单API中没有。幸运的是,若传单使用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);
    }
L.Path.prototype.setZIndex=函数(索引)
{
var obj=$(this.|容器| this._路径);
如果(!obj.length)返回;//画布上不支持
var parent=obj.parent();
对象数据('order',index).detach();
var lower=parent.children().filter(函数()
{
var order=$(this.data('order');
如果(订单==未定义)返回false;

返回顺序默认情况下,传单将形状(“覆盖”)和标记放置在不同的窗格中,具有不同的
z-index
值:

资料来源: