唯杰地图CAD图层加高性能特效扩展包发布

前言

前段时间我们发布了 WebCAD 平台(vjmap.com/app/webcad/),解决了"在 Web 端打开和编辑 CAD 图纸"这件事。

这次发布 唯杰地图扩展包 vjmapext,不是重复造一个平台,而是补上另一块能力:把 CAD 绘制、编辑和高性能渲染,以插件方式接入你现有的 vjmap 项目

一句话定位

vjmapextvjmap 的 CAD 绘图扩展层,核心入口是 MapCadLayer

它不是一个独立平台,而是一个可嵌入的能力组件:你把它加到地图里,就有了 CAD 级别的图元绘制、编辑、标注、动画和扩展能力。

官方文档入口:


WebCAD 和 vjmapext 是什么关系

可以把它理解成"平台 + 插件能力"的分工:

  • WebCAD:更像开箱即用的平台能力,适合直接在线打开和编辑图纸。
  • vjmapext:更像开发者工具箱,适合把 CAD 能力嵌入你的业务系统里,和业务流程、绘制、数据、界面一起做深度集成。

所以它们不是替代关系,而是互补关系。

如果你要"直接编辑用",WebCAD 合适;如果你要"接入自己的系统基于vjmap开发并持续迭代",vjmapext 更合适。


vjmapext 能做什么

从业务角度看,最常见的是下面几类能力组合。

1) 在 CAD 底图上做业务标注和交互、自动成图

你可以打开 CAD 图作为底图,然后叠加区域、点位、路径、文字和图例,把静态图变成可交互业务图。

这类能力常见于:

  • 园区设施管理;

  • 工厂设备点巡检;

  • 室内平面图上的状态展示。

  • 自动成图功能

  • 图形的绘制,编辑

2) 浏览模式与编辑模式

vjmapext 支持只读浏览和编辑模式切换,便于做"查看"和"编辑"的显示不同。

例如在只读模式下仍允许关键对象可选中,用于查看属性、定位问题。

可以在编辑模式下对数据方便进行编辑,在浏览模式下对数据进行数据查看效果展示。

3) 动画与特效

  • CPU 动画:拖尾、弹簧、关键帧、闪烁、线段渐现
  • GPU FX:点/线预设效果,支持较大数量级渲染
  • FX 与 CAD 实体可绑定,实体移动后特效可跟随
  • 支持性能相关控制(比如更新频率、渲染策略)
  • 支持shadertoy上面的shader支持复制过来使用

如果你要做态势图、告警图、运行状态图,这块会非常好用。

可以直接参考这个示例页:
vjmap.com/app/demoext...

安装

依赖与环境(必读)

  • vjmapext 不能脱离 vjmap 单独使用。 必须先具备 vjmap 运行环境(地图 SDK、底图样式、服务与 vjmap.Map 等),再使用本库。
  • npm 工程 :请同时安装 vjmapvjmapext(或已安装满足版本要求的 vjmap)。仅安装 vjmapext、未安装/未加载 vjmap 时无法正常工作。
  • 本包发布内容 :以 package.jsonfiles 为准,一般为 dist 下的 vjmapext.min.js(UMD) 与类型声明;

npm 安装

bash 复制代码
npm install vjmapext

快速接入(最小工程骨架)

ts 复制代码
import { MapCadLayer } from "vjmapext";

const mapcad = new MapCadLayer({
  locale: "zh",
  mode: "edit",
  defaultColor: 0x7fd3ff,
});

map.addControl(mapcad);
mapcad.createUI({ theme: "dark" });

建议启动前先配置这 6 项:

  1. modeeditbrowse
  2. drawingDefaults:颜色、线宽、图层默认值;
  3. shortcuts:是否覆盖默认快捷键;
  4. 字体:有文字实体时先 loadFont()
  5. 交互:是否启用捕捉及捕捉模式;
  6. 持久化:先确定 toJSON/fromJSON 存储位置。

SDK 功能详解(含作用说明)

1)命令系统

核心 API:

  • executeCommand(name, opts?)
  • repeatLastCommand()
  • getLastCommandName()

内置命令覆盖(40+):

  • 绘图:LINEPLINEPOINTCIRCLEARCELLIPSESPLINEFREEHANDRECTPOLYDLINEREVCLOUDHATCH
  • 编辑:MOVECOPYERASEMIRROROFFSETSCALESTRETCHBREAKTRIMEXTENDFILLETARRAYEXPLODEDRAWORDER
  • 标注:DIMLINEARDIMALIGNEDDIMANGLEDIMRADIUSMLEADER
  • 文字:TEXTTEXTEDITMTEXT
  • 块与导入:BLOCKINSERTIMPORTSVG

作用描述(详细):

  • 把 CAD 操作抽象成统一命令后,业务系统只需绑定命令,不需要重复造编辑逻辑;
  • 多模式命令(如 CIRCLEARC)可通过关键字切换子流程,减少多命令拆分维护成本;
  • 命令可以统一挂到工具栏、右键菜单、快捷键与业务流程引导页面;
  • 命令执行链可接日志,形成"用户操作轨迹"。

逐命令功能说明(精简版):

  • 绘图命令

  • LINE:按点创建直线段,适合轴线、连线、边界基础绘制。

  • PLINE:连续多段线,支持闭合和回退点,适合轮廓线与路径线。

  • POINT:创建点实体,常用于定位点、控制点、设备锚点。

  • CIRCLE:圆绘制,支持圆心半径、直径、两点、三点、切线等模式。

  • ARC:圆弧绘制,支持多构造方式,适合弧形边界和连接段。

  • ELLIPSE:椭圆绘制,支持中心法/轴端点法,常用于设备包络或符号。

  • SPLINE:样条曲线,适合平滑边界、自由曲线表达。

  • FREEHAND:自由手绘,适合快速草绘与现场标记。

  • RECTPOLY:矩形/多边形绘制,适合区域框选、面状边界初稿。

  • ARROW:箭头绘制,用于流程方向、流向标识。

  • HATCH:填充封闭区域,适合功能分区、材质区、风险区高亮。

  • TOHATCH:将封闭图形转换为填充对象,便于后处理。

  • DLINE:双线绘制,适合道路、墙体、管廊边界等平行线对象。

  • REVCLOUD:修订云线,常用于审图圈改、问题标注。

  • 文字命令

  • TEXT:单行文字,适合点位名、编号、简短说明。

  • TEXTEDIT:编辑既有文字内容,适合在线修正文案。

  • MTEXT:多行文字,适合批注段落、说明块。

  • 标注命令

  • DIMLINEAR:线性标注,输出水平或垂直尺寸。

  • DIMALIGNED:对齐标注,沿对象方向标注真实长度。

  • DIMANGLE:角度标注,适合角点控制与转角校核。

  • DIMRADIUS:半径标注,适合圆/弧尺寸表达。

  • MLEADER:多重引线,适合复杂构件说明与指向标注。

  • 编辑命令

  • MOVE:整体平移对象到新位置。

  • COPY:复制对象,适合重复布置。

  • ERASE:删除对象。

  • MIRROR:镜像对象,适合对称图形快速生成。

  • OFFSET:平行偏移对象,适合生成内外边界。

  • SCALE:按比例缩放对象。

  • STRETCH:局部拉伸对象几何。

  • BREAK:打断对象,生成断开段。

  • TRIM:按边界修剪超出部分。

  • EXTEND:按边界延伸对象到交界处。

  • FILLET:圆角连接两对象,生成平滑转角。

  • ARRAY:阵列复制,适合规则分布对象。

  • EXPLODE:分解复合对象(块、多段线等)为基础实体。

  • DRAWORDER:调整前后绘制顺序,控制遮挡与可见层次。

  • 块与导入命令

  • BLOCK:将一组对象定义为块,便于复用和规范化管理。

  • INSERT:插入块引用,支持重复放置。

  • PASTECLIP:粘贴剪贴板对象,提升跨区域编辑效率。

  • IMPORTSVG:导入 SVG 并转为可编辑对象,便于外部图标/图形接入。

命令使用建议:

  • 前台工具栏通常优先暴露 LINE/PLINE/CIRCLE/MOVE/COPY/ERASE/TRIM/EXTEND/DIMLINEAR/TEXT
  • 审图类页面建议增加 REVCLOUD/MLEADER/TEXTEDIT
  • 模板化制图建议优先启用 BLOCK/INSERT/ARRAY
  • 若是存量图改造,命令层要与 MapData + Hider + exportDwg 一起设计。

示例:


2)输入系统(InputManager)

输入能力:

  • 点输入(坐标点采集)
  • 选集输入(单选、框选、多选)
  • 数值输入(长度、半径等)
  • 关键字输入(命令子模式切换)
  • 字符串输入(文字命令等)

作用描述(详细):

  • 输入统一后,所有命令交互行为一致,降低用户学习成本;
  • 对开发者来说,命令只管业务逻辑,输入边界(取消、确认、回退)交给统一系统处理;
  • 输入与预览联动后,用户在确认前就能看到结果,减少误提交;
  • 是"可编辑能力稳定性"的底座。

示例:


3)对象捕捉(Snap)与夹点编辑(Grip)

捕捉能力:

  • 端点、中点、圆心、交点、最近点等模式;
  • 支持模式组合与开关控制;
  • 在命令点输入阶段实时生效。

夹点能力:

  • 选中实体后显示可编辑夹点;
  • 拖拽夹点修改几何;
  • 可与撤销重做联动。

作用描述(详细):

  • 捕捉解决"线上操作精度不足"问题;
  • 夹点解决"局部改图要重画"问题;
  • 两者配合,能在网页端做可用的精修工作流,而不是仅展示级编辑。

示例:


4)实体存储与选择管理

核心 API:

  • addEntity(entity)
  • deleteEntity(id)
  • getEntities()
  • getSelectedEntities()
  • clearSelection()

作用描述(详细):

  • 实体层统一管理后,渲染层、属性面板、事件系统都能共享同一数据源;
  • 选择集明确后,编辑命令可避免"误改全部对象";
  • 可在业务系统里按选择集做批处理(改颜色、改图层、改属性);
  • 是批量编辑、批量审查、批量导出的前置基础。

示例:


5)撤销重做(Undo/Redo)

核心 API:

  • undo()
  • redo()

作用描述(详细):

  • 在线编辑可回退,用户才敢进行复杂操作;
  • 支持和快捷键联动,操作习惯接近桌面 CAD;
  • 可用于审图流程中的"试改-对比-还原"。

示例:


6)标注体系

相关命令:

  • DIMLINEAR
  • DIMALIGNED
  • DIMANGLE
  • DIMRADIUS
  • MLEADER

作用描述(详细):

  • 标注能力决定图纸可审核性,不只是视觉增强;
  • 统一标注命令可把尺寸、角度、说明纳入标准编辑流;
  • 对工程协同来说,标注是交底、复核、验收的核心数据表达。

示例:


7)文字与字体管理

相关能力:

  • 命令:TEXTTEXTEDITMTEXT
  • API:loadFont(url, name?)

作用描述(详细):

  • 文字是图纸语义信息的重要组成;
  • 字体加载可避免线上渲染错位或替换字体导致排版变化;
  • 文字编辑能力可直接承接审图意见修订流程。

示例:


8)块(Block)能力

相关能力:

  • 命令:BLOCKINSERT
  • 数据:块定义、块引用
  • 序列化:块信息可随文档保存恢复

作用描述(详细):

  • 块能力是减少重复绘制和统一规范的核心;
  • 适合设备符号、标准构件、图例模板等复用对象;
  • 可建立企业标准块库,提升制图一致性。

示例:


9)序列化与绘图默认值

核心 API:

  • toJSON()
  • fromJSON(doc)
  • setDrawingDefaults(partial)
  • getDrawingDefaults()

作用描述(详细):

  • 支持"保存当前进度 -> 跨会话继续编辑";
  • 支持"模板化初始化图纸";
  • 支持团队统一绘图规范(图层、线宽、颜色);
  • 是多人协作和版本回放的基础。

10)MapData 数据联动

核心 API:

  • queryMapEntities(opts)
  • queryMapEntitiesByLayer(layer, entType, extra?)
  • featuresToEntities(featureCollection, opts?)
  • createMapDataHider()

标准链路:

  1. 按条件查询后端 DWG 实体;
  2. Feature 转 SDK 实体;
  3. 隐藏原图被接管对象;
  4. 前端叠加编辑;
  5. 最终导出。

作用描述(详细):

  • 不需要一次性迁移历史图纸;
  • 可在原图基础上做增量改造;
  • 可把"后端存量数据"接入"前端可编辑流程";
  • 适合传统项目数字化升级。

示例:


11)DWG 导出交付

核心 API:

  • exportDwg(opts)
  • setExportDwgCallback(cb)

常见组合:

  • exportDwg({ hider })
  • onBeforeUpdate 导出前加工
  • deleteFromSource 导出时清理源对象

作用描述(详细):

  • 打通"在线编辑 -> DWG 文件交付";
  • 保持与传统 CAD 工具链衔接;
  • 减少人工二次整理步骤。

12)渲染与性能机制

可核验机制:

  • 三源分桶:hot/cold/dynamic
  • 增量更新与脏标记刷新
  • 渲染缓存复用
  • styleOnly 样式快路径

作用描述(详细):

  • 高频操作时减少全量刷新;
  • 大图场景下更稳定;
  • 只改样式时避免几何重建;
  • 给后续性能调优提供结构基础。

13)FX 特效层

能力点:

  • 批量添加特效对象;
  • 质量档位调节;
  • 指标与事件输出;
  • CAD 实体绑定。

作用描述(详细):

  • 可用于状态表达(告警、流向、活跃度);
  • 可根据设备性能动态降级;
  • 可通过指标事件接入监控系统;
  • 是"可编辑图纸 + 运行态表达"组合能力的关键层。

示例:

14)UI、事件与扩展能力

相关能力:

  • createUI(options) / getUI()
  • eventBus 事件总线
  • loadPlugin(plugin) 与插件生命周期

作用描述(详细):

  • UI 能力让你快速构建可用工作台;
  • 事件体系让 CAD 编辑流程可接入业务日志、审批、统计;
  • 插件机制支持"先上线核心,再按模块扩展";
  • 有利于长期维护与团队协作开发。

示例:


相关推荐
ZC跨境爬虫2 小时前
3D 地球卫星轨道可视化平台开发 Day7(AI异步加速+卫星系列精简+AI Agent自动评论)
前端·人工智能·3d·html·json
ID_180079054732 小时前
淘宝 API 上货 / 商品搬家 业务场景实现 + JSON 返回示例
前端·javascript·json
M ? A2 小时前
Vue 动态组件在 React 中,VuReact 会如何实现?
前端·javascript·vue.js·经验分享·react.js·面试·vureact
vipbic2 小时前
独立开发复盘:我用 Uni-app + Strapi v5 肝了一个“会上瘾”的打卡小程序
前端·微信小程序
IT_陈寒3 小时前
Vite的热更新突然失效,原来是因为这个配置
前端·人工智能·后端
ZC跨境爬虫4 小时前
3D 地球卫星轨道可视化平台开发 Day8(分步渲染200颗卫星+ 前端分页控制)
前端·python·3d·重构·html
竹林8184 小时前
RainbowKit快速集成多链钱包连接,我如何从“连不上”到“丝滑切换”
前端·javascript
笨笨狗吞噬者4 小时前
Opus 4.7 使用体验
前端·ai编程
No8g攻城狮4 小时前
【前端】Vue 中 const、var、let 的区别
前端·javascript·vue.js