将leaflet.locate(蓝点)放在所有其他图层之上

时间:2015-09-10 23:47:49

标签: javascript leaflet gis

我使用leaflet.locate和传单路由机来显示我沿路线的位置。我的问题是,当我重新创建路线时,蓝色位置点位于由传单路由机器生成的路线下方。如何确保位置点位于路径图层上方?

以下代码似乎不起作用。

var myLocationControl = L.control.locate({follow: true, stopFollowingOnDrag: true, keepCurrentZoomLevel: true,
showPopup: true, remainActive: true,
strings: {
    title: "Track Location",
    metersUnit: "meters",
    feetUnit: "feet"
    outsideMapBoundsMsg: "You seem located outside the boundaries of the map" // default message for onLocationOutsideMapBounds
}, locateOptions: {enableHighAccuracy: true}}).addTo(map);

//Put on top
myLocationControl.setZIndexOffset(2000);

我也试过这个:

myLocationControl._circle.bringToFront();
myLocationControl._marker.bringToFront();

1 个答案:

答案 0 :(得分:0)

Leaflet.Locate使用L.Path绘制圆圈,而圆圈又使用SVG元素。 SVG元素没有z-index属性,因此,您无法使用setZIndex()setZIndexOffset()等方法。

我唯一能建议的是在添加所有路径图层后使用L.Path.bringToFront()方法。这是一个例子:

var locate = L.control.locate();

//later, after you add all the layers
locate._circle.bringToFront();
locate._marker.bringToFront();

或者您可以为每个添加的路线拨打bringToBack()