首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >onEachFeature中的GeoJSON方法

onEachFeature中的GeoJSON方法
EN

Stack Overflow用户
提问于 2018-07-25 16:05:58
回答 1查看 778关注 0票数 1

Vue2Leaflet是一个在Vue2框架中实现Leaflet的库;能够在地图上显示GeoJSON对象。

对于多个GeoJSON行,我希望有一个影响其他行的样式的鼠标单击事件(例如,它切换了一个selectedLineId变量)。我设法在鼠标悬停时更改了geojson线的样式;请参见此JSFiddle

核心是onEachFeature,它将鼠标悬停事件添加到每个功能上。但是我不知道如何在这里运行Vue方法;

代码语言:javascript
代码运行次数:0
运行
复制
function onEachFeature (feature, layer) {
    layer.on('mouseover', function (e) {
        e.target.setStyle({
            color: "#FF0000"
        });
    });
    layer.on('mouseout', function (e) {
        e.target.setStyle({
            color: "#000000"
        });
    });
}
EN

回答 1

Stack Overflow用户

发布于 2018-07-25 16:41:13

您可以将onEachFeature函数bind到您的Vue对象:

代码语言:javascript
代码运行次数:0
运行
复制
data() {
    return {
        // ...
        lines: {
            geojson: geojsondata,
            options: {
                onEachFeature: onEachFeature.bind(this),
                style: {
                    color: "#000000"
                }
            }
        }
    }
}

然后,onEachFeature中的this将引用您的Vue对象:

代码语言:javascript
代码运行次数:0
运行
复制
function onEachFeature (feature, layer) {
    var v = this;

    layer.on('mouseover', function (e) {
        // assuming you have a getColor method defined
        e.target.setStyle({
            color: v.getColor()
        });
    });
    layer.on('mouseout', function (e) {
        e.target.setStyle({
            color: "#000000"
        });
    });
}

这是一个更新的提琴:https://jsfiddle.net/qywaz1h8/96/

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51513848

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档