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

天地图编辑多边形和折线时,双击删除编辑点

天地图的编辑不支持删除编辑点的操作,于是研究写了一个。

// 使用 lodash 的防抖函数,防止双击时触发两次
const removeDotEventListener = debounce((e: T.MapEvent) => {// 获取被点击的目标// @ts-ignoreconst classList: DOMTokenList = e.originalEvent.target.classList// 线、面中编辑点会包含以下类名,包含则表示双击了编辑点if (!classList.contains('tdt-marker-icon') || !classList.contains('tdt-div-icon-black')) {return}const overlays = map.getOverlays()// 获取正在编辑的线、面覆盖物const editableOverlays = overlays.filter(overlay => overlay instanceof T.Polyline).filter(overlay => overlay.isEditable())// 找到最可能被双击的编辑点interface MaybePoint {lnglat: T.LngLatdistance: numberoverlay: T.Polyline}let maybePoints: MaybePoint | undefinedconst addMaybePoint = (lnglats: T.LngLat[], overlay: T.Polyline) => {for (const lnglat of lnglats) {const distance = lnglat.distanceTo(e.lnglat)if (!maybePoints || distance < maybePoints.distance) {maybePoints = { lnglat, distance, overlay }}}}for (const overlay of editableOverlays) {if (overlay instanceof T.Polygon) {const lnglats = (overlay as T.Polygon).getLngLats()addMaybePoint(lnglats[0], overlay)}else if (overlay instanceof T.Polyline) {const lnglats = (overlay as T.Polyline).getLngLats()addMaybePoint(lnglats, overlay)}}if (maybePoints) {const { lnglat, overlay } = maybePoints// 编辑中双击编辑点时,操作覆盖物会导致地图锁死不能移动,这里脱离调用栈即可解决setTimeout(() => {let otherLnglats: T.LngLat[]if (overlay instanceof T.Polygon) {otherLnglats = overlay.getLngLats()[0].filter(_lnglat => _lnglat !== lnglat)}else {otherLnglats = overlay.getLngLats().filter(_lnglat => _lnglat !== lnglat)}// 取消编辑以删除编辑点overlay.disableEdit()overlay.setLngLats(otherLnglats)overlay.enableEdit()})}
}, 500, {leading: true, // 立即执行trailing: false, // 不在延迟结束后执行
})const map = new T.Map(domRef.value)
map.addEventListener('dblclick', removeDotEventListener)
http://www.wxhsa.cn/company.asp?id=3065

相关文章:

  • POCamp 2023
  • 美团AI面试
  • 技术面:Spring (bean的生命周期、创建方式、注入方式、作用域)
  • 马尔可夫决策
  • 十九、指令流水线的基本概念
  • 本地布署Diffusers库 实现文生图 - yi
  • 【光照】[光照模型]发展里程碑时间线
  • 算法设计作业-week1
  • git merge
  • C语言学习
  • Ubuntu 的剪贴板
  • IDAPro--MCP详细配置教程
  • 20250913 NFLS 模拟赛 部分题目
  • 帐号内容定位
  • 基于YOLOv8的茶叶病害识别项目|完整源码数据集+图形化界面+训练教程
  • 2025第三届“陇剑杯”网络安全大赛初赛-夺旗闯关赛wp
  • 《Python数据结构与算法分析》第二弹《2.2.2 异序词检测示例》
  • 深入解析:柱状图(Vue3)
  • 计算机毕业设计springboot基于微信小程序的手机点餐软件 基于Spring Boot框架的微信小程序点餐体系设计与实现 微信小脚本点餐应用开发:Spring Boot技术的应用
  • 二叉树的相关知识
  • 原假设的选择准则:总损失视角的假设检验
  • dfs序基础+树上差分
  • Python中的if __name__ == __main__是什么?
  • 钻石
  • 随机游走理解
  • 【基于协同过滤的校园二手交易强大的平台】
  • Neural ODE原理与PyTorch实现:深度学习模型的自适应深度调节
  • PKU_Compiler
  • lc1026-节点与其祖先之间的最大差值
  • 如何绕过谷歌反爬策略爬取搜索结果