gpt4 book ai didi

javascript - 如何在传单 map 上突出显示选定的线?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:43:33 24 4
gpt4 key购买 nike

我想画一张 map ,上面只画了几条路线。

我想要一个带有数字 1,..,n 的保管箱

当下拉框中的元素被选中时,相应的路线会在 map 上高亮显示。

enter image description here

我已经开始使用“传单”了。

如何突出显示一行?我使用了“重量”,但它更像是一条线的边界。我希望这条线越来越粗。

enter image description here

这是我的代码:

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 &copy; <a href="http://openstreetmap.org">OpenStreetMap</a> contributors,<a href="http://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, Imagery © <a href="http://mapbox.com">Mapbox</a>',
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);

悬停多段线时,顶层的样式会发生变化,但由于您添加了两次多段线,因此仍会保留下层的多段线。正如描述的那样here ,默认笔划不透明度为 0.5(顺便说一下,设置 fillOpacity 对于折线来说是多余的,用于更改笔划不透明度 opacity 属性)。顶层的折线变为半透明,这就产生了边框效果的错觉。

因此,您只需删除此行 myLayer.addData(myLines); 即可获得预期结果。

我做了一个 fiddle ,您的示例已得到更正。

关于javascript - 如何在传单 map 上突出显示选定的线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35072598/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com