如何在传单地图上突出显示所选行?
我想绘制一张地图上绘制的路线很少。
我想要一个带有数字1,..,n的保管箱
选择保管箱中的项目时,相应的路线会在地图上突出显示。
我已经开始使用“传单”了。
如何突出显示一条线? 我使用过“重量”,但它更像是一条线的边界。 我希望看到这条线变得越来越大胆。
这是我的代码:
document.onload = loadMap(); function loadMap() { var map = L.map('map').setView([37.8, -96], 4); L.tileLayer('https://api.tiles.mapbox.com/v4/{id}/{z}/{x}/{y}.png?access_token={accessToken}', { attribution: 'Map data © OpenStreetMap contributors,CC-BY-SA, Imagery © Mapbox', maxZoom: 18, id: 'mapbox.streets', accessToken: 'pk.eyJ1IjoiZW======V6ZTdlb2V5cyJ9.3HqHQ4BMRvSPaYe8ToA7YQ' }).addTo(map); var marker = L.marker([51.5, -0.09]).addTo(map); var myLines = [{ "type": "LineString", "properties": { "id": "1" } "coordinates": [ [-100, 40], [-105, 45], [-110, 55] ] }, { "type": "LineString", "properties": { "id": "2" } "coordinates": [ [-105, 40], [-110, 45], [-115, 55] ] }]; var myLayer = L.geoJson().addTo(map); myLayer.addData(myLines); geojson = L.geoJson(myLines, { onEachFeature: onEachFeature }).addTo(map); } function highlightFeature(e) { var layer = e.target; layer layer.setStyle({ weight: 25, color: '#ff3300', dashArray: '', fillOpacity: 0.7 }); if (!L.Browser.ie && !L.Browser.opera) { layer.bringToFront(); } } function resetHighlight(e) { geojson.resetStyle(e.target); layer.setStyle({ weight: 5, color: '#0000ff', dashArray: '', fillOpacity: 0.7 }); } function onEachFeature(feature, layer) { layer.on({ mouseover: highlightFeature, mouseout: resetHighlight, // click: zoomToFeature }); } $('select[name="dropdown"]').change(function() { var item = $(this).val(); alert("call the do something function on option " + item); //how to make the chosen line highlighted ?? });
weight
属性不会更改线条边框,它会以像素为单位更改笔触宽度。 你得到边框效果是因为你要添加两次线条。 这里:
myLayer.addData(myLines);
和这里:
geojson = L.geoJson(myLines, { onEachFeature: onEachFeature }).addTo(map);
当多边形hover时,顶层的样式会发生变化,但由于您要添加两次折线,因此仍然会保留下层的折线。 如此处所述,默认笔划不透明度为0.5 (顺便说一下,对于折线,设置fillOpacity
是多余的,用于更改笔触 – 不opacity
不opacity
属性)。 顶层的折线变为半透明,这就产生了边框效果的错觉。
所以,你可以删除这行myLayer.addData(myLines);
并获得预期的结果。
我做了一个小提琴 ,你的例子得到纠正。