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