交互式等值线图 - 突出显示 - getcolor功能

时间:2015-01-27 10:59:43

标签: leaflet highlight interactive

我正在尝试创建一个自行车路线的地图,它将从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

谢谢!

1 个答案:

答案 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
    });
}

但是既然你没有改变颜色(和不透明度),你可以将它们全部留下来,这也解决了这个问题:)