当前位置: 首页 > news >正文

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事件

相关文章:

  • Hotspot分析(1):单细胞转录组识别信息基因(和基因模块)
  • 使用nhdeep目录打印报表生成工具,生成归档文件目录打印文件
  • 34.多点求均值的模拟信号抗干扰算法使用注意事项
  • Java--0基础入门篇【15天】
  • Python 函数装饰器和闭包(变量作用域规则)
  • 南京优质的公司有哪些?
  • 2023年第十四届蓝桥杯省赛B组Java题解【简洁易懂】
  • Circular Plot系列(三):【视频教程】复现NCS图表之高大上的单细胞UMAP环形图
  • 编程速递-RAD Studio 12.3 Athens四月补丁:关注软件性能的开发者,安装此补丁十分必要
  • 可信执行环境(TEE):保障数据安全的核心技术
  • 5.4学习记录
  • 基于springboot3+mybatis整合,使用mybatisPlus插件自动完成简单的 增删改查操作
  • 2021年第十二届蓝桥杯省赛B组C++题解
  • 编程学习思考
  • vulkanscenegraph显示倾斜模型(6.4)-多线程下的记录与提交
  • Temp Mail 1.7.0 | 创建和管理临时邮箱,防止垃圾邮件骚扰,保护隐私安全
  • Javase 基础加强 —— 04 集合2.0
  • MIT 6.S081 2020 Lab2 system calls 个人全流程
  • 运维--计划任务
  • 深入理解Java垃圾回收机制
  • 韩国总统选举民调:共同民主党前党首李在明支持率超46%
  • 铁路五一假期运输旅客发送量累计超1亿人次,今日预计发送2110万人次
  • 厦大历史系教授林汀水辞世,曾参编《中国历史地图集》
  • 国防部新闻发言人就日本民用飞机侵闯中国钓鱼岛领空答记者问
  • 3477亿美元!伯克希尔一季度现金储备再创新高,担忧关税战不确定性影响
  • 三亚回应“买水果9斤变6斤”:反映属实,拟对流动摊贩罚款5万元