当前位置: 首页 > 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事件

http://www.xdnf.cn/news/277327.html

相关文章:

  • 消息队列MQ
  • OpenStack HA高可用集群Train版-0集群环境准备
  • postgresql数据库基本操作
  • 基于开源AI大模型AI智能名片S2B2C商城小程序源码的私域流量稳定性构建研究
  • 个性化推荐:大数据引领电子商务精准营销新时代
  • NPP库中libnppig模块介绍
  • 大连理工大学选修课——图形学:第六章 三维变换和三维观察
  • Langchain4j基于ElasticSearch的向量数据库配置后,启动报错
  • RockyLinux9.3-24小时制
  • HTML02:网页基本信息
  • 视频编解码学习三之显示器
  • python的优势和劣势
  • 详解如何压测RocketMQ
  • 关于MindVault项目测试报告
  • 什么是DGI数据治理框架?
  • ubuntu修改时区和设置24小时格式时间
  • 哈夫曼树和哈夫曼编码
  • 普通函数调用和虚函数调用
  • 性能优化实践:渲染性能优化
  • OpenCv实战笔记(2)基于opencv和qt对图像进行灰度化 → 降噪 → 边缘检测预处理及显示
  • Prompt多版本测试指南:如何科学评估不同提示词的效果
  • Coco AI 入驻 GitCode:打破数据孤岛,解锁智能协作新可能
  • Vue 3 中 ref 的使用例子
  • 从实列中学习linux shell12 通过Shell脚本来优化MySQL数据库性能,特别是慢SQL跟踪和索引优化
  • 从入门到登峰-嵌入式Tracker定位算法全景之旅 Part 4 |IMU 死算与校正:惯性导航在资源受限环境的落地
  • Javase 基础加强 —— 04 集合2.0
  • Linux:web服务
  • 第14章:阿凡达的复兴与潘多拉的新生
  • 三、A2DP协议详解
  • 高可用架构设计——服务接口高可用