欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 时评 > OpenLayers:侦听缩放级别的变化

OpenLayers:侦听缩放级别的变化

2025/5/5 14:05:53 来源:https://blog.csdn.net/m0_52912501/article/details/147702884  浏览:    关键词:OpenLayers:侦听缩放级别的变化

在实际开发中我们常常需要根据不同的缩放级别设置不同的展示效果或者执行不同的操作,因此侦听缩放级别的变化就很重要。想要侦听变化就需要依赖于OpenLayers中的事件系统,下面我将介绍两个相关的事件。

一、地图事件 moveend

1.介绍

在地图的移动结束后就会触发 地图的moveend 事件 (移动结束事件),而缩放级别的变化也是与地图移动相绑定的,因此在我们进行了缩放地图等操作后,地图的缩放级别就会发生变化,同时也会触发moveend事件。

2.使用

  //侦听zoom的变化map.on("moveend", () => {const view = map.getView();const zoom = view.getZoom();console.log("moveend:" + zoom);});

movend事件

 

二、视图事件 change:resolution

1.介绍

moveend 事件只能说是间接的反映 zoom 的变化,有一个直接反映 zoom 变化的事件,就是视图的change:resolution(分辨率变化事件) 。这个事件会在视图的分辨率发生变化的时候触发。

为什么OpenLayers中没有change:zoom事件呢? 又为什么我们可以用 change:resolution事件来替代change:zoom事件呢? 这主要是因为在OpenLayers的视图中并不会存储 zoom 只会存储分辨率,zoom 都是根据分辨率换算而来,在视图中会存储了一个列表记录了每个 zoom 级别所对应的分辨率。因此 zoom 与分辨率是直接相关的,我们就可以把 change:resolution事件 近似的看做 change:zoom事件。

相比与moveend 事件,change:resolution事件只会在地图缩放的时候触发,地图平移或旋转时不会触发。但是每次缩放的时候change:resolution事件会多次触发(因为一次缩放操作会对应多次的分辨率变化),而moveend 事件在同样的情况下则只会触发一次。

2.使用

  //侦听zoom的变化map.getView().on("change:resolution", () => {const zoom = map.getView().getZoom();const resolution = map.getView().getResolution();console.log("zoom:" + zoom, "resolution:" + resolution);});

changeRelution事件

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词