我在使用Leaflet的地图上显示了一些步行轨迹。这些路径中的某些路径彼此交叉,因为它们是路径中某些部分的同一步行路径的延伸。因此,当我有两条可能共享5公里长的轨道时,这使用户很难确定轨道的起点和终点,因此您最终在地图上显示一条黑线,然后单击它们确切的区域他们只是在相同的坐标上看到绘制在顶部的多段线的弹出详细信息。理想情况下,我认为最好的用户界面是在地图上每次步行仅显示图钉图标,然后单击图钉然后显示轨迹并且只有一个音轨。然后,如果我单击任何其他音轨的大头针,它就会隐藏以前的音轨,现在显示新音轨。
有没有可以在Leaflet中执行此操作的方法?
或者,如果不可能的话,我想通过使它更粗的权重线来突出显示所选的地图。我已经尝试过了,但是我遇到的问题是,对于更长的步行路程,它并不会突出显示整个轨道,而只是突出显示了单击的geojson部分。我的geojson用于长途行走是由线串的功能集合组成的。因此,在我的某些散步中,geojson在FeatureCollection项目中具有一系列线串项目。如果有一种方法可以突出显示整个要素集合,而不是仅突出集合中的一个线串,那么这也是一个很好的解决方案。
由于我是制图和传单的新手,因此非常感谢任何帮助。 干杯 克雷格
这就是我用来突出显示该行的内容:
function onEachParkFeature(feature, layer) {
layer.on({
mouseover: highlightFeature,
mouseout: resetHighlight
});
}
function highlightFeature(e) {
var layer = e.target;
layer.setStyle({
weight: 3,
opacity: 1,
fillOpacity: 0.0
});
if (!L.Browser.ie && !L.Browser.opera && !L.Browser.edge) {
layer.bringToFront();
}
}
我的将每次步行都添加到地图上的代码:
sb.Append(
"L.geoJSON(" +
item["LocationGeoJSON"].ToString() +
", {style: lineStyle, pane: 'walksPane', onEachFeature: onEachParkFeature}" +
', markerOptions).addTo(map).bindPopup("' +
walkInfo +
'").openPopup();' +
System.Environment.NewLine
);