看过的知识不等于学会。唯有用心总结、系统记录,并通过温故知新反复实践,才能真正掌握一二
作为一名摸爬滚打三年的前端开发,开源社区给了我饭碗,我也将所学的知识体系回馈给大家,助你少走弯路!
OpenLayers、Leaflet 快速入门 ,每周保持更新 2 个案例
Cesium 快速入门,每周保持更新 4 个案例

OpenLayers 快速入门(一)Map对象
OpenLayers 快速入门(二)Layer 对象
OpenLayers 快速入门(三)Source 对象补充
OpenLayers 快速入门(四)View 对象
OpenLayers 快速入门(五)Controls 对象
OpenLayers 快速入门(六)Interaction 对象
OpenLayers 快速入门(七)矢量数据
OpenLayers 快速入门(八)事件系统
OpenLayers 快速入门(九)Extent 介绍
OpenLayers 快速入门(十)常用 API 补充

事件系统

事件系统是框架的核心部分,允许开发者监听和响应地图、图层、交互以及各种对象的状态变化。通过on方法订阅事件,通过un方法取消订阅,同时支持一次性事件监听(once)和自定义事件的能力。

// 监听事件
map.on("click", (e) => {});// 取消监听
map.un("click", (e) => {});// 一次性时间
map.once("click", (e) => {});// 自定义事件
map.on("customEvent", (e) => {});

Observable 对象

OpenLayers 中所有可触发事件的对象都继承自 ol/Observable 基类:

  • Map
  • View
  • Layer
  • Source
  • Interaction
  • Control
  • Feature
  • Overlay

通用事件:

  • change:通用变更事件
  • propertychange:属性发生变化时触发
  • error:通用错误事件,当发生错误时触发

Map 事件

  • click:点击事件
  • singleclick(最常用):真正的单击,没有拖动,也没有双击,此事件延迟 250 毫秒以确保它不是双击
  • dblclick:双击事件
  • loadend:加载额外地图数据完成时触发
  • loadstart:当加载额外地图数据(tiles、images,、features)开始时触发
  • moveend:地图移动后触发
  • movestart:地图开始移动时触发
  • pointerdrag: 指针拖动时触发
  • pointermove:指针移动时触发。注意在触摸设备上,这是在地图平移时触发的,因此与 mousemove 不同
  • postcompose:在图层组合完成后触发
  • postrender:在地图帧渲染完成后触发
  • precompose:在图层组合之前触发
  • rendercomplete:当渲染完成时触发

View

  • change:center:视图中心位置改变时触发
  • change:resolution:视图分辨率改变时触发
  • change:rotation:视图旋转角度改变时触发

Layer 事件

  • change:extent:图层范围改变时触发
  • change:maxResolution:最大分辨率改变时触发
  • change:minResolution:最小分辨率改变时触发
  • maxZoom:最大缩放级别改变时触发
  • minZoom:最小缩放级别改变时触发
  • change:source:图层源改变时触发
  • change:zIndex:图层 zIndex 改变时触发
  • change:visible:可见性改变时触发
  • change:opacity:图层透明度改变时触发

Source 事件

VectorSource

  • featureloadend:要素加载完成时触发
  • featureloaderror:要素加载错误时触发
  • featureloadstart:要素加载开始时触发
  • removefeature:要素移除时触发

ImageSource

  • imageloadend:图像加载完成时触发
  • imageloaderror:图像加载错误时触发
  • imageloadstart:图像加载开始时触发

TileSource

  • tileloadend:瓦片加载完成时触发
  • tileloaderror:瓦片加载错误时触发
  • tileloadstart:瓦片加载开始时触发

Overlay 事件

  • change:element:元素变更事件
  • change:position:位置变更事件
  • change:positioning:定位变更事件
  • change:offset:偏移量变更事件
  • change:map:地图变更事件

自定义事件

一、直接使用事件系统

// 添加自定义事件
map.on("customEvent", (event) => {console.log("自定义事件触发:", event.detail);
});// 两秒后触发自定义事件
setTimeout(() => {map.dispatchEvent({type: "customEvent",target: map,detail: { message: "Hello from custom event!" },});
}, 2000);

二、自定义 Observable 类

import Observable from "ol/Observable";
import Event from "ol/events/Event";// 自定义事件类
class StatusUpdateEvent extends Event {constructor(status) {super("statusupdate");this.status = status;this.timestamp = new Date();}
}// 自定义可观察对象
class CustomLayer extends Observable {constructor() {super();this.status = "idle";}startProcessing() {this.status = "processing";this.dispatchEvent(new StatusUpdateEvent(this.status));}completeProcessing() {this.status = "completed";this.dispatchEvent(new StatusUpdateEvent(this.status));}
}// 使用自定义层
const layer = new CustomLayer();
layer.on("statusupdate", (event) => {console.log(`状态更新: ${event.status} at ${event.timestamp}`);
});// 触发事件
layer.startProcessing();
setTimeout(() => layer.completeProcessing(), 2000);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/90207.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/90207.shtml
英文地址,请注明出处:http://en.pswp.cn/web/90207.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Linux | 网络】应用层(HTTPS)

目录一、HTTPS的概念二、准备概念2.1 什么是加密和解密2.2 为什么要加密2.3 常见的加密方式2.3.1 对称加密2.3.1 非对称加密2.4 数据摘要&&数据指纹三、HTTPS理解过程3.1 只使用对称加密3.2 只使用非对称加密3.3 双方都使用非对称加密3.4 对称加密 非对称加密3.5 中间…

GRE协议

一、实验拓扑二、实验配置1、静态路由实现GRERT1配置:RT1(config)# int fa1/0RT1(config-if)# ip add 192.168.20.1 255.255.255.0RT1(config-if)# no shutdownRT1(config)# int fa0/0RT1(config-if)# ip add 172.1.1.2 255.255.255.0RT1(config-if)# no shutdownRT…

JDialong弹窗

public class DialogDemo extends JFrame {public DialogDemo(){this.setVisible(true);this.setSize(700,500);this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);//JFrame 放东西,容器Container contentPane this.getContentPane();//绝对布局conte…

tlias智能学习辅助系统--违纪处理(实战)

目录 1.StudentController.java 2.interface StudentService 3.StudentServiceImpl.java 4.interface StudentMapper 1.StudentController.java // 违纪处理PutMapping("/violation/{id}/{score}")Operation(summary "违纪处理")public Result violat…

传统RNN模型笔记:输入数据长度变化的结构解析

一、案例背景 本案例通过PyTorch的nn.RNN构建单隐藏层RNN模型,重点展示RNN对变长序列数据的处理能力(序列长度从1变为20),帮助理解RNN的输入输出逻辑。 二、核心代码与结构拆解 def dm_rnn_for_sequencelen():# 1. 定义RNN模型rnn…

OpenLayers 快速入门(四)View 对象

看过的知识不等于学会。唯有用心总结、系统记录,并通过温故知新反复实践,才能真正掌握一二 作为一名摸爬滚打三年的前端开发,开源社区给了我饭碗,我也将所学的知识体系回馈给大家,助你少走弯路! OpenLayers…

测试左移方法论

测试左移(Shift-Left Testing)​是一种软件测试方法论,核心思想是将测试活动从传统的开发后期(如系统测试、验收测试阶段)提前到软件生命周期的更早期阶段(如需求分析、设计、编码阶段)&#xf…

OpenCV(01)基本图像操作、绘制,读取视频

图像基础 import cv2 as cv#读取图像 cv.imread(path,读取方式)默认读为彩色图像 #cv.imread(path) cat cv.imread(E:\hqyj\code\opencv\images\\face.png)#显示图像 cv.imshow(window,img) cv.imshow(myimg,cat)print(cat) print(cat.shape) #(h,w,c) 元组(1,1) print(cat…

biji 1

1.应用层:为应用程序提供网络服务。2.表示层:定义数据的格式,对数据进行压缩、解压缩、加密、解密、编码、解码。3.会话层:对通信双方间的会话进行建立、维护、拆除-----session id---区分同一应用程序的不同进程4.传输层&#x…

mongodb的备份和还原(精简)

1 官网下载对应版本msi2 运行msi mongodb-database-tools-windows-x86_64-100.12.2.msi3 将安装地址加到环境变量 C:\Program Files\MongoDB\Tools\100\bin4 查看version mongodump --version mongorestore --version5 运行 备份命令 mongodump --host 127.0.0.1 --db dbname--…

Mac安装Typescript报错

目录 Mac上安装Typescript报错: 原因分析 1. 默认 npm 全局安装目录的权限问题 2. Node.js 的安装方式 如何解决?(无需每次用 `sudo`) 方法 1:修改 npm 全局目录的权限(推荐) 方法 2:配置 npm 使用用户级目录 方法 3:使用 `nvm` 管理 Node.js(最推荐) 为什么建议避免…

spring-cloud概述

单体架构 把业务的所有功能实现都打包在一个war包或者jar包,这种方式就成为单体架构。 比如Spring课程中的博客系统,前端后端数据库实现,都在一个项目中,这种架构就称为单体架构. 举个例子: 比如在电商系统中,我们…

android ROOM kotlin官方文档完全学习

android ROOM kotlin官方文档完全学习2.6 使用 Room 将数据保存到本地数据库 | Android Developers (google.cn) 一、简介 1.1 引入 dependencies {def room_version "2.6.1"implementation "androidx.room:room-runtime:$room_version"//如下三选一a…

DOM编程全解析:操作、事件与存储实战指南

引言:DOM——JavaScript与网页交互的桥梁 DOM(文档对象模型) 是JavaScript操作HTML/XML文档的接口,它将网页文档抽象为一个树形结构,允许开发者通过API动态修改文档的内容、结构和样式。无论是实现动态交互&#xff0…

Ansible命令

Ansible命令 ansible 常用命令 /usr/bin/ansible   #Ansibe AD-Hoc 临时命令执行工具,常用于临时命令的执行 /usr/bin/ansible-doc    #Ansible 模块功能查看工具 /usr/bin/ansible-galaxy   #下载/上传优秀代码或Roles模块 的官网平台,基于网…

SY6974芯片添加enable充电控制节点

1. 需求描述项目背景:基于 Qualcomm MDM9x07 平台的 4G MIFI 产品,使用 Silergy 公司的 SY6974 充电 IC需求内容: 在环境 /sys/class/power_supply/sy6794/enable 下增加一个 sysfs 节点,用于控制是否允许充电:cat /sy…

趣玩-Ollama-Llm-Chatrbot

软件说明 这个软件本人是从零开始实现的聊天机器人。基于Ollama(PythonApi ) Pyside,实现了聊天机器的基本功能,还有一些个性化的功能比如模型管理,敏感词过滤,个性化主题设置,头像设置等功能。…

在mac 上zsh 如何安装最新的 go 工具

文章目录方法一:使用 Homebrew(推荐)方法二:从官网下载安装包方法三:使用 g(Go 版本管理器)方法四:使用 gvm(Go Version Manager)验证安装和配置常用 Go 工具…

(十九)深入了解 AVFoundation-编辑:使用 AVMutableVideoComposition 实现视频加水印与图层合成(上)——理论篇

一、引言在短视频、Vlog、剪辑工具日益流行的今天,给视频添加 Logo、水印、时间戳或动态贴纸,已经成为非常常见的功能需求。这类效果看似简单,其实背后都涉及到“图层合成”的处理:如何将一个静态或动态的图层(如文字、…

Android NDK与JNI深度解析

核心概念定义:NDK (Native Development Kit): 是什么: 一套由 Google 提供的工具集合。目的: 允许 Android 开发者使用 C 和 C 等原生(Native)语言来实现应用程序的部分功能。包含内容: 交叉编译器&#xf…