Javascript 使传单画布层显示在顶部的变通方法?

Javascript 使传单画布层显示在顶部的变通方法?,javascript,leaflet,Javascript,Leaflet,我试图在一层的顶部显示传单画布层。然而,传单中似乎有一个bug,无法使用bringToBack()/bringToFront()方法来完成 var canvasTiles = L.tileLayer.canvas(); 我尝试在drawTile()方法的末尾调用以下函数,试图将画布层放在顶部,但它不起作用 var interiorMaskLayer = null; var exteriorMaskLayer = null; function addMaskToBack(){ ins

我试图在一层的顶部显示传单画布层。然而,传单中似乎有一个bug,无法使用
bringToBack()
/
bringToFront()
方法来完成

var canvasTiles = L.tileLayer.canvas();

我尝试在
drawTile()
方法的末尾调用以下函数,试图将画布层放在顶部,但它不起作用

var interiorMaskLayer = null;
var exteriorMaskLayer = null;

function addMaskToBack(){
    insertAtTheBottom = true;
    if (interiorMaskLayer && exteriorMaskLayer){        

        map.removeLayer(interiorMaskLayer);
        map.removeLayer(exteriorMaskLayer);
        }   
    interiorMaskLayer = L.geoJson(interiorMaskGeojsonPoly, {style: interiorStyle})
    map.addLayer(interiorMaskLayer, insertAtTheBottom);
    exteriorMaskLayer = L.geoJson(exteriorMaskGeojsonPoly, {style: exteriorStyle});
    map.addLayer(exteriorMaskLayer, insertAtTheBottom);
} 
是否有一种变通方法可以让画布层显示在顶部


使用传单-传单-v0.5.1-0-gc1d410f.zip

的问题是,它们位于不同的
DIV
元素中,这些元素具有不同的z索引,因此,无论您给子节点指定了什么z索引,它都不会出现在其同级节点的前面或后面

以下是我所做的,作为一个糟糕但可行的解决方案:

对传单源代码进行以下更改(在版本5.1文件之后),将覆盖窗格移动到平铺窗格:

panes.overlayPane=this.\u createPane('lapper-overlay-pane',this.tilePane)

仅从平铺窗格中删除平铺:

:

并在移动平铺时移动覆盖窗格(缩放时):

并在前面添加这一行:
this.\u tilePane.appendChild(this.getPanes().overlypane)

这些更改将画布添加到平铺窗格中,使它们成为同级,以便它们的z索引将影响它们彼此之间的位置。因此,您需要删除平铺层,而不是清除平铺窗格(
this.\u tileBg.innerHTML='';
)。此外,传单会交替选择哪个窗格是平铺窗格,以便它可以执行缩放动画,因此您需要将覆盖窗格移动到平铺窗格

此修复正在进行中

希望这有帮助

_clearTileBg: function () {
        if (!this._animatingZoom && !this.touchZoom._zooming) {
            /* this._tileBg.innerHTML = ''; */
            var the_tiles = this._tileBg.getElementsByClassName('leaflet-layer');
            var the_count = the_tiles.length;
            while(the_count>0){
                var child = the_tiles[the_count-1];
                child.parentNode.removeChild(child);
                the_count--;
            }
        }
    }