OpenLayers笔记3:地图事件监听概述及部分简单应用

地图事件监听概述

地图能够监听的事件主要包括:

1.鼠标触发事件

click:鼠标单击地图触发的事件(鼠标单击多少次地图,该事件就触发多少次);
singleclick:鼠标单击地图触发的事件(鼠标若在250ms内连续单击地图,则不会触发该事件);
dbclick:鼠标双击地图触发的事件(鼠标在250ms内单击两次地图);
pointermove:鼠标指针在地图上移动触发的事件;
pointerdrag:鼠标按下拖动地图触发的事件;

2.地图移动事件

movestart:地图开始移动时触发的事件(包括平移和缩放);
moveend:地图结束移动时触发的事件(包括平移和缩放);

3.图层渲染事件

precompose:一个图层渲染前触发的事件;
postcompose:一个图层渲染时触发的事件;
postrender:一个图层渲染完成后触发的事件;
(上述三个渲染事件的解释是我测试后得出的,与官方API的解释有所出入,如若有误还望指正。)
rendercomplete:所有的渲染都完成后触发的事件(所有的图层、瓦片都完成了在当前视图的加载);

4.change事件

change:地图出现改变时触发的事件(改变可以是任何地图事件);
change:layerGroup:地图的图层发生改变时触发的事件(例如图层的增加、删除);
change:size:可供地图显示的窗口大小发生改变时触发的事件(例如将浏览器窗口缩小化);
change:target:地图所在div块发生改变时触发的事件(例如切换地图的显示位置);
change:view:地图视图发生改变时触发的事件(例如视图中心的变化);

5.其它事件

propertychange:地图属性更改时触发的事件;
error:地图运行发生错误时触发事件;

地图事件监听的部分简单应用

监听鼠标触发获取地图坐标

map.on('click', function (evt) {
    var pixel = map.getEventPixel(evt.originalEvent);//获取点击的像素点
    var coordinate = map.getCoordinateFromPixel(pixel);//获取像素点的坐标
    alert(coordinate);
});

在这里插入图片描述

监听指针移动获取指针位置矢量要素的属性值

map.on('pointermove', function (evt) {
    var pixel = map.getEventPixel(evt.originalEvent);//获取指针所在的像素点
    var feature;
    if (map.hasFeatureAtPixel(pixel))//判断像素点的位置是否有矢量要素
    {
        //获取位于像素点位置的矢量要素
        feature = map.forEachFeatureAtPixel(pixel, function (feature, layer) {
            return feature;
        });
        console.log(feature.get("name"))//获取矢量要素的某个属性值并打印
    }
});

在这里插入图片描述

监听地图移动实现图层的动态显隐

map.on("moveend",function(evt){
    var zoom = map.getView().getZoom();//获取地图视图的缩放级别
    if (zoom >= 12) {
        layer1.setVisible(false);//设置图层可见性
        layer2.setVisible(true);
    } else {
        layer1.setVisible(true);
        layer2.setVisible(false);
    }
});  
  • 6
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值