OpenLayers—识别要素(鼠标移动高亮效果)

本文介绍了在OpenLayers中使用两种方法实现地图交互:一种是通过`Select`交互事件进行要素选择,另一种是利用鼠标移动触发`featureHover`函数实现要素高亮。作者详细展示了关键代码和应用场景。
摘要由CSDN通过智能技术生成

两种思路

1、通过OpenLayers自身交互事件

2、通过地图鼠标移动事件触发选择要素

第一种:

              const select = new ol.interaction.Select({
                    condition: ol.events.condition.pointerMove, //以某种状态选择要素,关键代码,默认点击选择要素
                    hitTolerance: 5 //设置容差
                });
                map.addInteraction(select);

也可以利用选择事件做一些操作

               select.on('select', function (e) {
                    if (e.selected.length > 0) { console.log('选中:', e.selected) }
                    else { console.log('取消选中!') }
                })

第二种:

 // 识别
        const hoverStyle = new ol.style.Style({
            fill: new ol.style.Fill({
                color: 'green'
            }),
            stroke: new ol.style.Stroke({
                color: 'black',
                width: 5
            }),
            image: new ol.style.Circle({
                radius: 10,
                stroke: new ol.style.Stroke({
                    color: 'rgba(0,0,0,0.7)',
                }),
                fill: new ol.style.Fill({
                    color: 'green'
                })
            }),
        })
        let hoverFeature;
        function featureHover(e) {
            let features = map.getFeaturesAtPixel(e.pixel, { hitTolerance: 3 }) //getFeaturesAtPixel()获取与视口像素相交的所有元素,返回类型为数组类型
            if (features) {
                if (hoverFeature) {
                    hoverFeature.setStyle(undefined);
                    hoverFeature = null
                }
                hoverFeature = features[0];
                console.log(hoverFeature);
                hoverFeature.setStyle(hoverStyle2);
            }
            else {
                if (hoverFeature) {
                    hoverFeature.setStyle(undefined);
                }
            }
        }
        map.on('pointermove', featureHover);

如有错误欢迎指正!!!

  • 8
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

giser__Z

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值