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

两种思路

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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
OpenLayers是一个功能强大的JavaScript库,用于创建互动地图应用程序。其中一个常用的功能是在地图上使用鼠标移动提示。 首先,要实现这个功能,你需要引入OpenLayers库,并创建一个地图实例。然后,你可以通过添加一个称为"mousemove"的事件监听器来获取鼠标移动的位置。当鼠标移动时,该监听器将触发一个自定义函数。 在该函数内部,你可以通过获取鼠标位置的经纬度坐标来确定鼠标所在的地图位置。然后,你可以使用该位置信息来查询特定区域的数据,例如地图上的要素或矢量图层。 一种常见的做法是将要素的属性作为提示信息显示在鼠标移动的位置。为此,你可以使用OpenLayers的"getFeatureAtPixel"方法来获取鼠标位置下的要素。 一旦获得了要素,你可以从要素的属性中提取数据,并通过一个弹出框、标签或其他方式将其显示在地图上的特定位置。你可以使用HTML、CSS和JavaScript等技术来自定义提示信息的样式和内容。 此外,你还可以根据需要添加自定义功能,例如根据鼠标位置实时显示坐标、测量距离或面积等。OpenLayers提供了各种交互工具和控件,可以帮助你实现这些功能。 综上所述,OpenLayers提供了丰富的功能来实现鼠标移动提示。通过监听鼠标移动事件、查询要素和自定义样式,你可以轻松地在地图应用程序中实现这一功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

giser__Z

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

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

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

打赏作者

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

抵扣说明:

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

余额充值