我正在尝试创建一个自行车路线的地图,它将从geojson文件的属性中获取颜色。它基于Interactive Choropleth Map。我现在面临的问题是突出显示。这部分代码在geojson属性中检查路由的颜色:
function getColor(d) {
return d == 'red' ? 'red' :
d == 'blue' ? 'blue' :
d == 'green' ? 'green' :
d == 'black' ? 'black' :
d == 'yellow' ? 'yellow' :
'orange';
}
function style(feature) {
return {
weight: 2,
opacity: 1,
color: getColor(feature.properties.colour),
dashArray: '3',
fillOpacity: 0.7,
};
}
它工作正常但是当我尝试在突出显示时使用相同的功能“获取颜色”:
function highlightFeature(e) {
var layer = e.target;
layer.setStyle({
weight: 5,
color: getColor(feature.properties.colour),
dashArray: '',
fillOpacity: 0.7
});
它没有突出显示geojson属性的颜色。这可能是一个小问题,但我还在学习,我不明白。有人可以解释一下并指出解决方案吗?非常感谢! 这是一个有效的例子(当然还没有完全正常工作,因为我还在学习):
http://members.upcpoczta.pl/w.racek/mapa.html
谢谢!
答案 0 :(得分:0)
在highlightFeature
方法中,您使用的setStyle
方法引用了feature
并且不存在的方法。该功能在e.target.feature
中定义。所以这会奏效:
function highlightFeature(e) {
e.target.setStyle({
weight: 5,
color: getColor(e.target.feature.properties.colour),
dashArray: '',
fillOpacity: 0.7
});
}
但是既然你没有改变颜色(和不透明度),你可以将它们全部留下来,这也解决了这个问题:)