gis-view-webgl2 0.1.4 → 0.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -7
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +225 -20
- package/dist/index.js +1 -1
- package/docs/AI/345/257/271/350/257/235/346/261/207/346/200/273.md +109 -0
- package/docs/GisView.md +53 -53
- package/docs/ai/06-/344/274/232/350/257/235/347/264/242/345/274/225/344/270/216/345/244/215/346/237/245/346/226/271/346/263/225.md +91 -0
- package/docs/demos/ConnectDemo.vue +114 -3
- package/docs/demos/MinimapDemo.vue +216 -17
- package/docs/demos/SearchFilterDemo.vue +113 -1
- package/docs/demos/api-index.js +28 -20
- package/docs/demos/demos.js +1 -1
- package/docs/demos/gis-view-demo/GisViewDemoStage.vue +25 -16
- package/docs/demos/gis-view-demo/useGisViewDemo.js +27 -16
- package/docs/index.html +3 -3
- package/docs/internals/13-/351/271/260/347/234/274/345/233/276.md +8 -5
- package/docs/internals/16-01-/344/274/230/345/214/226/344/270/216/345/217/226/350/210/215-/344/270/212.md +18 -5
- package/docs/internals/16-03-/344/274/230/345/214/226/344/270/216/345/217/226/350/210/215-/344/270/213.md +11 -1
- package/docs/internals/18-/346/200/247/350/203/275/345/256/236/346/265/213/344/270/216WebGPU/350/257/204/344/274/260.md +73 -1
- package/docs/manual/03-/351/205/215/347/275/256/351/241/271.md +14 -5
- package/docs/manual/04-/344/272/213/344/273/266/344/270/216/345/233/236/350/260/203.md +2 -2
- package/docs/manual/05-/347/224/273/350/264/250/344/270/216/346/211/271/351/207/217/346/233/264/346/226/260.md +1 -1
- package/docs/manual/09-/351/200/232/351/201/223/344/270/216/345/244/232/345/233/236/347/272/277.md +1 -1
- package/docs/manual/10-/351/200/232/351/201/223/347/274/226/350/276/221/344/270/216/346/226/260/345/242/236.md +423 -3
- package/docs/manual/14-/350/247/206/345/233/276/344/270/216/347/255/233/351/200/211.md +99 -30
- package/docs/manual/16-/345/256/236/344/276/213/346/226/271/346/263/225/346/200/273/350/241/250.md +12 -7
- package/docs/manual/17-/345/217/202/346/225/260/351/200/237/346/237/245.md +14 -6
- package/docs/manual/18-/351/200/220/346/226/271/346/263/225/347/244/272/344/276/213.md +137 -6
- package/docs/manual/19-/350/257/273/346/225/260/344/270/216/346/213/226/346/213/275/351/242/204/350/247/210.md +4 -0
- package/docs/manual/20-/346/200/247/350/203/275/344/270/216/345/244/247/346/225/260/346/215/256.md +8 -3
- package/docs/manual/21-/350/257/264/346/230/216/344/270/216/345/270/270/350/247/201/351/227/256/351/242/230.md +6 -3
- package/docs/steps/README.md +6 -6
- package/docs/steps/selftest-demos.html +252 -9
- package/docs/steps/selftest-docs.html +3 -3
- package/docs/steps/selftest-full.html +357 -13
- package/docs/steps/selftest-perf.html +599 -382
- package/package.json +1 -1
|
@@ -364,3 +364,112 @@
|
|
|
364
364
|
- **交互与方法性能**:定向补丁只在改动可能影响筛选结果时重跑筛选;只改展示字段时沿用原结果,`id` / 坐标 / `from` / `to` / `visible` 与函数 / 自定义运算符条件保持保守重跑。引擎新增定向的通道 / 分组范围测量,`focusOn` 不再为一段范围复制整页通道几何;事件总线在只有一条订阅时直接调用,省掉每次事件分发的快照数组。本轮没有做可信的性能基准,不提供加速倍数。
|
|
365
365
|
- **核心文件**:`src/gis-view/create.js`、`engine.js`、`events.js`、`types.d.ts`、`docs/api/index.html`、`docs/demos/ExtensionDemo.vue`、`docs/demos/SearchFilterDemo.vue`、`docs/demos/ApiCoverageDemo.vue`、`docs/demos/gis-view-demo/useGisViewDemo.js`、`docs/demos/gis-view-demo/panels/OpsPanels.vue`、`docs/demos/gis-view-demo/GisViewDemoCardHeader.vue`、`docs/demos/demos.js`、`docs/demos/api-index.js`(生成物)、`README.md`、`src/gis-view/README.md`、`docs/GisView.md`、`docs/index.html`、`docs/manual/08` / `14` / `15` / `16` / `17` / `18` / `19`、`docs/steps/README.md`、`docs/steps/selftest-features.html` / `selftest-demos.html` / `selftest-docs.html` 与本轮 aimd。
|
|
366
366
|
- **验证**:`selftest-features.html` **672** 条、`selftest-demos.html` **337** 条、`selftest-docs.html` **134** 条,三页共 **1143** 条通过 / 0 失败;`node --check src/gis-view/create.js`、`npx tsc --noEmit`、`npm run build`、`node docs/steps/gen-api-index.mjs`、`npm run check:docs`(**256** 个实例成员 = **253** 个方法 + 3 个属性 / **96** 个 options / **16** 个分组 / **250** 个数据字段)与 `git diff --check` 全部通过。复查入口见 [06 的增量记录](ai/06-会话索引与复查方法.md#2026-10-23-增量修改txt四项focuson-缺省居中--文档互跳--扩展命令--性能优化)。
|
|
367
|
+
|
|
368
|
+
## 2026-10-23 增量(「问题.txt」五项:鹰眼图回线居中 / 动态位置 / backgroundStyle / 主图样式 / 外部挂载)
|
|
369
|
+
|
|
370
|
+
本轮仍是现有会话的继续增量,没有新建会话归档,因此不改上表的 39 条会话统计。需求原话来自仓库根目录的 `问题.txt`:① 取消通道回线后双回线只显示上面一根,应在两根中间显示;② 支持动态移动整个鹰眼图;③ 检查 `backgroundStyle` 是否生效;④ 沿用主图规则后节点尺寸与图标要和主图一致;⑤ 支持把鹰眼图单独挂到外部 `div`。
|
|
371
|
+
|
|
372
|
+
- **回线居中代表线**:`channelCircuits: false` 不再按偏移挑最靠中间的成员线;`collectMinimapData()` 取该通道分组当前可见的回线,顶点数一致时逐顶点取平均再画一根。双回线落在两线正中,三回线落在中间线,只剩一根时仍画它自己;路径结构不一致时保守回退第一条可见成员。
|
|
373
|
+
- **动态位置**:新增 `minimap.offset: [x, y]`,相对 `position` 指定的角移动整张鹰眼图,`x` 正数向右、`y` 正数向下,四个角语义统一;`updateOptions({ minimap: { ...old, offset } })` 即时生效,配合新增的 `getMinimapElement()` 可绑定自定义整图拖动。
|
|
374
|
+
- **backgroundStyle**:显式设置 `backgroundStyle` 时由容器接管底色,画布不再铺主图的不透明底色,只画继承 / 独立的图片与 GeoJSON;不写时保持原行为,想要完全透出宿主可写 `transparent`。
|
|
375
|
+
- **沿用主图样式**:`inheritRules` 开启时,节点半径取自引擎最终 `getPointStyle()` 尺寸(圆形按 `CIRCLE_AREA_FACTOR` 还原实际直径),并沿用主图的符号、层级与图标填充 / 描边色。圆、方、图片、SVG 与自定义图元都能显示;异步解码完成的符号会在后续帧补画。
|
|
376
|
+
- **外部挂载**:新增 `minimap.container`,接受元素或 CSS 选择器,把同一根鹰眼图节点移至外部宿主,`position` / `margin` / `offset` 相对该宿主计算;选择器找不到时回落主视图根节点。运行时切换容器只移动节点、不重建画布,`destroy()` 会清理挂载。
|
|
377
|
+
- **核心文件**:`src/gis-view/minimap.js`、`src/gis-view/create.js`、`src/gis-view/engine.js`、`src/gis-view/types.d.ts`、`docs/steps/selftest-full.html`、`docs/internals/13-鹰眼图.md`、`docs/manual/03` / `09` / `14` / `16` / `17` / `18` / `21`、`README.md`、`src/gis-view/README.md`、`docs/GisView.md`、`docs/index.html`、`docs/steps/README.md`、`docs/steps/selftest-docs.html` / `selftest-demos.html`、`docs/demos/api-index.js`(生成物)与本轮 aimd。
|
|
378
|
+
- **验证**:`selftest-full.html` **85** 条、`selftest-docs.html` **134** 条、`selftest-demos.html` **337** 条,三页共 **556** 条通过 / 0 失败。新增 5 条鹰眼图断言覆盖居中代表线、显式底色让画布透明、主图尺寸与 SVG 图标、外部容器挂载、`offset` 动态位移及换容器复用节点。`npx tsc --noEmit`、`node --check`(minimap / create / engine)、`node docs/steps/gen-api-index.mjs --check`、`npm run check:docs`(**257** 个实例成员 = **254** 个方法 + 3 个属性 / **96** 个 options / **250** 个数据字段 / **16** 个分组)、`npm run build` 与 `git diff --check` 全部通过。复查入口见 [06 的增量记录](ai/06-会话索引与复查方法.md#2026-10-23-增量问题txt五项鹰眼图回线居中--动态位置--backgroundstyle--主图样式--外部挂载)。
|
|
379
|
+
|
|
380
|
+
## 2026-10-23 增量:鹰眼图缩放联动与新增通道示例节点
|
|
381
|
+
|
|
382
|
+
本轮仍是现有会话的继续增量,没有新建会话归档,因此不改上表的 39 条会话统计。需求原话来自仓库根目录的 `修改.txt` 五项与 `问题.txt` 三项:`修改.txt` ①沿用主图规则后节点要按鹰眼图与主图的比例缩小;②`dragAction: 'box'` 不依赖缩放开关;③新增跟随主图缩放的模式且与手动缩放互斥;④demo 展示指定起点新增,并让 `commitAddChannel` 可直接接收本次新增的通道 / 线路对象;⑤草稿示例点严格落在节点中心、可显隐 / 配样式,示例线路可压到真实节点下面。`问题.txt` ①`auto` 范围随相机收窄改为默认关闭的开关;②补鹰眼图拖拽 demo;③继承节点按主图与小图的视口尺寸比例缩放,不按主图放大倍数缩放。
|
|
383
|
+
|
|
384
|
+
- **鹰眼节点尺寸与范围**:`collectMinimapData()` 给继承主图尺寸的节点打 `inheritSize`;`inheritedSizeFactor()` 取小图与主图 `getViewport()` 的 CSS 宽、高较小比例,只随两边视口尺寸变化,不随主图 `/` 小图相机倍数漂移。`extentFollowCamera` 默认 `false`,`extent: 'auto'` 固定用「可见数据 ∪ 底图」;只有显式打开后才允许相机落入其中一份时按正在看的那一份收窄。
|
|
385
|
+
- **缩放三态与拖拽**:`zoomable` 统一为 `false` / `true` / `'follow'` 三态互斥:手动缩放、跟随主图、关闭;`followZoomScale` 是主图相对基准倍数的指数(`0` 不跟随、`1` 同倍率),`zoom` 在跟随模式作为基准倍数,`setMinimapZoom` / `zoomMinimapBy` 不抢主图控制权。`dragAction: 'box'` 在缩放关闭时也能直接框选,只有手动缩放才用 Ctrl / ⌘ 切换平移与框选;Demo 提供框选 / 平移两种整图拖拽演示。
|
|
386
|
+
- **新增通道对象入参**:`commitAddChannel` 兼容旧 `resolution`,也可直接传 `GisViewChannel` / `GisViewLine`,或 `{ channel, line, lines, resolution, ... }` 包装对象。对象中的端点、id、名称、路径、分组、样式与业务字段优先,缺省字段继续沿用草稿;直接线路对象除 `COMMIT_LINE_KEYS` 外的颜色 / 线宽 / 线型 / 业务字段都汇入 `lineProps`,直接通道对象支持 `lineIds` / `groups` / `lineProps` / `channelProps`,不会被容器写法误判。
|
|
387
|
+
- **草稿示例点与层级**:`channelDraftStyle.dots` 支持 `false` / `true` / 样式对象,统一设置 `show` / `size` / `color` / `shape`,`from` / `to` 可分别覆盖颜色、尺寸、圆点或方点;示例点固定画在真正点中的节点中心,不受多回线偏移影响。`layer: 'below-points'` 把示例线、箭头与 `customDraw` 画在真实节点之前(端点示例点仍最后画),默认 `above` 保持原层级;草稿 buffer / VAO 一并补上销毁。
|
|
388
|
+
- **Demo 与文档**:`ConnectDemo` 增加指定起点、示例点显隐 / 尺寸 / 形状 / 分端颜色、示例线层级和线路 / 通道对象直传;`MinimapDemo` 增加关闭 / 手动 / 跟随三态、跟随指数、范围开关、框选 / 平移拖拽演示,旧的 `minimapZoomable` 写法统一换成三态配置。同步根 `README.md`、`docs/manual/03` / `10` / `14` / `16` / `17` / `18` / `21`、`docs/internals/13-鹰眼图.md`、`docs/steps/README.md` 与 `docs/demos/api-index.js`(生成物)。
|
|
389
|
+
- **核心文件**:`src/gis-view/minimap.js`、`src/gis-view/create.js`、`src/gis-view/engine.js`、`src/gis-view/types.d.ts`、`docs/demos/ConnectDemo.vue`、`MinimapDemo.vue`、`docs/demos/gis-view-demo/useGisViewDemo.js`、`GisViewDemoStage.vue`、`docs/steps/selftest-full.html`、`selftest-demos.html`、上述手册 / 内部文档与本轮 aimd。
|
|
390
|
+
- **验证**:`selftest-full.html` **86** 条、`selftest-features.html` **672** 条、`selftest-demos.html` **349** 条、`selftest-docs.html` **134** 条,四页共 **1241** 条通过 / 0 失败;新增断言覆盖继承节点不随主图放大、视口尺寸变化重铺、范围开关默认关闭与显式开启、三态跟随、关闭缩放时框选、对象直传与草稿示例点。`npx tsc --noEmit`、`node --check`(minimap / create / engine)、`node docs/steps/gen-api-index.mjs --check`、`npm run check:docs`(**257** 个实例成员 = **254** 个方法 + 3 个属性 / **96** 个 options / **250** 个数据字段 / **43** 个事件 / **17** 个功能开关)、`npm run build` 与 `git diff --check` 全部通过。复查入口见 [06 的增量记录](ai/06-会话索引与复查方法.md#2026-10-23-增量鹰眼图缩放联动与新增通道示例节点)。
|
|
391
|
+
|
|
392
|
+
## 2026-10-23 增量:鹰眼图继承要素尺寸与地图缩放解耦
|
|
393
|
+
|
|
394
|
+
本轮仍是现有会话的继续增量,没有新建会话归档,因此不改上表的 39 条会话统计。需求原话来自仓库根目录的 `问题.txt` 三项:① 鹰眼图的范围跟随相机改为默认关闭;② 补鹰眼图拖拽 demo;③ 澄清「节点随主视图缩放」只指沿用主图规则时的节点 / 线路尺寸。复核确认 ① / ② 已在当前工作树实现,本轮补齐 ③:继承节点 / 线路按「小图视口 ÷ 主图视口」的较小比例缩放,独立于主图相机倍数和鹰眼图自身倍数;主图放大不改变它们,鹰眼图自身放大时才由 `pointZoomScale` / `lineZoomScale` 联动。
|
|
395
|
+
|
|
396
|
+
- **继承线宽**:`line.js` 的 `resolveLineStyleInto()` 记录样式链原始宽度 `baseWidth`(不含热力倍数 / 整体倍数 / 缩放联动),`engine.js` 新增内部 `getLineStyle(index)` 快照;`create.js` 在沿用主图线路时写入 `entry.width` 并标记 `inheritWidth`,与节点的 `inheritSize` 走同一份视口比例。
|
|
397
|
+
- **缩放拆层**:`minimap.js` 对继承节点使用 `pointSizeScale × pointZoomScale × inheritedSizeFactor()`,对继承线路使用 `lineWidthScale × lineZoomScale × inheritedSizeFactor()`;`pointMapZoomScale` / `lineMapZoomScale` 只作用于小图自有规则 / 样式。点 / 线路缓存键同步包含各自系数,没有继承线路时继承系数固定为 1。
|
|
398
|
+
- **Demo 与文档**:`MinimapDemo` 默认切到沿用主图,拆分节点 / 线路整体倍数与小图缩放指数控件,并保留框选 / 平移拖拽演示;主 demo 在沿用模式下禁用「节点跟主图 / 线路跟主图」并更新提示。同步 `types.d.ts` 注释、根 `README.md`、`src/gis-view/README.md`、`docs/manual/03` / `14`、`docs/internals/13-鹰眼图.md`,重新生成 `docs/demos/api-index.js`。
|
|
399
|
+
- **核心文件**:`src/gis-view/line.js`、`src/gis-view/engine.js`、`src/gis-view/create.js`、`src/gis-view/minimap.js`、`src/gis-view/types.d.ts`、`docs/demos/MinimapDemo.vue`、`docs/demos/gis-view-demo/GisViewDemoStage.vue`、`docs/demos/gis-view-demo/useGisViewDemo.js`、`docs/steps/selftest-full.html`、`docs/steps/selftest-demos.html` 与本轮文档。
|
|
400
|
+
- **验证**:`selftest-full.html` **92** 条、`selftest-features.html` **672** 条、`selftest-demos.html` **351** 条、`selftest-docs.html` **134** 条,四页共 **1249** 条通过 / 0 失败;新增 8 条断言覆盖继承线路 / 节点在主图放大时尺寸不变、`pointSizeScale` / `lineWidthScale` 对继承要素生效、小图自身放大按 `pointZoomScale` / `lineZoomScale` 联动,以及 demo 两个独立整体倍数控件。`npx tsc --noEmit`、`node --check`(minimap / create / engine / line)、`node docs/steps/gen-api-index.mjs --check`、`npm run check:docs`(**257** 个实例成员 = **254** 个方法 + 3 个属性 / **96** 个 options / **250** 个数据字段 / **43** 个事件 / **17** 个功能开关)、`npm run build` 与 `git diff --check` 全部通过。复查入口见 [06 的增量记录](ai/06-会话索引与复查方法.md#2026-10-23-增量鹰眼图继承要素尺寸与地图缩放解耦)。
|
|
401
|
+
|
|
402
|
+
## 2026-10-23 增量(「修改.txt」三项:commitAddChannel 文档 / 传参示例 / 线路半跳过)
|
|
403
|
+
|
|
404
|
+
本轮仍是现有会话的继续增量,没有新建会话归档,因此不改上表的 39 条会话统计。需求原话来自仓库根目录的 `修改.txt` 三项:① 说明 `commitAddChannel` 有哪些传参、支持哪些写法;② 把方法用法、传参和示例写详细;③ 继续优化组件性能。
|
|
405
|
+
|
|
406
|
+
- **`commitAddChannel` 入参口径**:手册 `10` 的「对象直传」扩写为五种写法:无参、旧 resolution、直接线路对象、直接通道对象(必须有 `lineIds`)、容器(`channel` / `line` / `lines` / `lineData` / `lineItems` / `channelGroups` / `group` / `channelProps` / `lineProps` / `resolution`)。明确草稿只支持 `from`、没有 `to`;`line` 缺省是独立线路,`lines` 才是成员回线表;空数组沿用草稿;直接通道的 `id` 只是通道 id,回线 id 来自 `lineIds`;直接通道自己的 `lineProps` 生效,容器里的 `channel.lineProps` 不合并;分组优先级 `channelGroups > group > channel.groups`;并进已有通道 / 分组要用容器并显式写 `resolution`。
|
|
407
|
+
- **示例与错误说明**:`ready` 里的方案读数不能整条回传,统一只取 `{ type, groupId, groupIndex, channelId }` 子集;删除“整条 option 可直接提交”的旧示例。`groups[].lineIds` 写了本次未生成的 id 改为 warning + 按成员表调和,不再列为失败原因;返回结果的 `channelIndex` 改为“成功时为通道下标、独立线路为 -1,失败通常不返回,事件载荷按 -1 兜底”。同步扩写 `18` 的逐方法示例(五种写法、只给 `channel.lineIds`、容器逐条字段、空数组、端点 / 路由覆盖、并组、连续提交、结果读取),并细化 `16` / `17` 与 `types.d.ts` 的 JSDoc。
|
|
408
|
+
- **线路半跳过**:`engine.js` 在节点半跳过成立后,再核对线路数组与通道声明逐元素同引用、隐藏集合 / 通道车道输入 / 线路与状态样式快照未变,且没有追加补点补线;命中时跳过 `resolveLines`、线路索引、虚线槽位、层序与线路包围盒重算,直接复用上一轮线路半包围盒。追加补线与拖点 / 拐点 / 通道骨架等增量改线会把新路径并进缓存;没有可信读数时记 `lineHalfOutOfSync`,下一轮放弃跳过。`selftest-perf.html` 新增 3 条断言:同一批点线连交 5 次条数与线路实例数不变、通道声明未变时回线派生折线原样保留、换通道骨架时线路几何必须重推。
|
|
409
|
+
- **实测**:20000 点 / 8000 线同一批对象回灌 5 次取中位,**14.3 ms → 6.3 ms**(优化后 5.6 / 6.3 / 6.3 / 6.4 / 10.7 ms)。
|
|
410
|
+
- **核心文件**:`src/gis-view/engine.js`、`src/gis-view/types.d.ts`、`docs/manual/10` / `16` / `17` / `18`、`docs/steps/selftest-perf.html`、`docs/internals/16-01-优化与取舍-上.md`、`docs/internals/18-性能实测与WebGPU评估.md`、`docs/demos/api-index.js`(生成物)、本轮 aimd。
|
|
411
|
+
- **验证**:`node --check`(engine / create)、`node docs/steps/gen-api-index.mjs`、`npm run check:docs`(**257** 个实例成员 = **254** 个方法 + 3 个属性 / **96** 个 options / **250** 个数据字段 / **43** 个事件 / **17** 个功能开关)、五页自测 `full 92` + `features 672` + `demos 351` + `docs 134` + `perf 167` = **1416** 条通过 / 0 失败、`npx tsc --noEmit`、`npm run build` 与 `git diff --check` 全部通过。复查入口见 [06 的增量记录](ai/06-会话索引与复查方法.md#2026-10-23-增量修改txt三项commitaddchannel-文档--传参示例--线路半跳过)。
|
|
412
|
+
|
|
413
|
+
## 2026-10-23 增量(「问题.txt」两项:鹰眼图范围锁定开关 / 整图拖动 demo)
|
|
414
|
+
|
|
415
|
+
本轮仍是现有会话的继续增量,没有新建会话归档,因此不改上表的 39 条会话统计。需求原话来自仓库根目录的 `问题.txt`:① 鹰眼图不应因主视图外围内容消失而自动重算包围盒,把这个行为做成默认关闭的开关;② 增加整体拖拽鹰眼图的 demo。
|
|
416
|
+
|
|
417
|
+
- **范围跟随开关**:`minimap.extentFollowContent?: boolean` 默认 `false`。`resolveExtent()` 在开关关闭时用 `pinnedExtent` 锁定首次取得的动态数据 / 底图范围,筛选、显隐、删除、新增内容只重画要素,不再改小图 `bounds` / `scale` / 中心;打开后才按当前可见内容重算。显式改 `extent`(预设或固定范围按值比较)以及切换开关都会清锁,下一次重画重新取范围;`extentFollowCamera` 的相机取舍基于锁定后的两份范围。
|
|
418
|
+
- **整图拖动 demo**:`MinimapDemo.vue` 通过 `getMinimapElement()` 在根节点追加独立手柄,手柄手势 `stopPropagation()`,不触发小图原有框选 / 平移;位移累计写回 `minimap.offset`,窗口级 `pointermove` / `pointerup` 收尾,并提供方向键微调、复位按钮和位移读数。
|
|
419
|
+
- **测试与文档**:`selftest-full.html` 新增 2 条断言覆盖默认锁定与打开后跟随内容;`selftest-demos.html` 新增 4 条断言覆盖开关下发、手柄拖动与复位。同步更新配置项 / 视图手册、鹰眼图内部文档、两个 README、类型注释、demo 描述与生成的 `docs/demos/api-index.js`。
|
|
420
|
+
- **核心文件**:`src/gis-view/minimap.js`、`src/gis-view/types.d.ts`、`docs/demos/MinimapDemo.vue`、`docs/demos/demos.js`、`docs/demos/api-index.js`(生成物)、`docs/manual/03` / `14`、`docs/internals/13-鹰眼图.md`、`src/gis-view/README.md`、根 `README.md`、`docs/steps/selftest-full.html`、`docs/steps/selftest-demos.html` 与本轮 aimd。
|
|
421
|
+
- **验证**:定向三页 `selftest-full` **94** / `selftest-demos` **355** / `selftest-docs` **134**,合计 **583** 条通过 / 0 失败;全量 14 页 **2295** 条通过 / 2 条失败,失败均为 `selftest-scale` 的筛选回调计数(本轮未改动筛选链路)。`node --check src/gis-view/minimap.js`、`npx tsc --noEmit`、`node docs/steps/gen-api-index.mjs --check`、`npm run check:docs`(**257** 个实例成员 / **96** 个 options / **250** 个数据字段 / **43** 个事件 / **17** 个功能开关)、`npm run build` 与 `git diff --check` 全部通过。复查入口见 [06 的增量记录](ai/06-会话索引与复查方法.md#2026-10-23-增量问题txt两项鹰眼图范围锁定开关--整图拖动-demo)。
|
|
422
|
+
|
|
423
|
+
## 2026-10-23 增量(「修改.txt」两项:数据包围盒缓存与相机飞行)
|
|
424
|
+
|
|
425
|
+
本轮仍是现有会话的继续增量,没有新建会话归档,因此不改上表的 39 条会话统计。需求原话来自仓库根目录的 `修改.txt`:① 继续优化组件整体性能;② 增加一些后续可能需要的新功能、方法、属性,并补 demo。
|
|
426
|
+
|
|
427
|
+
- **数据包围盒缓存**:`engine.js` 增加 `cachedDataBounds` / `cachedDataBoundsValid`,整份解析完成时直接接住 `fusedDataBounds`,普通 `getBounds()` 不再每次扫描全部已解析节点与线路;缓存对象与 `fusedDataBounds` 各持一份,`getBounds()` 也返回独立副本,调用方就地修改不会污染后续读数。`updatePoint` 坐标变化、`updateLine` 路径变化、拖拽、追加点 / 线以及复制预览改坐标都会显式失效缓存。十万点 + 十万线(每条 10 顶点)连续 10 次读数由约 **5.2 ~ 6.6 ms / 次** 降到 **0.00 ms / 次**;改一个点后首次重建约 **3.6 ms**,读数正确。
|
|
428
|
+
- **相机飞行 API**:新增 `flyTo(target, options?)`、`stopCameraAnimation()`、`getCameraAnimation()` 与只读属性 `cameraAnimating`。`flyTo` 认与 `focusOn` 相同的目标及 `zoom` / `scale` / `center` / `padding` / `maxZoom` / `select` / `mode` 语义,另支持 `duration`(缺省 450 ms)和 `easing`(`linear` / `ease-in` / `ease-out` / `ease-in-out` / 自定义函数);中心线性插值、比例按对数插值。再次 `flyTo`、用户拖拽 / 滚轮、程序化改相机、`fitView` / `resetView` 和销毁都会取消上一条动画;`duration <= 0` 或系统 `prefers-reduced-motion: reduce` 时立即落位。
|
|
429
|
+
- **Demo**:`docs/demos/SearchFilterDemo.vue` 增加“飞向选中”“停止飞行”按钮与实时动画读数;`docs/steps/selftest-perf.html` 增加 3 条包围盒缓存 / 失效 / 防污染断言,`docs/steps/selftest-demos.html` 增加 5 条飞行 API 与 demo 交互断言,并同步成员清单 261。
|
|
430
|
+
- **核心文件**:`src/gis-view/engine.js`、`src/gis-view/create.js`、`src/gis-view/types.d.ts`、`docs/demos/SearchFilterDemo.vue`、`docs/demos/api-index.js`(生成物)、`docs/GisView.md`、`docs/manual/14` / `16` / `17` / `18` / `20`、`docs/steps/README.md`、`docs/steps/selftest-{perf,demos,docs}.html`、根 `README.md`、`src/gis-view/README.md` 与本轮 aimd。
|
|
431
|
+
- **验证**:`node --check`(engine / create)、`npx tsc --noEmit`、`node docs/steps/gen-api-index.mjs --check`、`npm run check:docs`(**261** 个实例成员 = **257** 个方法 + **4** 个属性 / **96** 个 options / **250** 个数据字段 / **43** 个事件 / **17** 个功能开关 / **16** 个分组)、四页定向自测 `full 94` + `demos 360` + `docs 134` + `perf 170` = **758** 条通过 / 0 失败、`npm run build` 与 `git diff --check` 全部通过。复查入口见 [06 的增量记录](ai/06-会话索引与复查方法.md#2026-10-23-增量修改txt两项数据包围盒缓存与相机飞行)。
|
|
432
|
+
|
|
433
|
+
## 2026-10-23 增量(「问题.txt」两项:线路样式窄路与新 API 能力)
|
|
434
|
+
|
|
435
|
+
本轮仍是现有会话的继续增量,没有新建会话归档,因此不改上表的 39 条会话统计。需求原话来自仓库根目录的 `问题.txt`:① 继续深度优化 gis-view 组件整体性能;② 从长远角度补充可能需要的功能、方法、属性,并添加 demo。
|
|
436
|
+
|
|
437
|
+
- **线路样式窄路**:`line.js` 抽出 `resolveLinePaintInto`,整份解析与窄路共用基准宽 / 半宽 / 颜色 / 透明度的取值链;`engine.js` 新增 `NARROW_LINE_STYLE_BUCKETS` / `lineStyleNarrowChange()` / `applyLineNarrowFast()`,只换 `lineStyle.width` / `color` / `opacity` 时逐条重算 paint 并补实例槽位。规则、热力图、线型 / 阴影 / 效果 / 方向等结构输入存在时回退整份解析;逐线自身样式与状态样式仍优先。整份重解析、单线更新和窄路现在都会同步 `baseWidth`,`getLineStyle` 不会读回旧线宽。
|
|
438
|
+
- **新增 API**:`flyToCamera(camera, options?)` 直接飞 `{ center?, scale? }`,缺省项沿用当前相机;只读 `dataVersion` 在数据变更时 +1、样式 / 配置变更不递增,`onDataChange` 载荷同步带出版本;`getLineStyle(index)` 返回解析后的 `{ width, color, opacity, zIndex }`,线宽取要素自身 > 规则 > `lineStyle`,不含状态样式、热力倍率、整体倍率与缩放联动。成员总数为 **264 = 259 个方法 + 5 个属性**,options / 数据字段 / 事件 / 功能开关 / 分组保持 **96 / 250 / 43 / 17 / 16**。
|
|
439
|
+
- **Demo 与自测**:`SearchFilterDemo.vue` 增加固定相机飞行、线路换色 / 加宽、改点后版本读数;`selftest-demos.html` 覆盖 `flyToCamera`、`getLineStyle`、`dataVersion` 与 `onDataChange` 同步,`selftest-perf.html` 覆盖窄路读数、`dataVersion` 不变、逐线自身样式 / 虚线保持、规则回退,并记录 2000 线窄路耗时。
|
|
440
|
+
- **性能**:1000 点 + 50000 线连续 5 次交替(无头 Chrome + SwiftShader)。换色稳态 **10.1 ~ 11.7 ms → 6.1 ~ 7.4 ms**,换宽 **9.2 ~ 10.4 ms → 5.8 ~ 6.4 ms**;首轮 18.9 / 17.3 ms,包含槽位表与交互期细线账本首次重建。profile 热点为 `patchLineSlotsInner` 30.8% / `patchLineSlots` 17.3% / `applyLineNarrowFast` 13.0% / `resolveLinePaintInto` 3.8%。
|
|
441
|
+
- **核心文件**:`src/gis-view/line.js`、`src/gis-view/engine.js`、`src/gis-view/create.js`、`src/gis-view/types.d.ts`、`docs/demos/SearchFilterDemo.vue`、`docs/demos/api-index.js`(生成物)、`docs/GisView.md`、`docs/manual/04` / `14` / `16` / `17` / `18` / `19` / `20`、`docs/internals/16-01-优化与取舍-上.md`、`docs/internals/18-性能实测与WebGPU评估.md`、`docs/steps/README.md`、`docs/steps/selftest-{demos,docs,perf}.html`、根 `README.md`、`src/gis-view/README.md` 与本轮 aimd。
|
|
442
|
+
- **验证**:`node --check`(create / engine / line)、`npx tsc --noEmit`、`node docs/steps/gen-api-index.mjs --check`、`npm run check:docs`(**264** 个实例成员 / **96** 个 options / **250** 个数据字段 / **43** 个事件 / **17** 个功能开关)、四页自测 `full 94` + `demos 365` + `docs 134` + `perf 174` = **767** 条通过 / 0 失败、`npm run build` 与 `git diff --check` 全部通过。复查入口见 [06 的增量记录](ai/06-会话索引与复查方法.md#2026-10-23-增量问题txt两项线路样式窄路与新-api-能力)。
|
|
443
|
+
|
|
444
|
+
## 2026-10-23 增量(「修改.txt」:继续深度优化 gis-view 整体性能)
|
|
445
|
+
|
|
446
|
+
本轮仍是现有会话的继续增量,没有新建会话归档,因此不改上表的 39 条会话统计。需求原话来自仓库根目录的 `修改.txt`:继续深度优化组件整体性能,允许大改,只要确实有效。
|
|
447
|
+
|
|
448
|
+
- **聚合空转**:`flushPointClusterLayout()` 在聚合未启用且上一帧没有聚合圆 / 隐藏点 / 聚合实例时只清脏标记,不再调用 `layoutScene()`;`notifyCameraChange()` 也只在聚合启用且当前档可能聚合、或上一帧确有聚合结果时因缩放标脏。关闭聚合后连续缩放不再整份重排点和重传实例缓冲。纯相机缩放引起的成员变化在运动期先沿用上一档,数据 / 配置 / 选中 / 拖动 / 跨出聚合档仍立即生效。
|
|
449
|
+
- **程序化相机运动**:新增 `cameraMoving` 160 ms 短窗口,`zoomBy` / `setCamera` / `centerOn` / `flyToCamera` 的真实位置变化复用细线 `gl.LINES` 与非 MSAA 后备缓冲;同一相机位置重复 `setCamera` 不续期,避免外部定时同步视角永久停在轻量档。停稳后补一张全质量帧、刷新通道宽度并恢复符号预烤。
|
|
450
|
+
- **停稳边界**:聚合重排被推迟时,即便当前场景没有线且显式关闭了后备缓冲、这一轮没有画出任何轻量几何,计时器也会补一帧完成聚合重算;新增 12000 点、无边场景的回归断言钉住这一条。
|
|
451
|
+
- **实测**:无头 Chrome + ANGLE(AMD Radeon Graphics / D3D11),1280×800,10 万点 / 5 万线,`quality: 'high'`;同一命令下连续缩放 p50 **67.9 → 22.5 ms**、p95 **76.2 → 25.1 ms**、avg **60.77 → 20.57 ms**。平移 p50 17.1 → 17.2 ms(帧节拍波动),`refresh()` 56.2 → 53.7 ms;终态 `thinLines=false`、`noMsaa=false`、`frameMs=0.10`。CPU profile 里 `render` 自身约 0.1%,剩余成本主要是 GPU 光栅化与帧节拍,收益口径是省掉整份重排 / 上传与运动期 MSAA 细线光栅化,不是把单帧渲染降到 1 ms。
|
|
452
|
+
- **核心文件**:`src/gis-view/engine.js`、`docs/steps/selftest-perf.html`、`docs/manual/20-性能与大数据.md`、`docs/internals/16-03-优化与取舍-下.md`、`docs/internals/18-性能实测与WebGPU评估.md`、根 `README.md`、`src/gis-view/README.md`、本轮 aimd。
|
|
453
|
+
- **验证**:`node --check src/gis-view/engine.js`、`npx tsc --noEmit`、`node docs/steps/gen-api-index.mjs --check`、`npm run check:docs`(**264** 个实例成员 / **96** 个 options / **250** 个数据字段 / **43** 个事件 / **17** 个功能开关)、四页自测 `full 94` / `demos 365` / `docs 134` / `perf 181`(合计 **774** 条通过 / 0 失败)、`npm run build` 与 `git diff --check` 全部通过。公开实例成员、options 与数据字段计数未变。复查入口见 [06 的增量记录](ai/06-会话索引与复查方法.md#2026-10-23-增量修改txt继续深度优化-gis-view-整体性能)。
|
|
454
|
+
|
|
455
|
+
## 2026-10-26 增量(「修改.txt」:修复放大缩小与移动时的短暂模糊)
|
|
456
|
+
|
|
457
|
+
本轮仍是现有会话的继续增量,没有新建会话归档,因此不改上表的 39 条会话统计。需求原话来自仓库根目录最新的 `修改.txt`:修改 gis-view 组件;修改之后放大缩小 / 移动会模糊一下。核对后确认根因是上一轮加入的运动期自适应分辨率:帧间隔超过 22 ms 时把后备缓冲降到 0.65× / 0.5×,再用线性过滤放大贴回。
|
|
458
|
+
|
|
459
|
+
- **根因与撤回**:`engine.js` 删除 `MOTION_RESOLUTION_STEPS` / `sampleMotionResolution()`,运动帧不再缩小 viewport,也不再按 `drawWidth` / `drawHeight` / `framePixelRatio` 计算像素尺度;`shaders.js` 的 `u_offsetScale`、`u_uvOffset` / `u_uvScale` 与 `create.js` 的 `exportFrame` 配套路径一并撤回。交互、滚轮和 `zoomBy` / `setCamera` / 飞行帧现在始终按画布全分辨率绘制,整幅贴回保持 1:1;停稳 160 ms 后照旧恢复 MSAA 静态帧。
|
|
460
|
+
- **保留的优化**:相机轻量窗口、细线 `gl.LINES` 与非 MSAA 后备缓冲仍保留,只换画法、不降分辨率。`pointSizeScale` / `lineWidthScale` / `pointZoomScale` / `lineZoomScale` / `zoomBaseScale` 连续变化时继续走 `scaleMotion` 窗口,暂停符号重烤与预烤,停手后对齐当前尺寸档;相机与尺寸窗口重叠时由最后停下的一方补质量帧。
|
|
461
|
+
- **回归与性能**:`selftest-perf.html` 新增 1 条断言:连续改相机并人为拉长帧间隔,记录到的每次 `gl.viewport` 都必须等于画布全尺寸。最终全分辨率基准为无头 Chrome + ANGLE / AMD D3D11、1280×800、三次取中位:10 万点 / 5 万线缩放 p50 **23.2 ms** / p95 **28.6 ms**、平移 **16.7 / 18.2 ms**;10 万点 / 10 万线缩放 **42.6 / 46.3 ms**、平移 **16.7 / 24.5 ms**。
|
|
462
|
+
- **核心文件**:`src/gis-view/engine.js`、`docs/steps/selftest-perf.html`、`docs/steps/README.md`、`docs/manual/20-性能与大数据.md`、根 `README.md`、`src/gis-view/README.md` 与本轮 aimd;`src/gis-view/shaders.js` / `create.js` 的上一轮配套改动已撤回至 HEAD。
|
|
463
|
+
- **验证**:`node --check src/gis-view/engine.js`、`node --check src/gis-view/create.js`、`node --check src/gis-view/shaders.js`、`npx tsc --noEmit`、`node docs/steps/gen-api-index.mjs`(264 个实例成员未变)、`npm run check:docs`(264 个实例成员 / 250 个方法 / 250 个数据字段 / 96 个 options / 43 个事件 / 17 个功能开关)、九个定向自测页 **1504** 条通过 / 0 失败(features 672 / actions 96 / data 103 / decoration 75 / select 69 / labels 165 / effects 96 / docs 134 / full 94)、`npm run build` 与 `git diff --check` 全部通过。`selftest-perf` **181 / 1**(共 182 条;标签定向重排读数 1313 次、重复 0 条,HEAD 基线已复现),新增的相机全分辨率断言通过;`selftest-scale` 117 / 2(onFilter 计数为 0,筛选链路未改)。公开实例成员、options 与数据字段计数未变。复查入口见 [06 的增量记录](ai/06-会话索引与复查方法.md#2026-10-26-增量修改txt修复放大缩小与移动时的短暂模糊)。
|
|
464
|
+
|
|
465
|
+
## 2026-10-26 增量(「修改.txt」:继续优化 gis-view,回答“感觉没提升多少”)
|
|
466
|
+
|
|
467
|
+
本轮仍是现有会话的继续增量,没有新建会话归档,因此不改上表的 39 条会话统计。需求原话来自仓库根目录最新的 `修改.txt`:修改 gis-view 组件;这样修改之后性能提升了吗,感觉没提升多少。
|
|
468
|
+
|
|
469
|
+
- **先排除 JS**:10 万线交互的 CPU profile 约 **98.6% idle**、`render` 自身约 **0.1%**;上一轮省掉的是场景重排、实例上传与相机排帧,主线程已经接近空转。用户仍会觉得慢,是因为每条可见线在 GPU 片元里继续执行虚线取模、`smoothstep`、边缘覆盖率与光晕分支,且此前优化没有覆盖所有线宽。
|
|
470
|
+
- **片元管线专用化**:`shaders.js` 新增 `THIN_LINE_FRAGMENT_SHADER`,交互期 `gl.LINES` 只输出实例颜色,顶点侧不再携带虚线 / AA / 光晕 varying;新增 `SOLID_LINE_FRAGMENT_SHADER`,整批无虚线且这一遍不是热力光晕的四边形线路跳过虚线取模 / `smoothstep` / 光晕分支,只保留颜色与非 MSAA 边缘覆盖率。`engine.js` 的 `drawLineBatch` 按批切换,`refreshLineThinLedger` 同时返回是否全实线;线宽、端点圆头、全分辨率与停稳后的 MSAA 静态帧都保持。另加属性槽位一致性检查,驱动给两个程序分配不同位置时自动回退通用片元,避免跨驱动画面异常。
|
|
471
|
+
- **门槛修正**:细线快路径实际条件是最大半宽 ≤ 0.6 设备像素且无虚线(dpr = 1 时约 1.2px 线宽,2px 实线不会命中);文档里此前写的「3px 以内」已同步纠正。2px 实线只吃四边形轻量片元,10 万线实测约 **82.4 → 63.9 ms**。
|
|
472
|
+
- **实测**:无头 Chrome + ANGLE / AMD D3D11、1280×800、`quality: 'high'`,三次运行取中位。10 万点 / 5 万线缩放 p50 **23.2 → 16.7 ms**、p95 **28.6 → 16.8 ~ 16.9 ms**;10 万点 / 10 万线缩放 p50 **42.6 → 18.0 ms**、p95 **46.3 → 21.4 ms**,平移 p50 **16.7 ms**。16 ~ 18 ms 已接近 60Hz 帧节拍,剩余成本是 GPU 填充率;继续明显提速只能减少可见线段数或屏幕覆盖面积。
|
|
473
|
+
- **正确性回归**:`selftest-perf.html` 新增 1 条像素级对拍,在同一交互状态下比较细线专用管线与四边形画法的线像素数量和整幅颜色差,防止新管线画丢、画黑或换色;新增断言与既有断言均通过。
|
|
474
|
+
- **核心文件**:`src/gis-view/shaders.js`、`src/gis-view/engine.js`、`docs/steps/selftest-perf.html`、`docs/steps/README.md`、`docs/manual/03-配置项.md`、`docs/manual/05-画质与批量更新.md`、`docs/manual/20-性能与大数据.md`、`docs/manual/21-说明与常见问题.md`、`docs/internals/18-性能实测与WebGPU评估.md`、根 `README.md`、`src/gis-view/README.md` 与本轮 aimd。
|
|
475
|
+
- **验证**:`node --check src/gis-view/engine.js`、`node --check src/gis-view/shaders.js`、`npx tsc --noEmit`、`node docs/steps/gen-api-index.mjs`(264 个实例成员未变)、`npm run check:docs`(264 个实例成员 / 250 个方法 / 250 个数据字段 / 96 个 options / 43 个事件 / 17 个功能开关)、九个定向自测页 **1504** 条通过 / 0 失败、`npm run build` 与 `git diff --check` 全部通过。`selftest-perf` **182 / 1**(共 183 条;标签读数 1313 次、重复 0 条,HEAD 基线已复现),新增像素断言通过;`selftest-scale` 117 / 2(既有的 onFilter 计数失败,筛选链路未改)。公开实例成员、options 与数据字段计数未变。复查入口见 [06 的增量记录](ai/06-会话索引与复查方法.md#2026-10-26-增量修改txt线片段着色管线专用化)。
|
package/docs/GisView.md
CHANGED
|
@@ -1,53 +1,53 @@
|
|
|
1
|
-
# GisView
|
|
2
|
-
|
|
3
|
-
`GisView` 是一套不依赖任何第三方图形库的 WebGL2 矢量视图:渲染层是原生 WebGL2(GLSL ES 3.00 + 实例化绘制),交互层只有指针与滚轮,界面只内置可选的小地图(配 `minimap` 才有,见「鹰眼图」),其余全靠使用方。它没有 Vue 组件形态,用 `createGisView(dom, options)` 把画布直接挂到传入的 DOM 上,宽高默认跟随容器。
|
|
4
|
-
|
|
5
|
-
控制面板、读数面板、图例这类视图工具都不内置:组件只提供画布与实例方法,样式和布局完全由使用方决定,后续改样式不需要等待组件升级。数据侧该有的都给了:按属性筛选(默认只隐藏,也可显式从数据删除;点被过滤时绑定线路与通道一起消失,大数据量走 Web Worker)、按属性批量配色换符号、节点标签与点 / 线 / 通道的悬浮提示,都可以通过 options 或实例方法配置。
|
|
6
|
-
|
|
7
|
-
**这份手册按主题拆成了 21 章,正文在 [`docs/manual/`](manual/) 下**:找方法先看 [16 实例方法总表](manual/16-实例方法总表.md),查参数跳 [17 参数速查](manual/17-参数速查.md),要能直接复制的调用看 [18 逐方法示例](manual/18-逐方法示例.md);只想先跑起来看 [01 快速开始](manual/01-快速开始.md)。
|
|
8
|
-
|
|
9
|
-
- 想在页面上按方法名搜、直接看示例:打开 [API 速查(方法 + 示例)](api/index.html)(清单就是从 17 / 18 两章生成的;支持深浅主题、左侧分组跟随与 `#成员名` 深链);要边改边跑用 [调试演示页](playground/index.html)。
|
|
10
|
-
- 「某个特性怎么实现、为什么这么做」看 [GisView 实现原理](GisView实现原理.md);数据的标准写法与五套口径看 [数据格式](数据格式.md)。
|
|
11
|
-
- 复制 / 合并 / 通道分组 / 拐点要接真实后端:请求头、body、成功响应、409 / 500、幂等与前端重试流程看 [编辑接口协议](接口协议.md);成功响应怎么落到本地数据(`idMap` 改写、合并对账、分组 / 拐点覆盖、409 局部恢复)见其中的「前端落地映射」。
|
|
12
|
-
- 后端 DTO 与内置列名不一致时,不必改组件:用 `defineExportFormat`(或底层的 `registerExportFormat`)注册一个同步导出格式,把标准文档映射成自己的表结构,见 [自定义导出格式](manual/15-导出与集成.md#自定义导出格式后端-dto)。
|
|
13
|
-
- 想照着源码从零写一遍看 [从 0 到完整的实现](从0到完整的实现.md);逐文件的教程与自测页在 [docs/steps](steps/README.md)(页面:[docs/steps/index.html](steps/index.html))。
|
|
14
|
-
|
|
15
|
-
## 手册目录
|
|
16
|
-
|
|
17
|
-
| 章 | 讲什么 |
|
|
18
|
-
| --- | --- |
|
|
19
|
-
| [01 快速开始](manual/01-快速开始.md) | 引入与最小示例:装什么、怎么把画布挂到 DOM 上 |
|
|
20
|
-
| [02 坐标与数据](manual/02-坐标与数据.md) | 世界坐标 / 经纬度映射、相机与像素、数据字段全表 |
|
|
21
|
-
| [03 配置项(options)](manual/03-配置项.md) | 全部 options 的总表与逐个详解(默认值、落点、相关开关) |
|
|
22
|
-
| [04 事件与回调](manual/04-事件与回调.md) | 回调清单、事件订阅、两层功能开关、配置提醒 |
|
|
23
|
-
| [05 画质与批量更新](manual/05-画质与批量更新.md) | quality 四档与自动升降;batch 把一批改动作一次提交 |
|
|
24
|
-
| [06 数据与场景更新](manual/06-数据与场景更新.md) | 整份换数据 / 增量追加 / 加载完成回调 / 按方法新增要素 / 历史 |
|
|
25
|
-
| [07 指针与要素编辑](manual/07-指针与要素编辑.md) | 点击与样式、指针事件全字段、光标、拖拽点、复制 / 合并 / 删除 |
|
|
26
|
-
| [08 选中与拐点](manual/08-选中与拐点.md) | 选中与拖动的层级、框选、接口选中、线路拐点的增删改 |
|
|
27
|
-
| [09 通道与多回线](manual/09-通道与多回线.md) | 通道的数据结构、createChannels 批量生成、分组与选中模式 |
|
|
28
|
-
| [10 通道编辑与新增](manual/10-通道编辑与新增.md) | 分组拐点的增删、右键交互框、新增通道的草稿流程、改名与增删回线 |
|
|
29
|
-
| [11 样式与规则](manual/11-样式与规则.md) | 点配置、线配置、条件语言(筛选 / 规则 / 标签共用)与批量样式规则 |
|
|
30
|
-
| [12 标签与装饰](manual/12-标签与装饰.md) | 节点 / 线路标签、标签拖动与编辑、节点与线路装饰、动态装饰器草稿、悬浮提示 |
|
|
31
|
-
| [13 动效与图元](manual/13-动效与图元.md) | 热力图、动画效果、线路方向箭头、贴图预热与自定义图元 |
|
|
32
|
-
| [14 视图与筛选](manual/14-视图与筛选.md) | 筛选、搜索定位、初始视图与缩放范围、背景层、鹰眼图、近义入口 |
|
|
33
|
-
| [15 导出与集成](manual/15-导出与集成.md) | 导出图片 / 选中节点 / 数据、自定义导出格式,插件、自建界面与键盘交互 |
|
|
34
|
-
| [16 实例方法总表](manual/16-实例方法总表.md) | 按功能分组的实例方法主表(找方法从这一章开始) |
|
|
35
|
-
| [17 参数速查(逐个方法)](manual/17-参数速查.md) |
|
|
36
|
-
| [18 逐方法示例(复制就能跑)](manual/18-逐方法示例.md) | 每个成员一段可复制的调用示例(API 速查页读的就是这一章) |
|
|
37
|
-
| [19 读数与拖拽预览](manual/19-读数与拖拽预览.md) | 自建界面常用的读数 / 定位方法;拖拽落点预览 |
|
|
38
|
-
| [20 性能与大数据](manual/20-性能与大数据.md) | 十万级数据的开关与实测、WebGPU 取舍、渲染后端开关 |
|
|
39
|
-
| [21 说明与常见问题](manual/21-说明与常见问题.md) | 边界与口径、FAQ、类型定义索引 |
|
|
40
|
-
|
|
41
|
-
## 快速跳转(按任务)
|
|
42
|
-
|
|
43
|
-
- **上手**:[引入](manual/01-快速开始.md#引入) · [基础用法](manual/01-快速开始.md#基础用法) · [坐标与数据](manual/02-坐标与数据.md)
|
|
44
|
-
- **配置与回调**:[options 总表](manual/03-配置项.md#options) · [回调](manual/04-事件与回调.md#回调) · [功能开关](manual/04-事件与回调.md#功能开关)
|
|
45
|
-
- **通道**:[通道与多回线](manual/09-通道与多回线.md) · [通道编辑与新增](manual/10-通道编辑与新增.md) · [分组拐点](manual/10-通道编辑与新增.md#分组拐点把某一组拉走)
|
|
46
|
-
- **样式**:[点配置](manual/11-样式与规则.md#点配置) · [线配置](manual/11-样式与规则.md#线配置) · [条件语言](manual/11-样式与规则.md#条件语言) · [批量样式规则](manual/11-样式与规则.md#批量样式规则)
|
|
47
|
-
- **标签与动效**:[节点标签](manual/12-标签与装饰.md#节点标签) · [线路标签](manual/12-标签与装饰.md#线路标签) · [标签优化](manual/12-标签与装饰.md#标签显示优化开关labeloptimize) · [扩展图形](manual/12-标签与装饰.md#扩展图形graphic) · [节点装饰](manual/12-标签与装饰.md#节点上的装饰图片--svg) · [线路装饰](manual/12-标签与装饰.md#线路上的装饰图片--svg) · [手动删除装饰](manual/12-标签与装饰.md#手动删除装饰) · [动态装饰器](manual/12-标签与装饰.md#动态装饰器草稿) · [动画效果](manual/13-动效与图元.md#动画效果effects) · [自定义图元](manual/13-动效与图元.md#自定义图元)
|
|
48
|
-
- **视图**:[筛选](manual/14-视图与筛选.md#筛选) · [搜索与定位](manual/14-视图与筛选.md#搜索与定位) · [适应视图的节点间距](manual/14-视图与筛选.md#适应视图的节点间距fitspacing) · [背景层](manual/14-视图与筛选.md#背景层) · [鹰眼图](manual/14-视图与筛选.md#鹰眼图)
|
|
49
|
-
- **导出与集成**:[导出数据](manual/15-导出与集成.md#导出数据) · [自定义导出格式](manual/15-导出与集成.md#自定义导出格式后端-dto) · [插件](manual/15-导出与集成.md#插件) · [实例命令](manual/15-导出与集成.md#实例命令) · [六类扩展点怎么选](manual/15-导出与集成.md#六类扩展点怎么选) · [自建界面](manual/15-导出与集成.md#自建界面)
|
|
50
|
-
- **查方法**:[实例方法总表](manual/16-实例方法总表.md) · [参数速查](manual/17-参数速查.md) · [逐方法示例](manual/18-逐方法示例.md) · [读数与拖拽预览](manual/19-读数与拖拽预览.md)
|
|
51
|
-
- **概念与排查**:[大数据展示模式(denseMode)](manual/20-性能与大数据.md#大数据展示模式densemode) · [大数据量](manual/20-性能与大数据.md#大数据量) · [常见问题](manual/21-说明与常见问题.md#常见问题) · [类型定义索引](manual/21-说明与常见问题.md#类型定义索引)
|
|
52
|
-
|
|
53
|
-
> 本页也可以从文档中心(`docs/index.html`)打开:左侧清单里 `GisView.md` 是这一页,下面紧跟着 21 章手册。
|
|
1
|
+
# GisView
|
|
2
|
+
|
|
3
|
+
`GisView` 是一套不依赖任何第三方图形库的 WebGL2 矢量视图:渲染层是原生 WebGL2(GLSL ES 3.00 + 实例化绘制),交互层只有指针与滚轮,界面只内置可选的小地图(配 `minimap` 才有,见「鹰眼图」),其余全靠使用方。它没有 Vue 组件形态,用 `createGisView(dom, options)` 把画布直接挂到传入的 DOM 上,宽高默认跟随容器。
|
|
4
|
+
|
|
5
|
+
控制面板、读数面板、图例这类视图工具都不内置:组件只提供画布与实例方法,样式和布局完全由使用方决定,后续改样式不需要等待组件升级。数据侧该有的都给了:按属性筛选(默认只隐藏,也可显式从数据删除;点被过滤时绑定线路与通道一起消失,大数据量走 Web Worker)、按属性批量配色换符号、节点标签与点 / 线 / 通道的悬浮提示,都可以通过 options 或实例方法配置。
|
|
6
|
+
|
|
7
|
+
**这份手册按主题拆成了 21 章,正文在 [`docs/manual/`](manual/) 下**:找方法先看 [16 实例方法总表](manual/16-实例方法总表.md),查参数跳 [17 参数速查](manual/17-参数速查.md),要能直接复制的调用看 [18 逐方法示例](manual/18-逐方法示例.md);只想先跑起来看 [01 快速开始](manual/01-快速开始.md)。
|
|
8
|
+
|
|
9
|
+
- 想在页面上按方法名搜、直接看示例:打开 [API 速查(方法 + 示例)](api/index.html)(清单就是从 17 / 18 两章生成的;支持深浅主题、左侧分组跟随与 `#成员名` 深链);要边改边跑用 [调试演示页](playground/index.html)。
|
|
10
|
+
- 「某个特性怎么实现、为什么这么做」看 [GisView 实现原理](GisView实现原理.md);数据的标准写法与五套口径看 [数据格式](数据格式.md)。
|
|
11
|
+
- 复制 / 合并 / 通道分组 / 拐点要接真实后端:请求头、body、成功响应、409 / 500、幂等与前端重试流程看 [编辑接口协议](接口协议.md);成功响应怎么落到本地数据(`idMap` 改写、合并对账、分组 / 拐点覆盖、409 局部恢复)见其中的「前端落地映射」。
|
|
12
|
+
- 后端 DTO 与内置列名不一致时,不必改组件:用 `defineExportFormat`(或底层的 `registerExportFormat`)注册一个同步导出格式,把标准文档映射成自己的表结构,见 [自定义导出格式](manual/15-导出与集成.md#自定义导出格式后端-dto)。
|
|
13
|
+
- 想照着源码从零写一遍看 [从 0 到完整的实现](从0到完整的实现.md);逐文件的教程与自测页在 [docs/steps](steps/README.md)(页面:[docs/steps/index.html](steps/index.html))。
|
|
14
|
+
|
|
15
|
+
## 手册目录
|
|
16
|
+
|
|
17
|
+
| 章 | 讲什么 |
|
|
18
|
+
| --- | --- |
|
|
19
|
+
| [01 快速开始](manual/01-快速开始.md) | 引入与最小示例:装什么、怎么把画布挂到 DOM 上 |
|
|
20
|
+
| [02 坐标与数据](manual/02-坐标与数据.md) | 世界坐标 / 经纬度映射、相机与像素、数据字段全表 |
|
|
21
|
+
| [03 配置项(options)](manual/03-配置项.md) | 全部 options 的总表与逐个详解(默认值、落点、相关开关) |
|
|
22
|
+
| [04 事件与回调](manual/04-事件与回调.md) | 回调清单、事件订阅、两层功能开关、配置提醒 |
|
|
23
|
+
| [05 画质与批量更新](manual/05-画质与批量更新.md) | quality 四档与自动升降;batch 把一批改动作一次提交 |
|
|
24
|
+
| [06 数据与场景更新](manual/06-数据与场景更新.md) | 整份换数据 / 增量追加 / 加载完成回调 / 按方法新增要素 / 历史 |
|
|
25
|
+
| [07 指针与要素编辑](manual/07-指针与要素编辑.md) | 点击与样式、指针事件全字段、光标、拖拽点、复制 / 合并 / 删除 |
|
|
26
|
+
| [08 选中与拐点](manual/08-选中与拐点.md) | 选中与拖动的层级、框选、接口选中、线路拐点的增删改 |
|
|
27
|
+
| [09 通道与多回线](manual/09-通道与多回线.md) | 通道的数据结构、createChannels 批量生成、分组与选中模式 |
|
|
28
|
+
| [10 通道编辑与新增](manual/10-通道编辑与新增.md) | 分组拐点的增删、右键交互框、新增通道的草稿流程、改名与增删回线 |
|
|
29
|
+
| [11 样式与规则](manual/11-样式与规则.md) | 点配置、线配置、条件语言(筛选 / 规则 / 标签共用)与批量样式规则 |
|
|
30
|
+
| [12 标签与装饰](manual/12-标签与装饰.md) | 节点 / 线路标签、标签拖动与编辑、节点与线路装饰、动态装饰器草稿、悬浮提示 |
|
|
31
|
+
| [13 动效与图元](manual/13-动效与图元.md) | 热力图、动画效果、线路方向箭头、贴图预热与自定义图元 |
|
|
32
|
+
| [14 视图与筛选](manual/14-视图与筛选.md) | 筛选、搜索定位、初始视图与缩放范围、背景层、鹰眼图、近义入口 |
|
|
33
|
+
| [15 导出与集成](manual/15-导出与集成.md) | 导出图片 / 选中节点 / 数据、自定义导出格式,插件、自建界面与键盘交互 |
|
|
34
|
+
| [16 实例方法总表](manual/16-实例方法总表.md) | 按功能分组的实例方法主表(找方法从这一章开始) |
|
|
35
|
+
| [17 参数速查(逐个方法)](manual/17-参数速查.md) | 264 个成员逐个列全:参数、默认值与返回 |
|
|
36
|
+
| [18 逐方法示例(复制就能跑)](manual/18-逐方法示例.md) | 每个成员一段可复制的调用示例(API 速查页读的就是这一章) |
|
|
37
|
+
| [19 读数与拖拽预览](manual/19-读数与拖拽预览.md) | 自建界面常用的读数 / 定位方法;拖拽落点预览 |
|
|
38
|
+
| [20 性能与大数据](manual/20-性能与大数据.md) | 十万级数据的开关与实测、WebGPU 取舍、渲染后端开关 |
|
|
39
|
+
| [21 说明与常见问题](manual/21-说明与常见问题.md) | 边界与口径、FAQ、类型定义索引 |
|
|
40
|
+
|
|
41
|
+
## 快速跳转(按任务)
|
|
42
|
+
|
|
43
|
+
- **上手**:[引入](manual/01-快速开始.md#引入) · [基础用法](manual/01-快速开始.md#基础用法) · [坐标与数据](manual/02-坐标与数据.md)
|
|
44
|
+
- **配置与回调**:[options 总表](manual/03-配置项.md#options) · [回调](manual/04-事件与回调.md#回调) · [功能开关](manual/04-事件与回调.md#功能开关)
|
|
45
|
+
- **通道**:[通道与多回线](manual/09-通道与多回线.md) · [通道编辑与新增](manual/10-通道编辑与新增.md) · [分组拐点](manual/10-通道编辑与新增.md#分组拐点把某一组拉走)
|
|
46
|
+
- **样式**:[点配置](manual/11-样式与规则.md#点配置) · [线配置](manual/11-样式与规则.md#线配置) · [条件语言](manual/11-样式与规则.md#条件语言) · [批量样式规则](manual/11-样式与规则.md#批量样式规则)
|
|
47
|
+
- **标签与动效**:[节点标签](manual/12-标签与装饰.md#节点标签) · [线路标签](manual/12-标签与装饰.md#线路标签) · [标签优化](manual/12-标签与装饰.md#标签显示优化开关labeloptimize) · [扩展图形](manual/12-标签与装饰.md#扩展图形graphic) · [节点装饰](manual/12-标签与装饰.md#节点上的装饰图片--svg) · [线路装饰](manual/12-标签与装饰.md#线路上的装饰图片--svg) · [手动删除装饰](manual/12-标签与装饰.md#手动删除装饰) · [动态装饰器](manual/12-标签与装饰.md#动态装饰器草稿) · [动画效果](manual/13-动效与图元.md#动画效果effects) · [自定义图元](manual/13-动效与图元.md#自定义图元)
|
|
48
|
+
- **视图**:[筛选](manual/14-视图与筛选.md#筛选) · [搜索与定位](manual/14-视图与筛选.md#搜索与定位) · [适应视图的节点间距](manual/14-视图与筛选.md#适应视图的节点间距fitspacing) · [背景层](manual/14-视图与筛选.md#背景层) · [鹰眼图](manual/14-视图与筛选.md#鹰眼图)
|
|
49
|
+
- **导出与集成**:[导出数据](manual/15-导出与集成.md#导出数据) · [自定义导出格式](manual/15-导出与集成.md#自定义导出格式后端-dto) · [插件](manual/15-导出与集成.md#插件) · [实例命令](manual/15-导出与集成.md#实例命令) · [六类扩展点怎么选](manual/15-导出与集成.md#六类扩展点怎么选) · [自建界面](manual/15-导出与集成.md#自建界面)
|
|
50
|
+
- **查方法**:[实例方法总表](manual/16-实例方法总表.md) · [参数速查](manual/17-参数速查.md) · [逐方法示例](manual/18-逐方法示例.md) · [读数与拖拽预览](manual/19-读数与拖拽预览.md)
|
|
51
|
+
- **概念与排查**:[大数据展示模式(denseMode)](manual/20-性能与大数据.md#大数据展示模式densemode) · [大数据量](manual/20-性能与大数据.md#大数据量) · [常见问题](manual/21-说明与常见问题.md#常见问题) · [类型定义索引](manual/21-说明与常见问题.md#类型定义索引)
|
|
52
|
+
|
|
53
|
+
> 本页也可以从文档中心(`docs/index.html`)打开:左侧清单里 `GisView.md` 是这一页,下面紧跟着 21 章手册。
|
|
@@ -357,6 +357,97 @@
|
|
|
357
357
|
- **核心文件**:`src/gis-view/create.js`、`engine.js`、`events.js`、`types.d.ts`、`docs/api/index.html`、`docs/demos/ExtensionDemo.vue`、`SearchFilterDemo.vue`、`ApiCoverageDemo.vue`、`gis-view-demo/useGisViewDemo.js`、`gis-view-demo/panels/OpsPanels.vue`、`gis-view-demo/GisViewDemoCardHeader.vue`、`demos.js`、`api-index.js`(生成物)、`README.md`、`src/gis-view/README.md`、`docs/GisView.md`、`docs/index.html`、`docs/manual/08` / `14` / `15` / `16` / `17` / `18` / `19`、`docs/steps/README.md`、`docs/steps/selftest-features.html` / `selftest-demos.html` / `selftest-docs.html` 与本轮 aimd。
|
|
358
358
|
- **验证**:`selftest-features.html` **672** 条、`selftest-demos.html` **337** 条、`selftest-docs.html` **134** 条,三页共 **1143** 条通过 / 0 失败;`node --check src/gis-view/create.js`、`npx tsc --noEmit`、`npm run build`、`node docs/steps/gen-api-index.mjs`、`npm run check:docs`(256 个实例成员 = 253 个方法 + 3 个属性 / 96 个 options / 16 个分组 / 250 个数据字段)与 `git diff --check` 全部通过。详细口径见 [AI 对话汇总的本轮增量](../AI对话汇总.md#2026-10-23-增量修改txt四项focuson-缺省居中--文档互跳--扩展命令--性能优化)。
|
|
359
359
|
|
|
360
|
+
### 2026-10-23 增量(「问题.txt」五项:鹰眼图回线居中 / 动态位置 / backgroundStyle / 主图样式 / 外部挂载)
|
|
361
|
+
|
|
362
|
+
本轮仍是现有会话的继续增量,没有独立会话归档,因此不改上表的 39 条统计。需求原话来自仓库根目录的 `问题.txt`:取消通道回线后双回线应居中、支持动态移动鹰眼图、确认 `backgroundStyle` 生效、沿用主图后节点尺寸与图标一致、支持挂到外部 `div`。
|
|
363
|
+
|
|
364
|
+
- **回线居中**:`create.js` 的 `averageMinimapPaths()` 在当前可见成员间逐顶点平均,`channelCircuits: false` 只画一根居中代表线;双回线位于两线中间,三回线落在中间线,成员只剩一条时原样保留,路径结构不一致时保守回退第一条可见路径。
|
|
365
|
+
- **动态位置与外部挂载**:`minimap.offset` 使用统一的正向右 / 正向下位移,`updateOptions` 可即时移动;`minimap.container` 支持元素或选择器,`syncAttachment()` 只移动同一根节点;新增 `getMinimapElement()` 供宿主绑定整图拖动。宿主需要定位上下文,选择器失效时回落主视图根节点。
|
|
366
|
+
- **backgroundStyle 与主图样式**:显式 `backgroundStyle` 时画布不再铺不透明主图底色,保留图片 / GeoJSON;`inheritRules` 的节点尺寸与符号改为取主图最终 `getPointStyle()` 结果,圆形用 `CIRCLE_AREA_FACTOR` 还原,图片 / SVG / 自定义图元支持异步加载后补画。
|
|
367
|
+
- **文档与验证**:同步手册 `03` / `09` / `14` / `16` / `17` / `18` / `21`、`docs/internals/13-鹰眼图.md`、根 `README.md`、`src/gis-view/README.md`、`docs/GisView.md` 与文档索引;`selftest-full.html` 增加 5 条断言。`selftest-full.html` **85** 条、`selftest-docs.html` **134** 条、`selftest-demos.html` **337** 条,三页共 **556** 条通过 / 0 失败;`npx tsc --noEmit`、`node --check`(minimap / create / engine)、`node docs/steps/gen-api-index.mjs --check`、`npm run check:docs`(**257** 个实例成员 = **254** 个方法 + 3 个属性 / **96** 个 options / **250** 个数据字段 / **16** 个分组)、`npm run build` 与 `git diff --check` 全部通过。详细口径见 [AI 对话汇总的本轮增量](../AI对话汇总.md#2026-10-23-增量问题txt五项鹰眼图回线居中--动态位置--backgroundstyle--主图样式--外部挂载)。
|
|
368
|
+
|
|
369
|
+
### 2026-10-23 增量:鹰眼图缩放联动与新增通道示例节点
|
|
370
|
+
|
|
371
|
+
本轮仍是现有会话的继续增量,没有独立会话归档,因此不改上表的 39 条统计。需求原话来自仓库根目录的 `修改.txt` 五项与 `问题.txt` 三项:沿用主图规则后节点按鹰眼图 / 主图比例缩放、`box` 拖拽不再依赖缩放、增加与手动缩放互斥的跟随主图模式、`commitAddChannel` 直接接收新增对象、草稿示例点居中且可配、`auto` 范围跟相机改为默认关闭、补鹰眼图拖拽 demo,以及继承节点按两边视口尺寸而不是主图放大倍数缩放。
|
|
372
|
+
|
|
373
|
+
- **鹰眼图**:`minimap.js` 的 `inheritedSizeFactor()` 改用两边 CSS 视口宽高的较小比例,`inheritSize` 节点不再跟主图相机倍数变化;`extentFollowCamera` 默认 `false`,`extent: 'auto'` 默认保持「数据 ∪ 底图」;`zoomable` 三态为 `false` / `true` / `'follow'`,`followZoomScale` 控制跟随指数,手动缩放与跟随互斥,跟随档不接受 `setMinimapZoom` / `zoomMinimapBy` 抢控制;`dragAction: 'box'` 在关闭缩放时也可用。
|
|
374
|
+
- **新增通道**:`commitAddChannel` 增加对象入参,直接给通道 / 线路或 `{ channel, line, lines, ... }` 均可;对象字段优先、缺省续用草稿,直接线路的业务字段与样式透传到 `lineProps`,直接通道支持 `lineIds` / `groups` / `lineProps` / `channelProps`。草稿示例点固定在真实节点中心,`dots` 支持显隐 / 分端样式 / 尺寸 / 圆方形状,`channelDraftStyle.layer` 可设 `'below-points'` 让示例线压在真实节点下面。
|
|
375
|
+
- **Demo 与文档**:`ConnectDemo` 展示指定起点、示例点样式与对象直传;`MinimapDemo` 展示三态缩放、跟随指数、范围开关与框选 / 平移拖拽。同步 `README.md`、`docs/manual/03` / `10` / `14` / `16` / `17` / `18` / `21`、`docs/internals/13-鹰眼图.md`、`docs/steps/README.md` 和 `docs/demos/api-index.js`。
|
|
376
|
+
- **验证**:`selftest-full.html` **86** 条、`selftest-features.html` **672** 条、`selftest-demos.html` **349** 条、`selftest-docs.html` **134** 条,四页共 **1241** 条通过 / 0 失败;`npx tsc --noEmit`、`node --check`(minimap / create / engine)、`node docs/steps/gen-api-index.mjs --check`、`npm run check:docs`(257 个实例成员 / 96 个 options / 250 个数据字段 / 43 个事件 / 17 个功能开关)、`npm run build` 与 `git diff --check` 全部通过。详细口径见 [AI 对话汇总的本轮增量](../AI对话汇总.md#2026-10-23-增量鹰眼图缩放联动与新增通道示例节点)。
|
|
377
|
+
|
|
378
|
+
### 2026-10-23 增量:鹰眼图继承要素尺寸与地图缩放解耦
|
|
379
|
+
|
|
380
|
+
本轮仍是现有会话的继续增量,没有独立会话归档,因此不改上表的 39 条统计。需求原话来自仓库根目录的 `问题.txt` 三项:范围跟随相机默认关闭、补鹰眼图拖拽 demo、澄清继承节点 / 线路的尺寸语义。前两项已在当前工作树实现;本轮完成第三项,把继承尺寸与主图相机倍数彻底解耦。
|
|
381
|
+
|
|
382
|
+
- **继承线宽**:`resolveLineStyleInto()` 新增 `baseWidth`,`engine.getLineStyle(index)` 返回样式链原始线宽;`collectMinimapData()` 在未配自有 `lineRules` 时写入继承线宽并标记 `inheritWidth`,与节点的 `inheritSize` 一样乘两边 CSS 视口的较小比例。
|
|
383
|
+
- **缩放口径**:继承节点 = `pointSizeScale × 小图自身缩放指数 × 视口比例`,继承线路 = `lineWidthScale × 小图自身缩放指数 × 视口比例`;主图缩放不进入这两条公式,`pointMapZoomScale` / `lineMapZoomScale` 只作用于小图自有规则 / 样式。点 / 线路缓存键同步拆分这些系数,避免继承尺寸与主图倍数错误互相失效。
|
|
384
|
+
- **Demo 与文档**:`MinimapDemo` 默认沿用主图,提供节点 / 线路各自的整体倍数与小图缩放指数控件,保留框选 / 平移拖拽演示;主 demo 在沿用模式下禁用地图倍数联动。同步类型注释、根 `README.md`、`src/gis-view/README.md`、手册 `03` / `14`、内部文档 `13` 与生成的 `docs/demos/api-index.js`。
|
|
385
|
+
- **验证**:`selftest-full.html` **92** 条、`selftest-features.html` **672** 条、`selftest-demos.html` **351** 条、`selftest-docs.html` **134** 条,四页共 **1249** 条通过 / 0 失败;`npx tsc --noEmit`、`node --check`(minimap / create / engine / line)、`node docs/steps/gen-api-index.mjs --check`、`npm run check:docs`(257 个实例成员 / 96 个 options / 250 个数据字段 / 43 个事件 / 17 个功能开关)、`npm run build` 与 `git diff --check` 全部通过。详细口径见 [AI 对话汇总的本轮增量](../AI对话汇总.md#2026-10-23-增量鹰眼图继承要素尺寸与地图缩放解耦)。
|
|
386
|
+
|
|
387
|
+
### 2026-10-23 增量(「修改.txt」三项:commitAddChannel 文档 / 传参示例 / 线路半跳过)
|
|
388
|
+
|
|
389
|
+
本轮仍是现有会话的继续增量,没有独立会话归档,因此不改上表的 39 条统计。需求原话来自仓库根目录的 `修改.txt` 三项:说明 `commitAddChannel` 的传参与写法、把方法用法和示例写详细、继续优化组件性能。
|
|
390
|
+
|
|
391
|
+
- **文档**:手册 `10` 补齐五种入参(无参 / 旧 resolution / 直接线路 / 直接通道 / 容器)、精确字段优先级与并组限制;明确草稿只认 `from`(没有 `to`)、直接通道 `id` 不是回线种子、`line` 与 `lines` 语义不同、空数组沿用草稿、容器不合并 `channel.lineProps`、方案读数只能取 `{ type, groupId, groupIndex, channelId }` 子集。`18` 增加逐项示例,`16` / `17` 与 `types.d.ts` 同步参数说明。
|
|
392
|
+
- **性能**:`engine.js` 新增线路半跳过;命中时复用上一轮线路解析结果与包围盒,跳过 `resolveLines` 及索引 / 虚线 / 层序 / 包围盒几趟。追加补线与增量改线维护线路半包围盒,`lineHalfOutOfSync` 负责失效兜底。20000 点 / 8000 线原样回灌中位 **14.3 → 6.3 ms**。
|
|
393
|
+
- **自测与文档**:`selftest-perf.html` 新增 3 条断言,锁住原样回灌、通道声明未变沿用派生折线、换骨架必须重推几何;性能页 **167** 条通过。性能记录同步到内部文档 `16-01` 的 16.37 与 `18` 的第十六轮。
|
|
394
|
+
- **验证**:五页自测 full **92** / features **672** / demos **351** / docs **134** / perf **167**,合计 **1416** 条通过 / 0 失败;`node --check`、`node docs/steps/gen-api-index.mjs`、`npm run check:docs`(257 个实例成员 / 96 个 options / 250 个数据字段 / 43 个事件 / 17 个功能开关)、`npx tsc --noEmit`、`npm run build` 与 `git diff --check` 全部通过。详细口径见 [AI 对话汇总的本轮增量](../AI对话汇总.md#2026-10-23-增量修改txt三项commitaddchannel-文档--传参示例--线路半跳过)。
|
|
395
|
+
|
|
396
|
+
### 2026-10-23 增量(「问题.txt」两项:鹰眼图范围锁定开关 / 整图拖动 demo)
|
|
397
|
+
|
|
398
|
+
本轮仍是现有会话的继续增量,没有独立会话归档,因此不改上表的 39 条统计。需求原话来自仓库根目录的 `问题.txt`:外围内容消失不应让鹰眼图自动重算包围盒,该行为做成默认关闭的开关;另补整体拖拽鹰眼图的 demo。
|
|
399
|
+
|
|
400
|
+
- **范围锁定**:`minimap.extentFollowContent` 默认 `false`。`minimap.js` 用 `pinnedExtent` 锁住首次取得的动态数据 / 底图范围,内容筛选、显隐或增删只重画要素,小图范围与视口框保持不动;打开后跟随当前可见内容。显式改 `extent` 或切换开关会清锁并重新取范围,`extentFollowCamera` 的相机取舍使用锁定后的两份范围。
|
|
401
|
+
- **整图拖动**:`MinimapDemo.vue` 在 `getMinimapElement()` 根节点挂独立手柄,手势不进入小图框选 / 平移;累计位移写回 `offset`,窗口级事件收尾,并提供方向键微调、复位与读数。
|
|
402
|
+
- **自测与文档**:`selftest-full.html` 增加 2 条范围锁定断言,`selftest-demos.html` 增加 4 条开关 / 拖动 / 复位断言;同步手册 `03` / `14`、内部文档 `13`、两个 README、类型注释与生成的 `docs/demos/api-index.js`。
|
|
403
|
+
- **验证**:定向三页 full **94** / demos **355** / docs **134**,合计 **583** 条通过 / 0 失败;全量 14 页 **2295** 条通过 / 2 条失败,失败均为 `selftest-scale` 的筛选回调计数,与 minimap 改动无关。`node --check`、`npx tsc --noEmit`、`node docs/steps/gen-api-index.mjs --check`、`npm run check:docs`(257 个实例成员 / 96 个 options / 250 个数据字段 / 43 个事件 / 17 个功能开关)、`npm run build` 与 `git diff --check` 全部通过。详细口径见 [AI 对话汇总的本轮增量](../AI对话汇总.md#2026-10-23-增量问题txt两项鹰眼图范围锁定开关--整图拖动-demo)。
|
|
404
|
+
|
|
405
|
+
### 2026-10-23 增量(「修改.txt」两项:数据包围盒缓存与相机飞行)
|
|
406
|
+
|
|
407
|
+
本轮仍是现有会话的继续增量,没有独立会话归档,因此不改上表的 39 条统计。需求原话来自仓库根目录的 `修改.txt`:① 继续优化组件整体性能;② 补充后续可能需要的新功能、方法、属性与 demo。
|
|
408
|
+
|
|
409
|
+
- **包围盒缓存**:`engine.js` 把整份解析得到的范围接给 `getBounds()` 读数缓存,读数返回独立副本,缓存本身不与 `fusedDataBounds` 共享;`updatePoint` 改坐标、`updateLine` 改路径、拖拽、追加点 / 线、复制预览改坐标都会失效缓存。十万点 + 十万线实测连续读数 **5.2 ~ 6.6 ms / 次 → 0.00 ms / 次**,单点改动后重建约 **3.6 ms**。
|
|
410
|
+
- **相机飞行**:新增 `flyTo` / `stopCameraAnimation` / `getCameraAnimation` / `cameraAnimating`;时长缺省 450 ms,中心线性、比例对数插值,支持三种预设缓动与自定义函数。用户操作、程序化改相机、再次飞行和销毁都会取消;零时长或系统减少动态效果时立即落位。`SearchFilterDemo.vue` 增加飞向选中、停止飞行与进度读数。
|
|
411
|
+
- **自测与文档**:`selftest-perf.html` 增 3 条缓存断言,`selftest-demos.html` 增 5 条飞行 / demo 断言并更新成员清单;同步方法总表、参数速查、逐方法示例、性能手册、两个 README、类型声明与生成的 `docs/demos/api-index.js`。
|
|
412
|
+
- **验证**:`node --check`、`npx tsc --noEmit`、`node docs/steps/gen-api-index.mjs --check`、`npm run check:docs`(261 个实例成员 / 96 个 options / 250 个数据字段 / 43 个事件 / 17 个功能开关)、四页自测 full **94** / demos **360** / docs **134** / perf **170**(合计 **758** 条通过 / 0 失败)、`npm run build` 与 `git diff --check` 全部通过。详细口径见 [AI 对话汇总的本轮增量](../AI对话汇总.md#2026-10-23-增量修改txt两项数据包围盒缓存与相机飞行)。
|
|
413
|
+
|
|
414
|
+
### 2026-10-23 增量(「问题.txt」两项:线路样式窄路与新 API 能力)
|
|
415
|
+
|
|
416
|
+
本轮仍是现有会话的继续增量,没有独立会话归档,因此不改上表的 39 条统计。需求原话来自仓库根目录的 `问题.txt`:① 继续深度优化组件整体性能;② 从长远角度补充可能需要的功能、方法、属性与 demo。
|
|
417
|
+
|
|
418
|
+
- **窄路**:`line.js` 抽出 `resolveLinePaintInto`;`engine.js` 用 `NARROW_LINE_STYLE_BUCKETS` / `lineStyleNarrowChange()` / `applyLineNarrowFast()` 认出只改线宽 / 颜色 / 透明度的补丁。命中时逐条重算 paint 并补实例槽位,规则、热力、线型 / 阴影 / 效果 / 方向存在时回退整份解析;逐线自身样式与状态样式仍优先。整份重解析、单线更新和窄路都会同步 `baseWidth`。
|
|
419
|
+
- **新 API**:`flyToCamera` 直接飞相机目标;`dataVersion` 只在数据变更时递增,`onDataChange` 载荷同步带出;`getLineStyle` 返回原始线宽 / RGBA / 透明度 / 层级快照,线宽不含状态样式、热力与缩放倍率。成员 264 = 259 方法 + 5 属性。
|
|
420
|
+
- **Demo 与文档**:`SearchFilterDemo.vue` 增加相机飞行、线路换色 / 加宽、改点与版本读数;自测覆盖 `flyToCamera`、`getLineStyle`、`dataVersion`、虚线保持与规则回退。同步 `docs/manual/04` / `14` / `16` / `17` / `18` / `19` / `20`、内部性能文档、两个 README、类型声明与生成的 `docs/demos/api-index.js`。
|
|
421
|
+
- **验证**:`node --check`、`npx tsc --noEmit`、`node docs/steps/gen-api-index.mjs --check`、`npm run check:docs`(264 个实例成员 / 96 个 options / 250 个数据字段 / 43 个事件 / 17 个功能开关)、四页自测 full **94** / demos **365** / docs **134** / perf **174**(合计 **767** 条通过 / 0 失败)、`npm run build` 与 `git diff --check` 全部通过。详细口径见 [AI 对话汇总的本轮增量](../AI对话汇总.md#2026-10-23-增量问题txt两项线路样式窄路与新-api-能力)。
|
|
422
|
+
|
|
423
|
+
### 2026-10-23 增量(「修改.txt」:继续深度优化 gis-view 整体性能)
|
|
424
|
+
|
|
425
|
+
本轮仍是现有会话的继续增量,没有独立会话归档,因此不改上表的 39 条统计。需求来自仓库根目录的 `修改.txt`:继续深度优化组件整体性能,允许大改,只要确实有效。
|
|
426
|
+
|
|
427
|
+
- **聚合空转**:`flushPointClusterLayout()` 在聚合未启用且没有上一帧聚合结果时只清脏标记,不跑 `layoutScene()`;`notifyCameraChange()` 只在聚合启用且当前档可能变化、或确有旧聚合结果时因缩放标脏。纯相机缩放引起的成员变化在运动期沿用旧档,停稳后重算;配置 / 数据 / 选中 / 拖动 / 跨出 `maxZoom` 仍立即生效。
|
|
428
|
+
- **程序化相机快路径**:`zoomBy` / `setCamera` / `centerOn` / `flyToCamera` 的真实相机变化进入 160 ms 短窗口,运动帧走细线 `gl.LINES` 与非 MSAA 后备缓冲;同一位置重复 `setCamera` 不续期。停稳后补全质量帧、刷新通道宽度并恢复符号预烤。若聚合重排被推迟但这一轮没有轻量几何,计时器仍会补帧完成重算。
|
|
429
|
+
- **核心文件**:`src/gis-view/engine.js`、`docs/steps/selftest-perf.html`、`docs/manual/20-性能与大数据.md`、`docs/internals/16-03-优化与取舍-下.md`、`docs/internals/18-性能实测与WebGPU评估.md`、根 `README.md`、`src/gis-view/README.md`、`docs/AI对话汇总.md`。
|
|
430
|
+
- **实测**:无头 Chrome + ANGLE / AMD D3D11,1280×800,10 万点 / 5 万线,`quality: 'high'`;连续缩放 p50 **67.9 → 22.5 ms**、p95 **76.2 → 25.1 ms**、avg **60.77 → 20.57 ms**。平移 p50 17.1 → 17.2 ms(帧节拍波动),`refresh()` 56.2 → 53.7 ms;终态 `thinLines=false`、`noMsaa=false`。收益口径是消除整份重排 / 上传与运动期 MSAA 细线光栅化,不是把单帧渲染降到 1 ms。
|
|
431
|
+
- **验证**:`node --check`、`npx tsc --noEmit`、`node docs/steps/gen-api-index.mjs --check`、`npm run check:docs`(264 个实例成员 / 96 个 options / 250 个数据字段 / 43 个事件 / 17 个功能开关)、四页自测 `full 94` / `demos 365` / `docs 134` / `perf 181` 共 **774** 条通过 / 0 失败、`npm run build` 与 `git diff --check` 全部通过。详细口径见 [AI 对话汇总的本轮增量](../AI对话汇总.md#2026-10-23-增量修改txt继续深度优化-gis-view-整体性能)。
|
|
432
|
+
|
|
433
|
+
### 2026-10-26 增量(「修改.txt」:修复放大缩小与移动时的短暂模糊)
|
|
434
|
+
|
|
435
|
+
本轮仍是现有会话的继续增量,没有独立会话归档,因此不改上表的 39 条统计。需求原话来自仓库根目录最新的 `修改.txt`:修改 gis-view 组件;修改之后放大缩小 / 移动会模糊一下。根因是上一轮运动帧按 rAF 间隔降到 0.65× / 0.5× 后线性放大贴回,本轮已移除。
|
|
436
|
+
|
|
437
|
+
- **撤回降采样**:`engine.js` 删除 `MOTION_RESOLUTION_STEPS` / `sampleMotionResolution()` 与 `drawWidth` / `drawHeight` / `framePixelRatio` 一套像素尺度,运动帧 viewport 始终是画布全尺寸;`shaders.js` 的 `u_offsetScale` / `u_uvOffset` / `u_uvScale` 和 `create.js` 的 `exportFrame` 配套标记同步撤回至 HEAD。交互、滚轮、程序化相机与尺寸倍率变化都保持全分辨率,停稳 160 ms 后恢复 MSAA 静态帧。
|
|
438
|
+
- **保留轻量窗口**:相机运动窗口、细线 `gl.LINES`、非 MSAA 后备缓冲不变;`scaleMotion` 仍只在尺寸倍率连续变化时暂停符号重烤与预烤,停手后对齐当前档,不改变分辨率。相机与尺寸窗口重叠时由最后停下的一方补质量帧。
|
|
439
|
+
- **回归与实测**:`selftest-perf.html` 新增 1 条断言,拉长运动帧间隔并连续改相机,所有 `gl.viewport` 仍必须等于画布全尺寸。无头 Chrome + ANGLE / AMD D3D11、1280×800、三次取中位:10 万点 / 5 万线缩放 p50 **23.2 ms** / p95 **28.6 ms**、平移 **16.7 / 18.2 ms**;10 万点 / 10 万线缩放 **42.6 / 46.3 ms**、平移 **16.7 / 24.5 ms**。
|
|
440
|
+
- **核心文件**:`src/gis-view/engine.js`、`docs/steps/selftest-perf.html`、`docs/steps/README.md`、`docs/manual/20-性能与大数据.md`、根 `README.md`、`src/gis-view/README.md` 与本轮 aimd。
|
|
441
|
+
- **验证**:`node --check`(engine / create / shaders)、`npx tsc --noEmit`、`node docs/steps/gen-api-index.mjs`(264 个实例成员未变)、`npm run check:docs`(264 个实例成员 / 250 个方法 / 250 个数据字段 / 96 个 options / 43 个事件 / 17 个功能开关)、九个定向自测页 **1504** 条通过 / 0 失败(features / actions / data / decoration / select / labels / effects / docs / full)、`npm run build` 与 `git diff --check` 全部通过。`selftest-perf` **181 / 1**(共 182 条;新增相机全分辨率断言通过,标签布局读数在 HEAD 基线已复现);`selftest-scale` 117 / 2(onFilter 计数,筛选链路未改)。公开 API 计数未变。详细口径见 [AI 对话汇总的本轮增量](../AI对话汇总.md#2026-10-26-增量修改txt修复放大缩小与移动时的短暂模糊)。
|
|
442
|
+
### 2026-10-26 增量(「修改.txt」:线片段着色管线专用化)
|
|
443
|
+
|
|
444
|
+
本轮仍是现有会话的继续增量,没有独立会话归档,因此不改上表的 39 条统计。需求原话来自仓库根目录最新的 `修改.txt`:修改 gis-view 组件;这样修改之后性能提升了吗,感觉没提升多少。
|
|
445
|
+
|
|
446
|
+
- **判断**:CPU profile 约 **98.6% idle**、`render` 约 **0.1%**,说明上一轮主要省的是场景重排 / 上传 / 相机调度,剩余在 GPU 片元。用户感觉提升有限,还因为细线快路径的真实门槛是最大半宽 ≤ 0.6 设备像素且无虚线(dpr = 1 约 1.2px 线宽),2px 线不会命中 `gl.LINES`。
|
|
447
|
+
- **改动**:`shaders.js` 新增 `THIN_LINE_FRAGMENT_SHADER`(细线只输出颜色)与 `SOLID_LINE_FRAGMENT_SHADER`(全实线、非光晕四边形跳过虚线取模 / `smoothstep` / 光晕分支,保留非 MSAA 覆盖率);`engine.js` 的 `drawLineBatch` 按批切换,`refreshLineThinLedger` 同时提供是否全实线;两个程序属性槽位不一致时自动回退通用片元。端点圆头、全分辨率与停稳后的 MSAA 静态帧不变。
|
|
448
|
+
- **实测**:10 万点 / 5 万线缩放 p50 **23.2 → 16.7 ms**、p95 **28.6 → 16.8 ~ 16.9 ms**;10 万点 / 10 万线缩放三次中位 p50 **42.6 → 18.0 ms**、p95 **46.3 → 21.4 ms**;2px 实线的 10 万线只走四边形轻量片元时约 **82.4 → 63.9 ms**。16 ~ 18 ms 已接近 60Hz 帧节拍,剩余成本是 GPU 填充率。
|
|
449
|
+
- **核心文件**:`src/gis-view/shaders.js`、`src/gis-view/engine.js`、`docs/steps/selftest-perf.html`、`docs/steps/README.md`、`docs/manual/03-配置项.md`、`docs/manual/05-画质与批量更新.md`、`docs/manual/20-性能与大数据.md`、`docs/manual/21-说明与常见问题.md`、`docs/internals/18-性能实测与WebGPU评估.md`、根 `README.md`、`src/gis-view/README.md` 与本轮 aimd。
|
|
450
|
+
- **验证**:`node --check`(engine / shaders)、`npx tsc --noEmit`、`node docs/steps/gen-api-index.mjs`(264 个实例成员未变)、`npm run check:docs`(264 个实例成员 / 250 个方法 / 250 个数据字段 / 96 个 options / 43 个事件 / 17 个功能开关)、九个定向自测页 **1504** 条通过 / 0 失败、`npm run build` 与 `git diff --check` 全部通过。`selftest-perf` **182 / 1**(共 183 条;新增像素对拍通过,标签读数失败在 HEAD 已复现);`selftest-scale` 117 / 2(既有 onFilter 计数失败)。公开 API 计数未变。详细口径见 [AI 对话汇总的本轮增量](../AI对话汇总.md#2026-10-26-增量修改txt继续优化-gis-view回答感觉没提升多少)。
|
|
360
451
|
## 六、怎么自己复查
|
|
361
452
|
|
|
362
453
|
会话文件是逐行 JSON,不用整份读 —— 只挑两种行解析就够:`session_meta` 行里的 `payload.cwd` 认项目,`payload.type === 'user_message'` 行里的 `payload.message` 是用户原话:
|