1

我有一个函数可以在该图像之上添加一个 imageOverlay 和一个半透明的 Rectangle(以便为图像着色,并在其周围绘制一条关键线)。

activeUserImage = new L.imageOverlay(imageUrl, imageBounds).addTo(map);
activeUserTile = new L.rectangle(imageBounds, {stroke: true, color: "#ffffff", opacity:1, weight: 1, fillColor: "#003572", fillOpacity: 0.7, clickable:true}).addTo(map);

这很好用,但是我想删除图像和矩形:

map.removeLayer(activeUserImage);
map.removeLayer(activeUserTile);

这似乎运作良好......

但是,当我尝试添加第二个图像和矩形(使用相同的函数)时,矩形 SVG 正在图像下方呈现,所以我看不到彩色叠加层。

这似乎是因为该元素从第一次创建中被遗留下来,然后当第二次添加图像时,它出现在 SVG 前面。

问:

  1. 这是一个错误吗?SVG元素是否也应该被清除?
  2. 我可以在创建时调整图像或 SVG 的 z-index 吗?
  3. 我应该在图像的不同层中包含矩形吗?如何?

非常感谢

4

2 回答 2

3

好的,所以 Leaflet bringToFront() 方法不起作用,但是我使用了一些 JQuery 来强制使用相同的方法。

svgObj = $('.leaflet-overlay-pane svg');
svgObj.css('z-index', 9999);

这有效,但仍然感觉像一个黑客......但是如果(?)LEaflet中有一个错误,那么也许这将不得不这样做???

有更好的想法吗?

于 2013-06-10T19:24:07.010 回答
1

bringToFront() 函数允许您将图层带到顶部。

docs中搜索它。

于 2013-06-10T17:17:03.047 回答