gis-view-webgl2 0.1.7 → 0.1.9
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 +14 -11
- package/dist/gis-view.css +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +445 -241
- package/dist/index.js +1 -1
- package/docs/AI/345/257/271/350/257/235/346/261/207/346/200/273.md +65 -498
- package/docs/GisView.md +1 -1
- package/docs/GisView/345/256/236/347/216/260/345/216/237/347/220/206.md +1 -1
- 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 +114 -478
- package/docs/demos/BasicDemo.vue +144 -27
- package/docs/demos/BatchAddDemo.vue +133 -7
- package/docs/demos/ChannelDemo.vue +61 -0
- package/docs/demos/ConnectDemo.vue +164 -33
- package/docs/demos/CopyMergeDemo.vue +144 -42
- package/docs/demos/EventDemo.vue +29 -24
- package/docs/demos/LabelDemo.vue +5 -5
- package/docs/demos/api-index.js +53 -41
- package/docs/demos/gis-view-demo/GisViewDemoCardHeader.vue +1 -1
- package/docs/demos/gis-view-demo/GisViewDemoStage.vue +1 -1
- package/docs/demos/gis-view-demo/panels/DataPanels.vue +1 -1
- package/docs/demos/gis-view-demo/useGisViewDemo.js +31 -33
- package/docs/format/02-/350/212/202/347/202/271/344/270/216/347/272/277/350/267/257.md +1 -0
- package/docs/format/04-/351/200/232/351/201/223/344/270/216/346/240/207/347/255/276.md +3 -0
- package/docs/format/07-/344/272/213/344/273/266/350/275/275/350/215/267/344/270/216/347/244/272/344/276/213/346/225/260/346/215/256.md +8 -7
- package/docs/from0/05-/347/233/270/346/234/272/344/270/216/344/272/244/344/272/222.md +1 -1
- package/docs/from0/07-/351/200/232/351/201/223/345/210/206/347/273/204/344/270/216/345/244/232/345/233/236/347/272/277.md +26 -10
- package/docs/index.html +136 -13
- package/docs/internals/15-04-/351/200/220/350/275/256/350/256/260/345/275/225-/347/203/255/345/212/233/345/233/276/344/270/216/346/200/247/350/203/275.md +10 -0
- package/docs/manual/02-/345/235/220/346/240/207/344/270/216/346/225/260/346/215/256.md +1 -1
- package/docs/manual/03-/351/205/215/347/275/256/351/241/271.md +82 -14
- package/docs/manual/04-/344/272/213/344/273/266/344/270/216/345/233/236/350/260/203.md +23 -17
- 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 +65 -0
- package/docs/manual/06-/346/225/260/346/215/256/344/270/216/345/234/272/346/231/257/346/233/264/346/226/260.md +9 -10
- package/docs/manual/07-/346/214/207/351/222/210/344/270/216/350/246/201/347/264/240/347/274/226/350/276/221.md +100 -40
- package/docs/manual/08-/351/200/211/344/270/255/344/270/216/346/213/220/347/202/271.md +11 -7
- package/docs/manual/09-/351/200/232/351/201/223/344/270/216/345/244/232/345/233/236/347/272/277.md +66 -6
- 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 +226 -493
- package/docs/manual/12-/346/240/207/347/255/276/344/270/216/350/243/205/351/245/260.md +28 -5
- package/docs/manual/14-/350/247/206/345/233/276/344/270/216/347/255/233/351/200/211.md +46 -14
- package/docs/manual/15-/345/257/274/345/207/272/344/270/216/351/233/206/346/210/220.md +5 -2
- package/docs/manual/16-/345/256/236/344/276/213/346/226/271/346/263/225/346/200/273/350/241/250.md +34 -29
- package/docs/manual/17-/345/217/202/346/225/260/351/200/237/346/237/245.md +30 -22
- package/docs/manual/18-/351/200/220/346/226/271/346/263/225/347/244/272/344/276/213.md +168 -81
- 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 +1 -1
- package/docs/manual/20-/346/200/247/350/203/275/344/270/216/345/244/247/346/225/260/346/215/256.md +5 -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 +9 -6
- package/docs/steps/README.md +201 -120
- package/docs/steps/bench-scale.html +1 -1
- package/docs/steps/index.html +222 -6
- package/docs/steps/selftest-actions.html +26 -25
- package/docs/steps/selftest-data.html +1 -1
- package/docs/steps/selftest-demos.html +290 -16
- package/docs/steps/selftest-docs.html +17 -6
- package/docs/steps/selftest-features.html +594 -54
- package/docs/steps/selftest-full.html +3 -3
- package/docs/steps/selftest-labels.html +82 -1
- package/docs/steps/selftest-perf.html +62 -7
- package/docs/steps/selftest-select.html +71 -6
- package/docs/steps/step-05-pick.js +4 -8
- package/docs/steps/step-07-channels.js +3 -5
- package/docs/steps/step-08-labels.js +3 -3
- package/docs/steps/step-10-full.js +3 -3
- package/docs/steps/step-12-events.js +41 -24
- package/docs//344/273/2160/345/210/260/345/256/214/346/225/264/347/232/204/345/256/236/347/216/260.md +1 -0
- package/package.json +1 -1
- package/docs/ai/01-/350/265/267/346/272/220/344/270/216/350/277/231/344/273/275/346/261/207/346/200/273/347/232/204/347/224/261/346/235/245.md +0 -29
- package/docs/ai/02-/346/214/211/345/206/205/345/256/271/345/210/206/347/261/273-/350/277/231/344/270/200/350/267/257/351/203/275/345/234/250/346/224/271/344/273/200/344/271/210.md +0 -66
- package/docs/ai/03-/351/207/215/350/246/201/351/227/256/347/255/224/351/200/211/357/274/210/344/270/200/357/274/211/357/274/232/351/200/211/345/236/213/351/200/232/351/201/223/344/270/216/346/240/267/345/274/217.md +0 -178
- package/docs/ai/04-/351/207/215/350/246/201/351/227/256/347/255/224/351/200/211/357/274/210/344/272/214/357/274/211/357/274/232/344/272/244/344/272/222/346/200/247/350/203/275/344/270/216/346/225/260/346/215/256.md +0 -140
- package/docs/ai/05-/351/207/215/350/246/201/351/227/256/347/255/224/351/200/211/357/274/210/344/270/211/357/274/211/357/274/232/345/256/277/344/270/273/346/227/201/346/224/257/344/270/216/346/224/266/345/217/243.md +0 -43
|
@@ -1,532 +1,99 @@
|
|
|
1
|
-
# AI
|
|
1
|
+
# AI 对话汇总
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
**这一版只保留重要问题与相关答案**:完整的过程与数据在实现原理的逐轮记录里([15-01](internals/15-01-逐轮记录-新增与修复.md) ~ [16-03](internals/16-03-优化与取舍-下.md)),本页负责「从对话这条线看它是怎么长出来的」。
|
|
3
|
+
> 一页读完 gis-view 的 AI 协作史:39 个会话、194 轮需求,按「关键决策 → 演进主线 → 精选问答」整理。
|
|
4
|
+
> 原先拆开的 01 ~ 05 已合并到这里;逐会话文件、历史增量索引与复查命令统一放在 [维护索引](ai/06-会话索引与复查方法.md)。
|
|
6
5
|
|
|
7
|
-
|
|
8
|
-
| --- | --- |
|
|
9
|
-
| [01 起源与这份汇总的由来](ai/01-起源与这份汇总的由来.md) | 来源与筛选口径、选型与立项、按时间读这条线的三段 |
|
|
10
|
-
| [02 按内容分类:这一路都在改什么](ai/02-按内容分类-这一路都在改什么.md) | 七个主题的来龙去脉与落点 |
|
|
11
|
-
| [03 重要问答选(一):选型、通道与样式](ai/03-重要问答选(一):选型通道与样式.md) | 选型 13 问、立项、通道诞生、缩放 / 筛选 / 搜索的成形、颜色语义与分组重合 |
|
|
12
|
-
| [04 重要问答选(二):交互、性能与数据](ai/04-重要问答选(二):交互性能与数据.md) | 功能开关与「按总量付费」、拖拽一闪一闪、视口裁剪、百万级解析、拐点 / 分组怎么给后端(20 条超长会话) |
|
|
13
|
-
| [05 重要问答选(三):宿主旁支与收口](ai/05-重要问答选(三):宿主旁支与收口.md) | 宿主 SVG / 直流标记、选中集与拐点键跟要素走、最近一轮的六条问题 |
|
|
14
|
-
| [06 会话索引与复查方法](ai/06-会话索引与复查方法.md) | 39 个会话的索引表与「怎么自己复查」 |
|
|
15
|
-
|
|
16
|
-
## 快速跳转
|
|
17
|
-
|
|
18
|
-
- **「为什么不用 ECharts / G6 / deck.gl」**:[03 的选型 13 问](ai/03-重要问答选(一):选型通道与样式.md)。
|
|
19
|
-
- **「十万级是怎么做到的」**:[02 的 2.4 性能](ai/02-按内容分类-这一路都在改什么.md) 与 [04 的百万级会话](ai/04-重要问答选(二):交互性能与数据.md);实测数据在 [实现原理 18](internals/18-性能实测与WebGPU评估.md)。
|
|
20
|
-
- **「拐点 / 分组跟后端怎么对接」**:[04 的超长会话](ai/04-重要问答选(二):交互性能与数据.md)(配套 demo `?demo=backend`)。
|
|
21
|
-
- **「某一轮到底改了什么」**:先看 [06 的会话索引](ai/06-会话索引与复查方法.md),再翻 [实现原理的逐轮记录](internals/15-01-逐轮记录-新增与修复.md)。
|
|
22
|
-
|
|
23
|
-
## 2026-10-21 增量:点聚合与大数据展示
|
|
24
|
-
|
|
25
|
-
这一轮仍是现有会话的继续增量,没有新建会话归档,因此不改 06 的 39 条会话统计。需求原话来自仓库根目录的 `问题.txt`:① 继续优化 gis-view 性能,保证大数据下的交互与渲染流畅性;② 为组件的全面性与功能性增加能力并补 Demo。本轮选择补**点聚合**,只改变展示与基于展示的拾取 / 快照 / 导出,不改原始 `points`、选中集或 `getData()`。
|
|
26
|
-
|
|
27
|
-
- **聚合配置与算法**:新增 `pointCluster?: boolean | GisViewPointClusterOptions`,`true` 使用缺省档;半径按 CSS 像素夹在 8 ~ 500(缺省 60),`minPoints` 最小为 2,`maxZoom` 为相对基准比例的上限(0 表示不限)。`cluster.js` 用固定屏幕网格只查相邻 9 格,成员用 `Int32Array` 链表串起,十万级建组仍是 O(n);平移复用成员,缩放、配置、数据或编辑状态变化才在下一帧开画前重算。
|
|
28
|
-
- **展示与拾取边界**:被聚合收起的原始点会从普通点批次、标签、拾取、框选、涟漪、装饰和导出中统一排除,聚合圆走独立批次并叠加数量文字;单成员保持原样。选中、拖动、合并和复制预览中的点强制单成员,不会被旁边的聚合圆吞掉。点击聚合圆只发 `clusterClick` / `onClusterClick`,载荷含 `count` / `pointIds` / `bounds`,不触发普通 `click`,也不选中内部节点。
|
|
29
|
-
- **读数与导出**:`getClusters()` 返回当前展示组(含 `count: 1` 的单成员),`getPointCluster()` 返回 `{ enabled, radius, minPoints, maxZoom, active }`;`getStats()` 增加 `clusterCount` / `clusterPointCount` / `clusterMs`,`listPoints({ visibleOnly: true })` 会跳过被聚合收起的成员、传 `false` 仍列全。PNG / SVG 导出与矢量快照都按当前聚合展示绘制圆和数量文字,原始数据与业务导出保持原语义。
|
|
30
|
-
- **Demo 与性能入口**:`docs/demos/ClusterDemo.vue` 注册为 `?demo=cluster`(性能组),可现场切换 2 千 / 1.2 万 / 6 万 / 10 万点,调开关、半径、最少点数与 `maxZoom`,重建或适应当前数据,并展示聚合耗时、圆数与点击载荷。
|
|
31
|
-
- **核心文件**:`src/gis-view/cluster.js`(新增)、`src/gis-view/engine.js`、`src/gis-view/create.js`、`src/gis-view/overlay.js`、`src/gis-view/svg.js`、`src/gis-view/events.js`、`src/gis-view/gis-view.css`、`src/gis-view/types.d.ts`、`docs/demos/ClusterDemo.vue`、`docs/demos/demos.js`、`docs/steps/selftest-perf.html`、`docs/steps/selftest-demos.html`、`docs/manual/03` / `04` / `16` / `17` / `18` / `20`、`docs/GisView.md`、`docs/steps/README.md`、根 `README.md`、`src/gis-view/README.md` 与 `docs/demos/api-index.js`(生成物)。
|
|
32
|
-
- **验证**:`selftest-perf.html` 新增 19 条聚合断言(归一化、1.2 万点建组与统计、原始数据不变、`visibleOnly` 排除成员、拾取 `type=cluster`、点击语义、`maxZoom` 展开、关闭恢复),136 → **155** 条 / 0 失败;`selftest-demos.html` 新增 8 条,297 → **305** 条 / 0 失败;`selftest-docs.html` 130 条,全部 14 个自测页共 **2121** 条通过 / 0 失败。`node --check`、`npx tsc --noEmit`、`npm run build`、`npm run check:docs`(**251** 个成员 / **248** 个方法 / **247** 个数据字段 / **93** 个 options / **18** 个功能开关 / **43** 个事件 / **16** 个分组)、`node docs/steps/gen-api-index.mjs --check` 与 `git diff --check` 全部通过。复查入口见 [06 的增量记录](ai/06-会话索引与复查方法.md#2026-10-21-增量大数据展示与点聚合)。
|
|
33
|
-
|
|
34
|
-
## 2026-10-21 增量:大数据性能收口与 Canvas 标签模式
|
|
35
|
-
|
|
36
|
-
这一轮仍是现有会话的继续增量,没有新建会话归档,因此不改 06 的 39 条会话统计。需求原话来自仓库根目录的 `问题.txt`:① 继续优化 gis-view 性能,确保大数据下的交互与渲染;② 标签已有 `auto` / `dom`,新增 `canvas` 渲染方式。
|
|
37
|
-
|
|
38
|
-
- **模式扩展**:顶层 `labelRender` 从 `'auto' | 'dom'` 扩为 `'auto' | 'canvas' | 'dom'`。`auto` 保持原行为:只在强制显示档下,节点层 / 线路层各自达到 **1024** 条可画布纯文本才自动画布化;显式 `canvas` 不受数量阈值限制,优化档与密集档也使用画布。
|
|
39
|
-
- **优化策略不绕过**:`canvas` 仍遵守 `maxCount` / `when` / `scanLimit` / `overlapMode` 等配置。优化档的避让碰撞框、节点换锚点与线路沿线换位直接取画布记录的文字宽高,不创建、也不读取标签 DOM;需要 DOM 的 `html: true`、函数返回元素、可拖拽 / 可编辑与 Canvas 画不全的样式继续逐条建节点,可与画布混排。
|
|
40
|
-
- **性能收口**:画布文字测量按「字体 + 样式 + 文案」缓存(上限 8192 项),1100 条同文案不用逐条 `measureText`;平移、缩放、拖节点 / 线路与悬停半径变化的连续重绘用 `requestAnimationFrame` 合并到下一帧;绘制前按视口剔除屏外标签,旋转标签按外接圆并计入整层平移;销毁时取消尚未执行的画布帧。线路画布标签换位后同步刷新 `lineLabelMeta`,函数内容无法保证文字同步时保守放弃沿线回退。
|
|
41
|
-
- **核心文件**:`src/gis-view/overlay.js`、`src/gis-view/create.js`、`src/gis-view/types.d.ts`、`docs/steps/selftest-labels.html`、`docs/manual/03-配置项.md`、`docs/manual/12-标签与装饰.md`、`docs/manual/20-性能与大数据.md`、`docs/steps/README.md`、根 `README.md`、`src/gis-view/README.md` 与 `docs/demos/api-index.js`(生成物)。只扩展已有 option 的合法值,没有增删实例成员 / options / 数据字段,计数保持 **249 / 246 / 245 / 92**。
|
|
42
|
-
- **验证**:`selftest-labels.html` 新增 4 条断言(1100 条同文案 `measureText` ≤ 2 次、同一任务连续 5 次缩放只重绘 1 ~ 2 次、显式画布在优化档遵守 `maxCount: 200`、6 条线路标签全部进画布且 DOM 为 0),161 → **165** 条 / 0 失败;14 个自测页共 **2101** 条通过 / 0 失败。`node --check`、`npx tsc --noEmit`、`npm run check:docs`(249 个成员 / 246 个方法 / 245 个数据字段 / 92 个 options / 18 个功能开关 / 16 个分组)、`node docs/steps/gen-api-index.mjs --check`、`npm run build` 与 `git diff --check` 全部通过。
|
|
43
|
-
|
|
44
|
-
## 2026-10-20 增量:装饰位置来源与吸附关系解耦
|
|
45
|
-
|
|
46
|
-
这一轮仍是现有会话的继续增量,没有新建会话归档,因此不改 06 的 39 条会话统计。需求原话来自仓库根目录的 `修改.txt`:① 修改装饰 Demo,吸附方式只有「跟随 / 固定」,跟随也能选鼠标位置,固定也能选与跟随一样的设置,两种方式的区别只是落地后跟随或固定,可添加的位置完全一样;② 继续检查组件有没有可简化优化的地方,可以破坏原有语义。
|
|
47
|
-
|
|
48
|
-
- **位置来源与落地关系解耦**:节点草稿的 `placement` 收窄为位置来源(`offset` 相对节点 / `fixed` 固定坐标 / `pointer` 鼠标位置),新增 `anchor` 表示落地关系(`follow` 保留相对节点的屏幕偏移 / `fixed` 保留世界坐标)。六种组合都可预览、避让与提交;缺省仍按 `offset → follow`、`fixed / pointer → fixed` 推导,兼容旧调用。重复避让与最终数据生成只读取 `candidate.anchor`。
|
|
49
|
-
- **Demo 改为正交控件**:`docs/demos/DecorationDraftDemo.vue` 的「吸附方式」只保留跟随 / 固定,「位置来源」始终显示相对节点 / 固定位置 / 鼠标位置三档;方向距离、世界坐标与指针提示按来源切换,日志、命中读数和确认文案统一显示「落地关系 · 位置来源」组合。`usePointerAsFixed()` 只填坐标并切来源,不再偷偷改吸附方式。
|
|
50
|
-
- **类型与内部简化**:删除 `GisViewPointDecoration.placement` 与 `anchor` 重叠的旧别名,节点数据只保留 `anchor: 'offset' | 'fixed'`;草稿候选去掉未使用的 `placement` / `at` 临时字段。实例成员 / 数据字段 / options / 功能开关 / 分组计数保持 **241 / 238 / 90 / 18 / 16**。
|
|
51
|
-
- **文档与自测**:同步 `docs/manual/12` / `16` / `17` / `18`、`docs/steps/README.md`、`README.md`、`src/gis-view/README.md` 与 `docs/demos/api-index.js`。`selftest-demos.html` 新增 3 条(两档三来源与映射)、`selftest-decoration.html` 新增 6 条跨组合断言(`pointer + follow`、`fixed + follow`、`offset + fixed` 的预览与提交)。
|
|
52
|
-
- **核心文件**:`src/gis-view/engine.js`、`src/gis-view/types.d.ts`、`docs/demos/DecorationDraftDemo.vue`、`docs/demos/api-index.js`、`docs/steps/selftest-demos.html`、`docs/steps/selftest-decoration.html`、`docs/manual/12-标签与装饰.md`。
|
|
53
|
-
- **验证**:14 个自测页 **2031** 条通过 / 0 失败(`selftest-decoration` 75、`selftest-demos` 286、`selftest-features` 582、`selftest-docs` 130);`npx tsc --noEmit`、`npm run check:docs`(241 个成员 / 238 个方法 / 238 个数据字段 / 90 个 options / 18 个功能开关 / 16 个分组)、`node docs/steps/gen-api-index.mjs --check`、`npm run build` 与 `git diff --check` 全部通过。复查入口见 [06 的增量记录](ai/06-会话索引与复查方法.md#2026-10-20-增量装饰位置来源与吸附关系解耦)。
|
|
54
|
-
|
|
55
|
-
## 2026-10-20 增量:装饰吸附分级与重复快捷方法收口
|
|
56
|
-
|
|
57
|
-
这一轮仍是现有会话的继续增量,没有新建会话归档,因此不改 06 的 39 条会话统计。需求原话来自仓库根目录的 `修改.txt`:① 修改装饰 Demo,吸附方式只保留「跟随 / 固定」,吸附位置再分「固定位置 / 鼠标位置」;② 继续检查 gis-view 有没有可简化和优化的地方。
|
|
58
|
-
|
|
59
|
-
- **装饰吸附分级**:`docs/demos/DecorationDraftDemo.vue` 的节点装饰面板改成两级控件:吸附方式只给「跟随 / 固定」,固定档再选「固定位置 / 鼠标位置」;映射仍是 `placement: 'offset' / 'fixed' / 'pointer'`,鼠标位置档不传 `at`,并把草稿提示、日志与读数统一到新叫法。`selftest-demos.html` 新增 3 条断言验两级选项、固定档默认值与鼠标位置档的载荷。
|
|
60
|
-
- **重复快捷入口收口**:删除 `setEffects` / `setPointSize` / `setPointSymbol` / `setPointColor` / `setLineWidth` / `setLineColor` / `setChannelWidth` / `setChannelNodeWidth` / `setChannelInset` / `setChannelTangentInset` / `setChannelName` / `clearFilter` / `clearDropPreview` 共 13 个只做转发的实例方法,分别统一到 `updateOptions({ effects })` / `updatePoint` / `updateLine` / `updateChannel` / `setFilter(null)` / `setDropPreview(null)`;保留 `movePoint`、`setLineWaypoints`、`setChannelPath`、`setChannelLineWidth`、`setChannelColors` 等带复合语义的入口。实例成员 254 → **241**(方法 251 → **238**,属性 3)。
|
|
61
|
-
- **通道窄读**:引擎把通道快照抽成 `channelInfoSnapshot()`,`getChannels()` 与新增的 `getChannel(channelId, index)` 共用;组件 `getChannel()` 按目标通道取一份,不再先复制全部通道再查找。`selftest-features.html` 新增 1 条断言确认 13 个旧入口已移除、统一入口仍在。
|
|
62
|
-
- **文档、Demo 与核心文件**:迁移 `docs/demos`、`docs/playground`、手册、README、类型与自测里的旧调用;同步 `docs/manual/12-标签与装饰.md` 的两级吸附说明与 241 个成员计数。核心文件为 `src/gis-view/create.js`、`src/gis-view/engine.js`、`src/gis-view/types.d.ts`、`docs/demos/DecorationDraftDemo.vue`、`docs/demos/api-index.js`、`docs/steps/selftest-demos.html`、`docs/steps/selftest-features.html`。
|
|
63
|
-
- **验证**:14 个自测页 **2022** 条通过 / 0 失败(`selftest-features` 582、`selftest-demos` 283、`selftest-docs` 130);`npx tsc --noEmit`、`npm run check:docs`(241 个成员 / 238 个方法 / 238 个数据字段 / 90 个 options / 18 个功能开关 / 16 个分组)、`node docs/steps/gen-api-index.mjs --check`、`npm run build` 与 `git diff --check` 全部通过。复查入口见 [06 的增量记录](ai/06-会话索引与复查方法.md#2026-10-20-增量装饰吸附分级与重复快捷方法收口)。
|
|
64
|
-
|
|
65
|
-
## 2026-10-20 增量:性能收口与重复实例入口合并
|
|
66
|
-
|
|
67
|
-
这一轮仍是现有会话的继续增量,没有新建会话归档,因此不改 06 的 39 条会话统计。需求原话来自仓库根目录的 `修改.txt`:「继续优化组件性能、可扩展性和二次开发性;检查实例方法、属性、事件中的重复 / 多余 / 可合并项,进行合并删除」。
|
|
68
|
-
|
|
69
|
-
- **重复实例入口合并**:删除 `select` / `updatePoints` / `updateLines` / `updateChannels` 四个实例方法,分别统一到 `selectFeatures` 与 `updateData({ points | lines | channels })`;内部 8 处 `instance.select(...)` 同步迁移,`patchPoints` / `patchLines` 的定向补丁语义保留,`updatePoints` / `updateLines` 仅作为这两条路径的数据变更事件名继续存在。实例成员从 258 收到 **254**(方法 255 → **251**),属性仍为 3 个。
|
|
70
|
-
- **视口通道读取**:`getChannelsInView()` 不再调用 `listLines({ inView: true })` 生成整份线路快照,改为 `getViewRect()` + `forEachLineInView()` 单遍遍历,并用 O(1) 的 `getLineChannel(index)` 聚合通道与分组;`getLineChannel()` 的 group 读数改走新增的引擎窄查询 `getChannelGroup(channelId, groupId)`,不再复制整条通道的全部分组。
|
|
71
|
-
- **WebGL 卸载安全**:`addWebGLLayer()` 返回的卸载函数会先确认同 id 的当前层仍挂着自己那一份 `draw`;同 id 被后加的层覆盖后,旧卸载函数不会误删新层。
|
|
72
|
-
- **Demo、手册与自测迁移**:`docs/demos`、`docs/guide`、`docs/steps` 中的调用与文案统一到新入口,手册删除旧方法行、近义入口与事件类型 `updateChannels`,同步 `README.md`、`src/gis-view/README.md`、`docs/GisView.md` 的成员计数(**254** / 251 个方法 / 3 个属性);数据字段 / options / 功能开关 / 分组计数保持 **238 / 90 / 18 / 16**。
|
|
73
|
-
- **核心文件**:`src/gis-view/create.js`、`src/gis-view/engine.js`、`src/gis-view/types.d.ts`、`README.md`、`src/gis-view/README.md`、`docs/GisView.md`、`docs/manual/04` / `06` / `07` / `08` / `10` / `12` / `14` / `16` / `17` / `18` / `21`、`docs/demos/api-index.js` 与相关 demo / 自测页。
|
|
74
|
-
- **验证**:14 个自测页 **2018** 条通过 / 0 失败(`selftest-features` 581、`selftest-demos` 280、`selftest-select` 60);`npx tsc --noEmit`、`npm run check:docs`、`node docs/steps/gen-api-index.mjs --check`、`npm run build` 与 `git diff --check` 全部通过。复查入口见 [06 的增量记录](ai/06-会话索引与复查方法.md#2026-10-20-增量性能收口与重复实例入口合并)。
|
|
75
|
-
|
|
76
|
-
## 2026-10-20 增量:通道预览扩展、旧导出收口与 WebGL 自定义层
|
|
77
|
-
|
|
78
|
-
这一轮仍是现有会话的继续增量,没有新建会话归档,因此不改 06 的 39 条会话统计。需求原话来自仓库根目录的 `修改.txt`:「修改gis-view组件 1、beginAddChannel方法,预览样式可以自定义,包括箭头位置等,一定要可扩展,如果选择通道的时候,那么预览也要是通道效果,触发连接事件后,如果已经点了起点之后再次点击到除了节点以外的地方直接取消事件 2、旧导出方法不用保留,有些方法没必要,为什么既要exportStationData又要exportPointData 3、可以直接拿到组件本体,然后在本体上直接使用webgl的方法手动绘制,以便提高组件的可扩展性」。
|
|
79
|
-
|
|
80
|
-
- **通道草稿预览**:`beginAddChannel` 支持本次专属 `channelDraftStyle`,并新增 `updateAddChannelStyle(patch)`(传 `null` 回到全局样式)。样式可配 `color` / `width` / `dot` / `dotColor` / `arrow` / `arrowSize` / `arrowPositions` / `arrowReverse` / `arrowColor` / `circuitSpacing` / `opacity` / `customDraw`;多回线按间距生成平行路径并逐条画箭头,`arrowPositions` 按弧长归一化,单值或数组都可。`customDraw` 可拿到 `gl`、`canvas`、`viewport`、`camera`、`path`、`circuitPaths`、`circuits`、`kind`、`phase`、`style`、投影函数与 `requestRender`,并在回调结束后恢复内置绘制依赖的 GL 状态。
|
|
81
|
-
- **空白取消**:已点起点后,再点节点以外的位置会直接结束草稿并清空;`onChannelDraft` 与 `onChannelDraftClick` 都会收到 `phase: 'cancel'`、`reason: 'click-outside-node'`。尚未点起点时点空白仍只发 `pick`,不取消草稿。
|
|
82
|
-
- **旧导出收口**:删除 `exportViewportData`、`exportSelectionData`、`exportStationData`、`exportPointData`、`exportLineData`、`exportChannelData`、`exportParallelGroups` 七个实例方法,统一走 `exportData({ scope: 'all' | 'viewport' | 'selection', parts, format })`;`format: 'new'` 补齐 `box: false` / `showStation: false`,完整承接原场站导出口径。
|
|
83
|
-
- **WebGL 自定义绘制**:实例直接暴露 `gl` 与 `requestRender()`,新增 `addWebGLLayer` / `updateWebGLLayer` / `removeWebGLLayer` / `clearWebGLLayers` / `getWebGLLayers`,顶层也支持 `options.webglLayers`。自定义层在内置内容与 offscreen blit 之后按 `order` 绘制,可设 `enabled`,每层开画前重置 framebuffer / viewport / blend / scissor / stencil / VAO / buffer 等状态;`draw` 异常只上报一次,`addWebGLLayer` 返回卸载函数。层只影响画面,不参与拾取、场景解析或导出。
|
|
84
|
-
- **Demo 与核心文件**:`docs/demos/ConnectDemo.vue` 演示 3 回通道、箭头位置 / 回线间距 / 颜色 / 线宽与空白取消读数;`docs/demos/ExtensionDemo.vue` 新增 WebGL 自定义层扩展点(挂载 / 隐藏 / 排序 / 卸载 / `requestRender`);`BackendSyncDemo.vue` 与 `GisViewDemo.vue` 的导出改为统一入口。核心改动在 `src/gis-view/engine.js`、`create.js`、`types.d.ts`、`export-formats.js`,并同步 `README.md`、`src/gis-view/README.md`、`docs/manual/02` / `03` / `15` / `16` / `17` / `18` / `20` / `21`、`docs/format/03` / `06`、`docs/steps/README.md`、`docs/demos/api-index.js` 与相关自测页。
|
|
85
|
-
- **验证**:14 个自测页 **2015** 条通过 / 0 失败;`npx tsc --noEmit`、`npm run check:docs`(258 个成员 / 255 个方法 / 238 个数据字段 / 90 个 options / 18 个功能开关 / 16 个分组)、`node docs/steps/gen-api-index.mjs --check`、`npm run build` 与 `git diff --check` 全部通过。复查入口见 [06 的增量记录](ai/06-会话索引与复查方法.md#2026-10-20-增量通道预览扩展旧导出收口与-webgl-自定义层)。
|
|
86
|
-
|
|
87
|
-
## 2026-10-20 增量:API 文档视觉、性能降级、箭头统一与导出收口
|
|
88
|
-
|
|
89
|
-
这一轮仍是现有会话的继续增量,没有新建会话归档,因此不改 06 的 39 条会话统计。需求原话来自仓库根目录的 `修改.txt`:「修改gis-view组件 1、现在文档页面的展示效果还是不好,参考echarts或者antd那种效果,让配置项,方法和参数一目了然 2、从性能上继续优化组件 3、新增的连接demo问为么箭头在前面,添加后就到中间,不统一 4、优化大数据下的展示效果,增加动态开关,当数据量过大过密的时候,提高显示效果 5、检测导出方法,有些方法是否重复,比如导出节点和导出场站等,合并优化去重,比如导出数据可以导出可视区域也可以导出全部当成一个方法不同传参,同理线路,节点等也能当作参数,这样导出方法就比较清晰」。
|
|
90
|
-
|
|
91
|
-
- **API 文档页**:`docs/api/index.html` 重做顶部导航、检索、Hero、统计卡、成员卡与 options 分组表格;`docs/demos/api-index.js` 同步生成,让配置项 / 方法 / 参数层级一目了然。
|
|
92
|
-
- **性能与动态降级**:`src/gis-view/create.js` 新增 `denseMode: 'auto' | 'on' | 'off'`(兼容布尔值和阈值对象)。自动档在可见节点 4000、每百万 CSS 像素 3000 点或总量 50000 时触发,带 160ms 判定延迟与 78% 退出回滞;密集档内标签走优化档、引擎关 `effects`,并通过 `getStats().dense` 暴露状态与原因。`src/gis-view/overlay.js` 只在标签优化档真正切换时刷新标签,避免打断线路标签候选复用。
|
|
93
|
-
- **连接箭头统一**:`src/gis-view/engine.js` 的 `channelDraftArrowPlacement(path)` 按整条折线弧长找中点,返回 `center / unitX / unitY`;预览箭头改用与落地 `direction.count: 1` 相同的中心算法和 16×16 内置轮廓,避免「预览在端点、落地在中间」。
|
|
94
|
-
- **导出 API 收口**:统一主入口 `exportData({ scope, parts, format })`,`scope` 支持 `all / viewport / selection` 及同义词;节点 / 线路 / 通道 / 拐点通过 `parts` 选择。旧 `exportViewportData`、`exportSelectionData`、`exportStationData`、`exportPointData`、`exportLineData`、`exportChannelData`、`exportParallelGroups` 保留兼容;新视口导出的 `full / input / 自定义格式` 保持原始结果,旧视口别名仍补 `viewRect / margin`。修复 `exportParallelGroups` 对非法通道引用的重复告警。
|
|
95
|
-
- **核心文件与文档**:`src/gis-view/create.js`、`engine.js`、`overlay.js`、`types.d.ts`、`docs/api/index.html`、`docs/demos/api-index.js`、`docs/demos/PerfDemo.vue`,并同步 `README.md`、`src/gis-view/README.md`、`docs/manual/03` / `15` / `16` / `17` / `18` / `20` / `21`、`docs/steps/README.md` 与相关自测页。
|
|
96
|
-
- **验证**:13 个自测页 **1974** 条通过 / 0 失败;`npx tsc --noEmit`、`npm run check:docs`(258 个成员 / 255 个方法 / 237 个数据字段 / 89 个 options / 18 个功能开关 / 15 个分组)、`node docs/steps/gen-api-index.mjs --check`、`npm run build` 与 `git diff --check` 全部通过。复查入口见 [06 的增量记录](ai/06-会话索引与复查方法.md#2026-10-20-增量api-文档视觉性能降级箭头统一与导出收口)。
|
|
97
|
-
|
|
98
|
-
## 2026-10-20 增量:无通道连线与可视化连线构建器
|
|
99
|
-
|
|
100
|
-
这一轮仍是现有会话的继续增量,没有新建会话归档,因此不改 06 的 39 条会话统计。需求原话来自仓库根目录的 `修改.txt`:「1、当前组件如果没有 channel 也可以独立运行吗,比如我只想用 line 和 point 做连接关系图 2、优化组件的可视化添加通道和线路的功能,比如可以添加一些常规的线,比如带箭头的线,带转折的线等,同时增加 demo,优化这个可视化配置功能性 3、可视化的时候视图上显示的线可以自定义配置,可以取消添加,也可以使用默认添加,也可以使用 addLines 或者 addChannels 方法真实添加」。
|
|
101
|
-
|
|
102
|
-
- **无通道模式**:`channels` 保持可选,省略或写 `channels: []` 时点、线、选中与新增照常工作;`lines[].path` / `direction` / `lineType` 都不依赖通道声明。新增 Demo 从空通道数据启动,专门验证纯点 + 线场景。
|
|
103
|
-
- **可视化连线**:草稿新增 `routing: 'straight' | 'orthogonal'` 与 `path`(中间拐点);`orthogonal` 在没有有效拐点时自动补 `[to.x, from.y]`。`line.js` 的 `resolveRoutedPath` 由草稿预览与真实落地共用,`channelDraftStyle` 增加 `arrow` / `arrowSize`,预览按折线逐段绘制,草稿期间改样式立即重绘;真实线路箭头仍由 `direction` 控制。
|
|
104
|
-
- **落地方式**:`onChannelDraft` / `onChannelDraftClick` 载荷带 `routing` / `path`;`cancelAddChannel()` 取消且不改数据,`commitAddChannel()` 默认落地并完整传递路由,`addLines` / `addChannels` 可自行落地。独立线路写完整 `path`,通道 / 新分组只写中间拐点。
|
|
105
|
-
- **Demo 与文档**:新增 `docs/demos/ConnectDemo.vue` 并注册 `?demo=connect`,可切独立线路 / 2 回 / 3 回通道、直线 / 正交折线、颜色 / 线宽 / 箭头,并演示取消、默认提交与两种自定义落地;演示页签更新为 **20 页**(19 个功能页 + 综合示例)。同步 `README.md`、`src/gis-view/README.md`、`docs/manual/03` / `04` / `06` / `10` / `16` / `17` / `21`、`docs/steps/README.md`、`docs/demos/api-index.js` 与 `docs/steps/selftest-demos.html`。
|
|
106
|
-
- **核心文件**:`src/gis-view/line.js`、`engine.js`、`create.js`、`types.d.ts`、`docs/demos/ConnectDemo.vue`、`docs/demos/demos.js`。
|
|
107
|
-
- **验证**:14 个自测页 **1975** 条通过 / 0 失败(`selftest-demos.html` 272 条);`npx tsc --noEmit`、`npm run check:docs`(258 个成员 / 255 个方法 / 236 个数据字段 / 88 个 options / 18 个功能开关 / 15 个分组)、`node docs/steps/gen-api-index.mjs --check`、`npm run build` 与 `git diff --check` 全部通过。复查入口见 [06 的增量记录](ai/06-会话索引与复查方法.md#2026-10-20-增量无通道连线与可视化连线构建器)。
|
|
108
|
-
|
|
109
|
-
## 2026-10-20 增量:鹰眼图交互与页面展示
|
|
110
|
-
|
|
111
|
-
这一轮仍是现有会话的继续增量,没有独立会话归档文件,因此不改上表的 39 条统计。需求原话来自仓库根目录的 `修改.txt`:「修改gis-view组件 1、继续优化鹰眼图,考虑功能完整性,可拓展性,性能等方面 2、帮我删除一些没什么必要的demo 比如InterfaceDemo.vue等,同时优化一些demo的表现形式 3、优化一些md页面的表现形式」。
|
|
112
|
-
|
|
113
|
-
- **鹰眼图交互与扩展**:`src/gis-view/minimap.js` 的 `layers` 新增 `placement: 'below-data' | 'above-data'`,网格、分区底色这类内容可以放到节点与线路之下;`setOptions` 时按段和 `order` 预排一次,绘制帧不再逐层 `map` / `filter` / `sort`。绘制回调新增 `stage`,旧的单层 `draw` 固定最后执行(`stage: 'overlay'`);新增 `onInteraction`,在框拖动、框选、小图平移、小图缩放、滚轮缩放主图、长按跟随时发一条带 `local` / `world` / `zoom` / `extent` / `camera` / `viewport` 的通知,没有位移的点击与 `pointermove` 都不触发。小图根节点补了 `role=region` 与 `aria-label=鹰眼图`。
|
|
114
|
-
- **Demo 精简与分组**:删除 `InterfaceDemo.vue`、`HistoryDemo.vue`、`SampleDemo.vue`,注册表收敛为 **19 页**(18 个功能页 + 综合示例);`DemoShell.vue` 改为六个分组按钮 + 当前组页签,组名直接可见,一次只展开一组。`MinimapDemo.vue` 增加 `placement` 切换、`drawInfo.stage` 与手势读数,`api-index.js` 同步鹰眼图相关 options 描述。
|
|
115
|
-
- **Markdown 展示**:`docs/index.html` 把 H1 后紧随的引用渲染成「摘要」卡片,没有引用时把首段抬成导语,并在元信息增加按去空白字符估算的阅读时长;`selftest-docs.html` 覆盖摘要、导语与时长,`selftest-demos.html` 覆盖分组导航、19 个页签与鹰眼图新交互。
|
|
116
|
-
- **文档同步**:更新 `README.md`、`src/gis-view/README.md` 与 `docs/manual/02` / `03` / `06` / `14` / `15` / `21`、`docs/internals/13`、`docs/format/07`、`docs/steps/README.md` 和相关自测页;其中 `docs/format/07` 已把原先指向已删除 `?demo=samples` 的入口改成样本文件与导出对账口径。
|
|
117
|
-
- **核心文件**:`src/gis-view/minimap.js`、`types.d.ts`、`docs/demos/DemoShell.vue`、`MinimapDemo.vue`、`demos.js`、`api-index.js`、`docs/index.html`、`docs/steps/selftest-demos.html`、`selftest-docs.html`、`docs/manual/14-视图与筛选.md`。
|
|
118
|
-
- **验证**:14 个自测页 **1964** 条通过 / 0 失败(`selftest-demos` 261、`selftest-docs` 126、`selftest-labels` 135);`npx tsc --noEmit`、`npm run check:docs`(258 个成员 / 255 个方法 / 236 个数据字段 / 88 个 options / 18 个功能开关 / 15 个分组)、`node docs/steps/gen-api-index.mjs --check`、`npm run build` 与 `git diff --check` 全部通过。复查入口见 [06 的增量记录](ai/06-会话索引与复查方法.md#2026-10-20-增量鹰眼图交互与页面展示)。
|
|
119
|
-
|
|
120
|
-
## 2026-10-20 增量(「修改.txt」三条:标签拖动晃动 / 清晰度 / 鹰眼图扩展)
|
|
121
|
-
|
|
122
|
-
这是现有会话的继续增量,没有新建会话归档,因此不改 06 的 39 条会话统计。需求原话来自仓库根目录的 `修改.txt`:「1、为什么标签会随着地图拖动的时候轻微晃动,直到拖动结束 2、相同标签为什么显示会有差异,有的会模糊一点 3、优化鹰眼图,提高鹰眼图的扩展性和性能,同时单独增加鹰眼图配置demo」。
|
|
123
|
-
|
|
124
|
-
- **标签晃动**:`overlay.js` 把节点标签、线路标签、提示框与底图区域文字的落点,以及拖动期的整层位移,统一吸附到「设备像素网格」(`devicePixelRatio × 宿主显示比例`),不再只取整 CSS 像素;标签层保留整体 `will-change` 与 `contain: layout style paint` / `isolation: isolate`,移除逐条标签的 `will-change: transform`,避免多个合成层在拖动期产生相位差与重复栅格化。1.25 / 1.5 倍屏上同一行字不会再因为停在半个设备像素上而出现清晰度差异。
|
|
125
|
-
- **鹰眼图扩展与性能**:`minimap.js` 新增 `layers`(按 `order` 从小到大绘制、逐层 `save` / `restore`,`enabled: false` 可临时关层,旧 `draw` 仍兼容并最后执行)与 `maxPixelRatio`(备份倍率上限,默认 4、夹在 1 ~ 4),小图容器增加 `contain: layout paint` / `isolation: isolate`;`types.d.ts` 同步新增 `GisViewMinimapLayer` 与两个 options。新增 `docs/demos/MinimapDemo.vue` 并在 `demos.js` 注册 `?demo=minimap`(页签「鹰眼图配置」),可现场调尺寸、位置、范围、规则、层级、回线、小图缩放、备份倍率与网格 / 指北针两层自定义绘制。
|
|
126
|
-
- **核心文件**:`src/gis-view/overlay.js`、`gis-view.css`、`minimap.js`、`types.d.ts`、`docs/demos/MinimapDemo.vue`、`docs/demos/demos.js`、`docs/steps/selftest-labels.html`、`docs/steps/selftest-demos.html`、`docs/manual/03` / `12` / `14` / `20`、`docs/internals/11` / `13`、`README.md`、`src/gis-view/README.md`、`docs/steps/README.md`。
|
|
127
|
-
- **验证**:`npx tsc --noEmit`、`npm run check:docs`(258 个成员 / 255 个方法 / 236 个数据字段 / 88 个 options / 18 个功能开关 / 15 个分组)、`node docs/steps/gen-api-index.mjs --check`、`npm run build` 与 `git diff --check` 全部通过。CDP 真实时间下 `selftest-labels.html` 135 条全部 PASS(新增 DPR 1.25 的标签落点、整层位移与「逐条标签不提层」断言);`selftest-demos.html` 272 条中 271 PASS / 1 FAIL,新增的 8 条鹰眼图配置断言全部通过,唯一失败是既有的「悬停与提示:独立线路命中后走 lineHoverStyle」在无头环境命中了节点(读数为 `point #0`),与本轮修改无关。复查入口见 [06 的增量记录](ai/06-会话索引与复查方法.md)。
|
|
128
|
-
|
|
129
|
-
## 2026-10-19 增量(「修改.txt」继续优化与排查)
|
|
130
|
-
|
|
131
|
-
这是同一现有会话的继续增量,没有新建会话归档,因此不改 06 的 39 条会话统计;需求原话来自仓库根目录的 `修改.txt`:「修改gis-view组件 1、继续优化组件性能 2、排查bug」。
|
|
132
|
-
|
|
133
|
-
- **性能**:`src/gis-view/overlay.js` 把相机事件触发的 GeoJSON 区域文字重投影并到下一帧,同一帧 12 次 `cameraChange` 只排一次;同一份底图重新下发时按「样式签名 + 锚点签名」判断,文字、样式与 `x` / `y` / 偏移全都没变才跳过,锚点变化仍会重投影。新增自测断言验证合并重投影与锚点变化两条路径。
|
|
134
|
-
- **Bug 修复(运行时)**:区域文字节点保留上一次的 `display` / `transform` 状态,不再在文字 / 字号变化时丢掉离屏标记。修复「离屏时 `updateBackground` 改样式、同一任务里把相机移回,标签仍是 `display:none`」的问题;`selftest-labels.html` 新增对应回归断言。
|
|
135
|
-
- **Bug 修复(类型)**:`src/gis-view/types.d.ts` 删除重复声明的 `createConditionMatcher`(保留泛型版本);把与作用域联合类型重名的草稿目标接口改为 `GisViewDecorationDraftLineTarget`,同步草稿载荷与提交结果的 `targets` 类型。`npx tsc --noEmit --skipLibCheck false` 不再报重复声明。
|
|
136
|
-
- **核心文件**:`src/gis-view/overlay.js`、`create.js`、`types.d.ts`、`docs/steps/selftest-labels.html`、`docs/manual/20-性能与大数据.md`、`docs/steps/README.md`。
|
|
137
|
-
- **验证**:`selftest-labels.html` 由 129 条增至 132 条;14 个自测页合计 **1961** 条通过 / 0 失败。`npx tsc --noEmit`、`npx tsc --noEmit --skipLibCheck false`、`npm run check:docs`、`node docs/steps/gen-api-index.mjs --check`、`npm run build` 与 `git diff --check` 全部通过。复查入口见 [06 的增量记录](ai/06-会话索引与复查方法.md#2026-10-19-增量修改txt继续优化与排查)。
|
|
138
|
-
|
|
139
|
-
## 2026-10-19 增量(「修改.txt」五条)
|
|
140
|
-
|
|
141
|
-
本轮是在现有会话里继续的增量轮次,需求来源是仓库根目录的 `修改.txt`,主题是 gis-view 组件的文档同步机制、扩展图形能力、拐点开关收口与大数据标签优化:
|
|
142
|
-
|
|
143
|
-
- **aimd 同步**:新增根 `AGENTS.md`,规定修改 `README.md` / `src/gis-view/README.md` / `docs/**/*.md` 时必须同步 `docs/AI对话汇总.md` 与本索引,并带上需求来源、核心文件与验证结果。
|
|
144
|
-
- **扩展图形**:新增 `graphics` 配置与 `src/gis-view/graphic.js`,支持世界坐标锚定的 SVG `path`、图片与外部 `canvas`,可设锚点、偏移、旋转、缩放、透明度、`zIndex` 和 `scaleWithView`;图形位于画布之上、标签之下,不参与拾取,并接入 `snapshotScene`、PNG / SVG 导出。
|
|
145
|
-
- **手动删除装饰**:`docs/manual/12-标签与装饰.md` 补充 `removeLineDecoration` / `removePointDecoration` / `set...Decorations([])`、取消草稿与 `removeGraphic` / `clearGraphics` 的删除口径。
|
|
146
|
-
- **大数据标签**:节点优化档增加 32px 细格去重、160px 粗格每格 3 条主候选、补位队列与按屏幕行列排序;已显示节点也参与稳定候选窗口的格位占位,避免稳态重排因候选漂移反复量尺寸。
|
|
147
|
-
- **拐点总闸**:取消 `waypointAdd`,`features` 收敛为 18 项;`waypoint` / `waypointEditable` 关闭时新增、移动、删除一起停,`shortcuts.addWaypoint` 只决定加点组合键。
|
|
148
|
-
|
|
149
|
-
验证:14 个自测页 **1941** 条通过 / 0 失败;`npx tsc --noEmit`、`npm run check:docs`、`node docs/steps/gen-api-index.mjs --check`、`npm run build` 与 `git diff --check` 全部通过。核心文件见 `src/gis-view/create.js`、`graphic.js`、`overlay.js`、`features.js`、`engine.js`、`svg.js`、`types.d.ts` 与相关手册;复查入口见 [06 的增量记录](ai/06-会话索引与复查方法.md)。
|
|
150
|
-
|
|
151
|
-
## 2026-10-19 增量(「修改.txt」四条)
|
|
152
|
-
|
|
153
|
-
这是同一现有会话的继续增量,没有新建会话归档,因此不修改 06 的 39 个会话索引表与消息数;需求原话来自仓库根目录的 `修改.txt`:① 优化组件性能;② 增加 `graphic` 使用 demo;③ 修改组件提高规范性;④ 简化组件、检查重复与多余方法。
|
|
154
|
-
|
|
155
|
-
- **性能**:`src/gis-view/graphic.js` 的静态样式(`opacity` / `zIndex` / `transformOrigin` / `transform`)改为建 DOM 时一次写入;相机平移 / 缩放与容器 resize 时只比较并写变化的 `left` / `top` / `width` / `height` 和隐藏状态,不再反复写整份样式。`snapshotScene()` 直接按记录计算屏幕坐标,不再因导出写 DOM;图片 `load` 只重排对应图形;增删改统一走 `markChanged()`,三处重复排序收口到 `sortedEntries()`。
|
|
156
|
-
- **demo**:新增 `docs/demos/GraphicDemo.vue` 并在 `docs/demos/demos.js` 注册 `?demo=graphic`(页签「扩展图形」):SVG 路径、图片、外部 Canvas 三类同屏,可切 `scaleWithView`、改旋转 / 透明度 / `zIndex`,并现场演示 `addGraphic` / `addGraphics` / `updateGraphic` / `removeGraphic` / `clearGraphics` 与 `getGraphics()` 读数。演示页签从 20 更新为 21(20 个功能 + 综合)。
|
|
157
|
-
- **规范性**:`addGraphics` 的重复 id 现在与 `addGraphic` 一样点名告警并按更新覆盖;显式写错的 `type` 会被跳过并通过 `onWarning` 说明只认 `path` / `image` / `canvas`,不再静默推断成 `path`。`selftest-features.html` 新增两条对应断言。
|
|
158
|
-
- **简化**:删除 `create.js` 中只转发 `resolvePointMerge(true / false)` 的 `confirmPointMerge` / `cancelPointMerge` 两个别名,统一保留 `resolvePointMerge()`;同步 `types.d.ts`、`docs/manual/07` / `16` / `17` / `18`、`CopyMergeDemo.vue` 与自测文案。API 计数从 260 个成员(257 个方法)更新为 **258 个成员(255 个方法)**,`options` 仍为 88 个。
|
|
159
|
-
- **核心文件**:`src/gis-view/graphic.js`、`src/gis-view/create.js`、`src/gis-view/types.d.ts`、`docs/demos/GraphicDemo.vue`、`docs/demos/demos.js`、`docs/demos/api-index.js`、`docs/steps/selftest-demos.html`、`docs/steps/selftest-features.html` 与相关手册 / README。
|
|
160
|
-
- **验证**:14 个自测页 **1954** 条通过 / 0 失败(`selftest-features` 558、`selftest-demos` 262);`npx tsc --noEmit`、`npm run check:docs`(258 个成员 / 255 个方法 / 236 个数据字段 / 88 个 options / 18 个功能开关 / 15 个分组)、`node docs/steps/gen-api-index.mjs --check`、`npm run build` 与 `git diff --check` 全部通过。复查入口见 [06 的增量记录](ai/06-会话索引与复查方法.md#2026-10-19-增量修改txt四条)。
|
|
161
|
-
|
|
162
|
-
## 2026-10-19 增量(「修改.txt」五条续)
|
|
163
|
-
|
|
164
|
-
这一轮仍是同一现有会话的继续增量,没有新建会话归档,因此不改上表的 39 条会话统计,也不虚构会话名与消息数。需求原话来自仓库根目录的 `修改.txt`:「修改gis-view组件:1、继续优化组件性能;2、继续提高规范性;3、继续简化组件,检查组件有没有重复,多余的方法;4、完善md详细和准确性;5、优化文档页面的展示效果。」
|
|
165
|
-
|
|
166
|
-
- **性能**:`src/gis-view/overlay.js` 的 GeoJSON 区域文字改为按下标复用 DOM,逐条用 `JSON.stringify([...])` 生成样式签名,单条变化只更新那一条并清掉对应尺寸缓存;每节点缓存 `display` / `transform`,同一相机重复刷新不再写 `style`。`src/gis-view/minimap.js` 的鹰眼视口框缓存上一次矩形与三项样式,位置 / 尺寸一致时直接返回。
|
|
167
|
-
- **规范性与简化**:`src/gis-view/create.js` 新增 `fallbackViewport()`,统一覆盖层、小图、公开 `getViewport()` 与 `getViewState().viewport` 的引擎未就绪兜底;`src/gis-view/graphic.js` 删除未使用的 `GRAPHIC_ANCHOR_NAMES`。
|
|
168
|
-
- **文档准确性**:同步 `docs/manual/20-性能与大数据.md` 的两处新缓存与视口口径,`docs/GisView.md` 补充 API 速查的深浅主题 / 分组跟随 / 深链入口,`docs/steps/README.md` 更新页面说明与自测条数。
|
|
169
|
-
- **页面展示**:`docs/api/index.html` 新增与文档中心共用 `gisDocs.reading` 的深色主题、左侧当前分组滚动高亮、深链 `scroll-margin-top`、卡片 / 示例头 / 按钮 / 焦点 / 滚动条 / 窄屏布局优化;快速开始里的成员数改为读取 `API_SUMMARY.members`,不再写死。
|
|
170
|
-
- **核心文件**:`src/gis-view/overlay.js`、`minimap.js`、`create.js`、`graphic.js`、`docs/api/index.html`、`docs/GisView.md`、`docs/manual/20-性能与大数据.md`、`docs/steps/README.md`、`docs/steps/selftest-labels.html`、`docs/steps/selftest-docs.html`。
|
|
171
|
-
- **验证**:`selftest-labels.html` 新增 2 条(同相机 0 次样式写入、只改字号复用原节点),129 条 0 FAIL;`selftest-docs.html` 新增 2 条(左侧分组高亮、深浅主题与阅读设置持久化),125 条 0 FAIL;14 个自测页合计 **1958** 条 0 FAIL。`npx tsc --noEmit`、`npm run check:docs`(258 个成员 / 255 个方法 / 236 个数据字段 / 88 个 options / 18 个功能开关 / 15 个分组)、`node docs/steps/gen-api-index.mjs --check`、`npm run build` 与 `git diff --check` 全部通过。复查入口见 [06 的增量记录](ai/06-会话索引与复查方法.md#2026-10-19-增量修改txt五条续)。
|
|
172
|
-
|
|
173
|
-
## 2026-10-21 增量:标签 HTML 语义与渲染性能
|
|
174
|
-
|
|
175
|
-
这一轮仍是现有会话的继续增量,没有新建会话归档,因此不改上表的 39 条会话统计。需求原话来自仓库根目录的 `修改.txt`:① 标签显示的 HTML 为什么不生效、是否永远按 HTML 渲染、标签多了会不会影响性能;② 继续检查隐藏性能问题和 bug 并修复;③ 在可以破坏组件原有语义时优化性能。
|
|
176
|
-
|
|
177
|
-
- **HTML 语义结论**:渲染链本身可用 —— 全局 `label.html` / `lineLabel.html`、数据 `labels[].html` 的逐条覆盖、`updateLabel` 双向切换与线路标签都正常;默认仍是纯文本,不是永远按 HTML 渲染。函数返回 `HTMLElement` 时始终按元素插入,是既有文档化例外。
|
|
178
|
-
- **修复**:`src/gis-view/create.js` 导出时显式保留逐条 `html: true / false`,不再只写开;`src/gis-view/overlay.js` 的 `labelClick` / `labelDrag` 载荷补 `html`,HTML 模式 `content` 回报 `innerHTML`;`getLabels()` 优先回报运行时偏移;模板 `{field}`、`field` 与默认名称在 HTML 模式转义,只有 `content` 模板与函数内容由使用方掌控。
|
|
179
|
-
- **性能收口**:`paintLabel()` 把 class / 样式 / 内容 / 尺寸拆成独立签名,只改样式不重写 `innerHTML`,只换位置不重写内容与样式;尺寸缓存键去掉 index / labelId / 锚点,批量量尺寸时实时复用本轮缓存。120 条同内容 HTML 标签首轮布局读取 **127 → 7** 次;只改样式 **121 次布局读取 + 120 次 `innerHTML` → 3 次 + 0 次**;改内容仍逐条写 `innerHTML`,属必要成本。
|
|
180
|
-
- **文档与核心文件**:核心文件为 `src/gis-view/overlay.js`、`src/gis-view/create.js`、`src/gis-view/types.d.ts`、`docs/steps/selftest-labels.html`;同步 `docs/manual/12-标签与装饰.md`、`docs/manual/20-性能与大数据.md`、`docs/steps/README.md`、根 `README.md` 与 `src/gis-view/README.md`。
|
|
181
|
-
- **验证**:`selftest-labels.html` 新增 16 条(151 条 / 0 失败),覆盖全局 / 逐条 HTML、模板与隐式文本转义、线路标签、点击载荷、偏移、样式零重写、导出回灌与 120 条同内容标签的布局读取上限;14 个自测页 **2047** 条通过 / 0 失败。`npx tsc --noEmit`、`npm run check:docs`(241 个成员 / 238 个方法 / 238 个数据字段 / 90 个 options / 18 个功能开关 / 16 个分组)、`node docs/steps/gen-api-index.mjs --check`、`npm run build` 与 `git diff --check` 全部通过。复查入口见 [06 的增量记录](ai/06-会话索引与复查方法.md#2026-10-21-增量标签-html-语义与渲染性能)。
|
|
182
|
-
|
|
183
|
-
## 2026-10-21 增量:高密度标签自动画布化
|
|
184
|
-
|
|
185
|
-
这一轮仍是现有会话的继续增量,没有新建会话归档,因此不改上表的 39 条会话统计。需求原话来自仓库根目录的 `修改.txt`:① `html` 改成 `false` 之后组件的标签为什么还是用 `div` 渲染,几万个标签 `div` 会不会卡顿;② 继续优化组件性能。
|
|
186
|
-
|
|
187
|
-
- **先回答 `html`**:`html` 只决定字符串按纯文本还是 HTML 解析,不改变容器;`html: false` 仍然逐条建 `.gis-view__label`(默认 `div`)。低密度时这样最灵活,但几万条纯文本标签就是几万个 DOM,单靠关掉 HTML 不会变快。
|
|
188
|
-
- **新增画布档**:`src/gis-view/overlay.js` 在强制显示档(`labelOptimize !== true` 且未进密集档)给节点层 / 线路层各加一张 Canvas;某一层本轮可画布的纯文本标签达到 **1024** 条时,该层改画到 `.gis-view__label-canvas`。HTML、函数返回 `HTMLElement`、可拖拽 / 可编辑,以及背景图 / 阴影 / `transform` / 多行 / 字间距 / 非实线或四边不等边框等 Canvas 画不全的标签继续留在 DOM,可与画布混排。
|
|
189
|
-
- **同步与回退**:首屏排版、平移缩放、拖节点、拖线路、悬停半径变化都会重算画布标签,`exportImage({ includeLabels: true })` 的 SVG 也包含画布文本;DOM ↔ Canvas 切换会回收旧 `div` 但保留标签 meta。`create.js` / `types.d.ts` 新增顶层 `labelRender?: 'auto' | 'dom'`(缺省 `auto`,非法值告警并按 `auto`),`dom` 强制保持旧行为。优化档 / 密集档仍走 DOM,因为避让、截断与命中判定要真实量尺寸,不能用画布绕过。
|
|
190
|
-
- **核心文件**:`src/gis-view/overlay.js`、`src/gis-view/create.js`、`src/gis-view/types.d.ts`、`src/gis-view/gis-view.css`、`docs/steps/selftest-labels.html`、`docs/manual/03-配置项.md`、`docs/manual/12-标签与装饰.md`、`docs/manual/20-性能与大数据.md`、`docs/steps/README.md`、`README.md`、`src/gis-view/README.md`。
|
|
191
|
-
- **验证**:`selftest-labels.html` 新增 7 条(151 → **158** 条 / 0 失败),覆盖 1100 条纯文本只留一张画布、`html: true` 混排保留一条 DOM、`labelRender: 'dom'` 回退、切回 `auto` 回收上一轮 `div`、SVG 导出与缩放只推一次;14 个自测页 **2054** 条通过 / 0 失败。`npx tsc --noEmit`、`npm run check:docs`(241 个成员 / 238 个方法 / 239 个数据字段 / 91 个 options / 18 个功能开关 / 16 个分组)、`node docs/steps/gen-api-index.mjs --check`、`npm run build` 与 `git diff --check` 全部通过。复查入口见 [06 的增量记录](ai/06-会话索引与复查方法.md#2026-10-21-增量高密度标签自动画布化)。
|
|
192
|
-
|
|
193
|
-
## 2026-10-21 增量(「问题.txt」四条:要素显隐 / 节点拆分 / 标签逐条交互 / 通道变化对账)
|
|
194
|
-
|
|
195
|
-
本轮仍是现有会话的继续增量,没有新建会话归档,因此不改上表的 39 条会话统计。需求原话来自仓库根目录的 `问题.txt`:① 节点 / 线路 / 通道如何隐藏后恢复;② 节点拆分为多个并重算线路与通道;③ 标签能否逐条配置交互能力;④ 参考节点位置对账,新增最近通道变化对账。
|
|
196
|
-
|
|
197
|
-
- **显隐**:`create.js` / `types.d.ts` 新增 `setFeatureVisible(kind, refs, visible)` / `hideFeatures` / `showFeatures`。`kind` 只认 `point` / `line` / `channel`,`refs` 支持单个 / 批量 id、下标、`{ id }` / `{ index }` 与 `'selection'`;整次调用收成一条历史、一条 `batch`。`GisViewChannel.visible: false` 让整条通道与成员回线退场,数据、分组、骨架与编辑状态保留,恢复时原样接上;节点隐藏时绑定线路退回自身 `path` / `start` / `end`,锚定通道整条收起。
|
|
198
|
-
- **拆分**:`splitPoint(source, parts, options?)` 至少两份,第一份复用原下标与 id、其余追加;`lines` 分配线路,未分配的跟第一份;通道端点默认跟第一条被分配过的成员回线,也可用 `channels` / `channelFrom` / `channelTo` 显式指定。自环 / 零长度线路、两端相同的通道与成员全空的通道拆完删除;整次调用一步历史、一条 `splitPoint` 数据变更,`changes` 给拆分后的节点、受影响的线路 / 通道端点与删除项。
|
|
199
|
-
- **标签**:`GisViewItemLabel` 补 `draggable` / `editable` 逐条交互开关与 `avoidOverlap` 类型;数据里的每条标签独立覆盖全局配置,`LabelDemo` 在同一节点上并列演示可拖 / 可编辑与只读两条。
|
|
200
|
-
- **通道对账**:`getChangedChannels()` 相对建视图 / 整份换声明 / 上次对账给出 `{ groups, groupsChanged, membersChanged, waypointsChanged, endpointsChanged, visibilityChanged, fieldsChanged, fields, reasons }`;`reasons` 顺序为 `groups` / `members` / `waypoints` / `endpoints` / `visibility` / `fields`。新通道只补基准不报变化,删除通道清账,整份换声明重设基准,读取本身不重置;`clearChangedChannels(refs?)` 发完接口后把当前声明记成新基准。
|
|
201
|
-
- **demo**:`ChannelDemo` 补隐藏 / 显示与最近变化面板,`CopyMergeDemo` 补“拆分节点”按钮与变更集读数,`LabelDemo` 补逐条交互示例;同步手册与 API 类型。
|
|
202
|
-
- **核心文件**:`src/gis-view/create.js`、`src/gis-view/engine.js`、`src/gis-view/overlay.js`、`src/gis-view/types.d.ts`、`src/gis-view/gis-view.css`、`docs/demos/ChannelDemo.vue`、`docs/demos/CopyMergeDemo.vue`、`docs/demos/LabelDemo.vue`、`docs/manual/02` / `03` / `06` / `07` / `09` / `12` / `16` / `17` / `18` / `20`、`docs/steps/README.md`、根 `README.md` 与 `src/gis-view/README.md`。
|
|
203
|
-
- **验证**:`selftest-features.html` 595、`selftest-demos.html` 292、`selftest-labels.html` 161、`selftest-docs.html` 130,四页共 **1178** 条通过 / 0 失败;`node --check`、`npx tsc --noEmit`、`npm run build`、`npm run check:docs`(247 个成员 / 244 个方法 / 242 个数据字段 / 91 个 options / 18 个功能开关 / 16 个分组)、`node docs/steps/gen-api-index.mjs --check` 与 `git diff --check` 全部通过。复查入口见 [06 的增量记录](ai/06-会话索引与复查方法.md#2026-10-21-增量要素显隐节点拆分与通道对账)。
|
|
204
|
-
|
|
205
|
-
## 2026-10-21 增量(「修改.txt」三条:通道筛选 / 线路对账 / 继续优化)
|
|
206
|
-
|
|
207
|
-
本轮仍是现有会话的继续增量,没有新建会话归档,因此不改上表的 39 条会话统计。需求原话来自仓库根目录的 `修改.txt`:① `getChangedChannels` 在通道被删后是否同步清记录,能否只记拐点、忽略整组增删或加参数;② 新增 `getChangedLines`,线路删除时同步清记录,覆盖只有节点和线路、没有通道的场景;③ 继续优化组件。
|
|
208
|
-
|
|
209
|
-
- **通道筛选**:`getChangedChannels(options?)` 新增 `reasons` 与 `ignoreGroups`。`reasons` 是白名单,支持 `groups` / `members` / `waypoints` / `endpoints` / `visibility` / `fields`;筛选后返回项的 `*Changed` 与 `fields` 一起收窄,空数组不扫数据直接返回,非数组提醒一次后按全量查。`ignoreGroups: true` 不报分组结构的新增 / 删除 / 重排,也不把整组增删折成 `waypoints`;基准与当前都存在的同 id 分组 `path` 真变了仍报 `waypoints`。缺省 `path` 与 `[]` 归一成同一档,避免分组声明落数据时误报。
|
|
210
|
-
- **线路对账**:新增 `getChangedLines(options?)` / `clearChangedLines(refs?)`,原因分 `path`(`path` / `start` / `end`)、`endpoints`(`from` / `to`)、`visibility`、`fields`。新线路只补基准不报变化,删除线路同步清账,整份换线路重设基准,读取本身不重置;`reasons` 规则与通道一致。通道骨架 / 分组拐点仍由 `getChangedChannels` 负责,只有节点和线路的场景直接走线路账本。
|
|
211
|
-
- **删除与类型**:`removeLines` / `removeChannel` 同步摘掉线路与通道账本;`removeChannel` 连带删除的成员回线也不再出现在线路变化里。`types.d.ts` 补 `GisViewChangedChannelOptions` / `GisViewChangedChannelReason` / `GisViewChangedLineOptions` / `GisViewChangedLineReason` / `GisViewChangedLine` 与两个新方法签名。
|
|
212
|
-
- **核心文件**:`src/gis-view/create.js`、`src/gis-view/types.d.ts`、`docs/steps/selftest-features.html`、`docs/manual/06` / `16` / `17` / `18`、`docs/steps/README.md`、`docs/GisView.md`、根 `README.md`、`src/gis-view/README.md` 与 `docs/demos/api-index.js`(生成物)。
|
|
213
|
-
- **验证**:`selftest-features.html` 新增 8 条对账断言(595 → **603** 条 / 0 失败),覆盖 `ignoreGroups`、已有分组拐点、`reasons` 收窄、线路字段 / 路径 / 显隐、删除通道 / 删除线路与无通道场景清账。`selftest-demos` 292、`selftest-labels` 161、`selftest-docs` 130,四页共 **1186** 条通过 / 0 失败。`node --check`、`npx tsc --noEmit`、`npm run build`、`npm run check:docs`(249 个成员 / 246 个方法 / 242 个数据字段 / 91 个 options / 18 个功能开关 / 16 个分组)、`node docs/steps/gen-api-index.mjs --check` 与 `git diff --check` 全部通过。复查入口见 [06 的增量记录](ai/06-会话索引与复查方法.md#2026-10-21-增量修改txt三条通道筛选--线路对账--继续优化)。
|
|
6
|
+
这份汇总不是使用手册。组件行为以 [GisView 手册](GisView.md) 和 [数据格式](数据格式.md) 为准,实现细节与逐轮证据在 [GisView 实现原理](GisView实现原理.md) 的 `internals/15-*`、`16-*`。这里只回答三件事:当时为什么这么定、后来怎么演进、现在该从哪里继续查。
|
|
214
7
|
|
|
215
|
-
##
|
|
8
|
+
## 阅读地图
|
|
216
9
|
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
## 2026-10-21 增量(「修改.txt」两条:Ctrl 加点高亮范围 / 分组拐点拖动模式)
|
|
227
|
-
|
|
228
|
-
本轮仍是现有会话的继续增量,没有新建会话归档,因此不改上表的 39 条会话统计。需求原话来自仓库根目录的 `修改.txt`:① 按 Ctrl 添加拐点时增加类型,可只高亮单线路、整个分组或整条通道,普通点选线路也按同一档控制;② 分组拐点拖动增加一种模式,一种沿用现有逻辑,另一种只移动当前分组同一序号 / 平行位置的拐点,其它非相对位置的拐点不动,并在 demo 中演示。
|
|
229
|
-
|
|
230
|
-
- **加点高亮范围**:`engine.js` 的 Ctrl / ⌘ + 点击通道回线加点不再固定只选一条,而是复用 `channelSelectMode` 的 `expandChannelSelection()`:`line` 只高亮被加点回线、`group` 连所在分组、`channel` 连整条通道;普通单击与 Ctrl 多选仍走同一套展开,切换 option 只重画一帧、不重排场景。
|
|
231
|
-
- **拖动模式**:新增 `channelWaypointDragMode: 'parallel' | 'vertex'`,缺省 `'parallel'` 保持现有共用骨架 + 平行偏移。`'vertex'` 拖动时只把当前分组同一 `pathIndex` 的拐点按相同世界增量平移,组内所有成员回线同步移动这一序号,相邻顶点、其它顶点与其它分组都不动;普通线路仍只改自己的 `path`。
|
|
232
|
-
- **偏移存储**:`vertex` 结果写进 `groups[].waypointOffsets`,键按含首尾端点的骨架序号计算且只接受中间拐点,值支持 `[dx, dy]` / `{ x, y }`。渲染顺序是公共骨架 → 各回线车道平行偏移 → 分组刚性偏移;增删拐点时已有偏移序号同步平移到新下标,模式切换不会清空已有偏移,重写分组声明并省略该项即可清除。
|
|
233
|
-
- **读数与导出**:`getChannels()` / `getChannelGroups()` / `getChannelGroupWaypoints()` 都返回归一化后的 `waypointOffsets`;`getParallelGroups()` 与 `exportData({ format: 'test' | 'view', parts: ['waypoint'] })` 的 `group_route` 已叠加偏移,导出的是实际路由;分组对账也把 `waypointOffsets` 计入 `waypoints`。
|
|
234
|
-
- **demo 与后端**:`docs/demos/ChannelDemo.vue` 增加选中模式、拖动模式下拉和「准备两分组拐点」按钮;通道拐点后端请求同时提交 `path` 与 `waypointOffsets`,协议文档 `docs/接口协议.md` 的 5.1 / 5.2 / 6.3 与后端落库清单同步说明两段必须一起落库、一起返回。
|
|
235
|
-
- **核心文件**:`src/gis-view/engine.js`、`src/gis-view/create.js`、`src/gis-view/types.d.ts`、`docs/demos/ChannelDemo.vue`、`docs/steps/selftest-features.html`、`docs/steps/selftest-demos.html`、`docs/manual/02` / `03` / `08` / `09` / `10` / `21`、`docs/format/03` / `04`、`docs/接口协议.md`、`docs/steps/README.md`、根 `README.md`、`src/gis-view/README.md` 与 `docs/demos/api-index.js`(生成物)。
|
|
236
|
-
- **验证**:`selftest-features.html` 新增 8 条(3 条 Ctrl 加点高亮范围 + 5 条 `vertex` 偏移 / 邻点 / 分组隔离 / 导出路由),603 → **611** 条 / 0 失败;`selftest-demos.html` 新增 1 条,296 → **297** 条 / 0 失败;`selftest-labels` 161、`selftest-docs` 130,四页共 **1199** 条通过 / 0 失败。`node --check`、`npx tsc --noEmit`、`npm run check:docs`(249 个成员 / 246 个方法 / 245 个数据字段 / 92 个 options / 18 个功能开关 / 16 个分组)、`node docs/steps/gen-api-index.mjs --check`、`npm run build` 与 `git diff --check` 全部通过。复查入口见 [06 的增量记录](ai/06-会话索引与复查方法.md#2026-10-21-增量修改txt两条ctrl-加点高亮范围--分组拐点拖动模式)。
|
|
237
|
-
|
|
238
|
-
## 2026-10-21 增量:动效、热力图与鹰眼图性能
|
|
239
|
-
|
|
240
|
-
本轮仍是现有会话的继续增量,没有新建会话归档,因此不改上表的 39 条会话统计。需求原话来自仓库根目录的 `问题.txt`:① 继续优化组件和性能;② 优化动画效果和性能;③ 优化热力图效果和性能;④ 优化鹰眼图效果和性能。
|
|
241
|
-
|
|
242
|
-
- **动画**:`engine.js` 为配了动点的线路单独维护 `lineEffectRuns` / `lineEffectRunByIndex`,`updateLineEffects()` 每帧不再遍历全部 `resolvedLines`;线路路径就地变化时同步重算该条总长、包围盒与每个动点的 `motion.total`,拖动端点 / 拐点或通道骨架重排后仍按新弧长采样。多层阴影槽位合并成一次 `bufferSubData`。
|
|
243
|
-
- **热力图**:`heatmap.js` 新增 `styleKey()` / `weightKey()`,`updateOptions({ heatmap })` 区分色带 / 尺寸 / 字段 / 值域变化:只改 `density.opacity`、`layer` 不重采也不重烤,换色带 / 核参数复用采样重烤,字段 / 值域变化才重新采样。`engine.js` 维护要素采样缓存与几何脏标记;`updatePoint` / `updateLine` 只在坐标、权重或通道宽度变化时标脏,追加节点 / 线路、拖点、拖拐点、通道骨架变化都会补标记;拖动期间延迟到停手统一补烤。密度场关闭时也记账,重新开启不会复用旧要素。
|
|
244
|
-
- **鹰眼图**:`minimap.js` 将线路放进独立离屏层 `lineLayer` / `lineContext`,缓存键覆盖尺寸、范围、投影、倍率与样式;`create.js` 的 `collectMinimapData()` 复制路径时顺路记录线路包围盒,完全在小图视野外的线路不投影、不建路径。`applyLayout()` 仅在像素尺寸实际变化时重设 canvas 尺寸,点层缓存键补上 `ratio`,线路层合成时临时开启平滑、画点层前恢复。
|
|
245
|
-
- **核心文件**:`src/gis-view/engine.js`、`src/gis-view/heatmap.js`、`src/gis-view/minimap.js`、`src/gis-view/create.js`、`docs/steps/selftest-effects.html`、`docs/steps/selftest-perf.html`、`docs/steps/selftest-demos.html`、`docs/manual/13-动效与图元.md`、`docs/manual/14-视图与筛选.md`、`docs/manual/20-性能与大数据.md`、`docs/steps/README.md`。
|
|
246
|
-
- **验证**:`selftest-effects.html` 83 → **87** 条、`selftest-perf.html` 155 → **162** 条、`selftest-demos.html` 305 → **308** 条;14 个自测页共 **2135** 条通过 / 0 失败。`npx tsc --noEmit`、`npm run build`、`npm run check:docs`(251 个成员 / 248 个方法 / 247 个数据字段 / 93 个 options / 18 个功能开关 / 43 个事件 / 16 个分组)、`node docs/steps/gen-api-index.mjs --check` 与 `git diff --check` 全部通过。公开 API 未变,`minimap.getPaintStats()` 只供自测,不进入公开接口。复查入口见 [06 的增量记录](ai/06-会话索引与复查方法.md#2026-10-21-增量动效热力图与鹰眼图性能)。
|
|
247
|
-
|
|
248
|
-
## 2026-10-22 增量:动效、热力图与鹰眼图显示优化
|
|
249
|
-
|
|
250
|
-
本轮仍是现有会话的继续增量,没有新建会话归档,因此不改 06 的 39 条会话统计。需求原话来自仓库根目录的 `问题.txt`:① 优化动画显示效果;② 优化热力图显示效果;③ 优化鹰眼图显示效果。
|
|
251
|
-
|
|
252
|
-
- **动画**:`engine.js` 为线路动点增加独立拖尾批次,按 28 CSS 像素折算世界距离并拆成 4 段线性渐隐;拖尾颜色跟随动点、线宽逐段收细,每帧随弧长重写专用缓冲,不再因高倍缩放把世界长度误判成零。绘制顺序压在线路与圆头之上、节点涟漪与图标之下,拖影不会被节点盖住。
|
|
253
|
-
- **热力图**:`density.js` 的平滑 / 分档色带统一写预乘 alpha;`shaders.js` 的图片片元着色器新增 `u_premultiplied`,整层不透明度同时作用于 RGB;`engine.js` 的密度场改用 `ONE / ONE_MINUS_SRC_ALPHA` 合成。LINEAR 过滤在透明外缘不再混入黑色,外圈保持原色相淡出。
|
|
254
|
-
- **鹰眼图**:`minimap.js` 的节点像素改为按像素中心到圆 / 方边界的覆盖率写入,并对重叠节点做 source-over 合成,小节点和高分屏下不再出现硬锯齿;线路端点补 `lineCap = 'round'`,折线接头与主视图圆头观感一致。
|
|
255
|
-
- **核心文件**:`src/gis-view/engine.js`、`src/gis-view/density.js`、`src/gis-view/shaders.js`、`src/gis-view/minimap.js`、`docs/steps/selftest-effects.html`、`docs/steps/selftest-perf.html`、`docs/steps/selftest-demos.html`。
|
|
256
|
-
- **验证**:`selftest-effects.html` 87 → **88** 条、`selftest-perf.html` 162 → **163** 条、`selftest-demos.html` 308 → **309** 条;14 个自测页共 **2138** 条通过 / 0 失败。`node --check`、`npx tsc --noEmit`、`npm run build`、`npm run check:docs`(251 个成员 / 248 个方法 / 247 个数据字段 / 93 个 options / 18 个功能开关 / 43 个事件 / 16 个分组)、`node docs/steps/gen-api-index.mjs --check` 与 `git diff --check` 全部通过。公开 API 与文档计数均未变。复查入口见 [06 的增量记录](ai/06-会话索引与复查方法.md#2026-10-22-增量动效热力图与鹰眼图显示优化)。
|
|
257
|
-
## 2026-10-22 增量:移除 zoomScaleAuto 并新增 fitSpacing
|
|
258
|
-
|
|
259
|
-
本轮仍是现有会话的继续增量,没有新建会话归档,因此不改上表的 39 条会话统计。需求原话来自仓库根目录的 `问题.txt`:① `zoomScaleAuto` 有什么用、能否删除;② 远处孤立节点撑大包围盒后主体节点过挤,增加开关与最小节点间距参数,按间距调整内部比例。
|
|
260
|
-
|
|
261
|
-
- **移除自适应比例开关**:确认 `zoomScaleAuto` 只是给没写的 `pointZoomScale` / `lineZoomScale` 兜底成 `1`,无法解决「多一个远处节点就把主体压小」的问题,因此连同 `zoomExponent` 与指数 `null` 哨兵一起删除;联动指数恢复缺省 `0`,显式写多少就按多少算。`getZoomBaseScale()` / `setZoomBaseScale()` 保留。
|
|
262
|
-
- **新增 fitSpacing**:`fitSpacing?: boolean | GisViewFitSpacingOptions`,`true` 等价于 `{ minDistance: 24, maxZoom: 0 }`。普通适应后按筛选 / 隐藏后可见节点的最近正中心距反推比例,`maxZoom` 为正数时限制相对普通适应比例的倍数,`0` 表示不限且仍受 `maxScale` 约束。相机中心改用可见节点 x / y 中位数,远处孤立点允许落到视口外;只在首次默认适应与 `fitView()` 生效,显式 `initialView.scale` / `zoom` 优先。`updateOptions({ fitSpacing })` 不移动相机,需要再调 `fitView()`。
|
|
263
|
-
- **实现与 demo**:`utils.js` 的 `measurePointSpacing()` 用 y 序相邻点上界、x 序扫描与比较预算求最近正距离,避免全量 O(n²) 并跳过重合坐标;`engine.js` 把调整串进默认适应与 `fitView()`,`create.js` 把 `fitSpacing` 归入展示类热更新。`GisViewDemo.vue` 的样式面板增加开关、最小中心距与最大放大输入,修改后即时 `fitView()` 便于对照。
|
|
264
|
-
- **核心文件**:`src/gis-view/engine.js`、`src/gis-view/utils.js`、`src/gis-view/create.js`、`src/gis-view/types.d.ts`、`docs/demos/GisViewDemo.vue`、`docs/steps/selftest-scale.html`、`docs/steps/README.md`、`docs/GisView.md`、`docs/api/index.html`、`docs/demos/api-index.js`(生成物)、`docs/manual/02` / `03` / `14` / `16` / `17` / `18` / `21`、`docs/internals/16-03-优化与取舍-下.md`。
|
|
265
|
-
- **验证**:14 个自测页共 **2138** 条通过 / 0 失败;其中 `selftest-scale.html` 输出 113 条结果,**107 PASS / 0 FAIL / 6 DIAG**;新增的 6 条 `fitSpacing` 断言全部通过(配置回显 / 孤立点下提高比例且忽略重合点 / 中位中心 / 24px 屏幕间距 / `maxZoom` 上限 / 关闭恢复),关键读数 `0.0224 → 0.24`、中心 `[50, 50]`、间距 `24`、上限 `0.0224 → 0.0448`、关闭恢复 `0.0224`。`node --check`、`npx tsc --noEmit`、`npm run build`、`npm run check:docs`(251 个实例成员 / 93 个 options / 247 个数据字段)、`node docs/steps/gen-api-index.mjs --check` 与 `git diff --check` 全部通过。复查入口见 [06 的增量记录](ai/06-会话索引与复查方法.md#2026-10-22-增量移除-zoomscaleauto-并新增-fitspacing)。
|
|
266
|
-
|
|
267
|
-
## 2026-10-22 增量:fitSpacing 居中修正与 GisViewDemo 拆分
|
|
268
|
-
|
|
269
|
-
本轮仍是现有会话的继续增量,没有新建会话归档,因此不改上表的 39 条会话统计。需求原话来自仓库根目录的 `问题.txt`:① 优化 `fitSpacing` 的放大效果,按两个最近节点的最小距离处理并居中;② 把 `GisViewDemo.vue` 拆分成多个组件,放进一个文件夹。
|
|
270
|
-
|
|
271
|
-
- **fitSpacing**:`measurePointSpacing()` 在求最近正中心距时同时记住这一对节点,返回 `{ distance, center }`,`center` 改为最近节点对的中点;`engine.js` 仍按 `minDistance / distance` 提高比例,但相机中心落到这对节点的中点。重合坐标不参与、远处孤立点允许出屏,`maxZoom` / `maxScale` 与显式 `initialView.scale` / `zoom` 的优先级不变。
|
|
272
|
-
- **Demo 拆分**:`docs/demos/GisViewDemo.vue` 只保留入口编排与 `provide`,新目录 `docs/demos/gis-view-demo/` 收纳 `useGisViewDemo.js`(状态与动作)、`demoContext.js`、`demo.css`、页头 / 说明 / 面板栈 / 舞台 / 弹框 / 页脚组件,以及 `panels/` 下的 `ViewPanels` / `StylePanels` / `DataPanels` / `OpsPanels`。面板按原页签分组,DOM 类名与 `data-demo` 钩子保持不变。
|
|
273
|
-
- **兼容与样式**:根组件 `setupState` 继续暴露 `viewRef`、`channelReadyPayload` 和既有自测读取的 demo 读数;舞台容器仍用字符串模板 ref,避免 ref 自动解包成 `null`。原 scoped 样式移到 `demo.css` 并统一加 `.gis-view-demo` 命名空间,Teleport 弹层增加同名容器,避免污染其他演示。
|
|
274
|
-
- **文档**:同步 `docs/manual/03` / `14`、`docs/steps/README.md`、`src/gis-view/types.d.ts` 与 `docs/steps/selftest-scale.html`;`selftest-scale` 增加最近节点对中点与居中放大断言,`docs/steps/README.md` 记为 114 条(108 PASS + 6 DIAG)。
|
|
275
|
-
- **验证**:`selftest-scale.html` **108 PASS / 0 FAIL / 6 DIAG**(114 条结果);14 个自测页共 **2139** 条通过 / 0 失败(`selftest-demo` 132、`selftest-demos` 309)。`node --check`、`npx tsc --noEmit`、`npm run build`、`npm run check:docs`(251 个实例成员 / 248 个方法 / 247 个数据字段 / 93 个 options / 18 个功能开关 / 16 个分组)、`node docs/steps/gen-api-index.mjs --check` 与 `git diff --check` 全部通过。复查入口见 [06 的增量记录](ai/06-会话索引与复查方法.md#2026-10-22-增量fitspacing-居中修正与-gisviewdemo-拆分)。
|
|
276
|
-
|
|
277
|
-
## 2026-10-22 增量:fitSpacing 居中、级联高亮与 forward
|
|
278
|
-
|
|
279
|
-
本轮仍是现有会话的继续增量,没有新建会话归档,因此不改上表的 39 条会话统计。需求原话来自仓库根目录的 `问题.txt`:① 优化 `fitSpacing`,放大时围绕中心;② 新增独立级联高亮,点节点亮自身、直连线路与另一端节点,点线路 / 通道亮两端,可只亮节点或同时亮线路,样式独立配置并能读取当前高亮;③ 线路新增 `forward`,默认 `true`,写 `false` 时装饰、方向箭头和动画反向;④ 合并 `onContextMenu` / `onChannelContextMenu`,只保留 `onContextMenu` 并补齐类型。工作区未发现随附的参考图片,本轮按问题文本实现。
|
|
280
|
-
|
|
281
|
-
- **fitSpacing**:`utils.js` 的 `measurePointSpacing()` 在最近正中心距出现并列时(规则网格最常见),优先选择「节点对中点离数据中心最近」的一对;数据中心取所有可见节点 x / y 的中位数,不会被远处孤立点拉偏。非并列时仍是最近节点对,相机仍居中到选中节点对的中点,`minDistance` / `maxZoom` / `maxScale` 与显式 `initialView` 口径不变。
|
|
282
|
-
- **级联高亮**:`engine.js` 新增独立于选中集的 `cascadeHighlight` 状态。`true` 等价于 `{ scope: 'both' }`,对象支持 `scope: 'points' | 'both'`、`pointStyle`、`lineStyle`、`clearOnEmptyClick`、`enabled`;点节点亮自身、直连线路和另一端节点,点线路 / 通道回线只亮两端节点。新增 `onCascadeHighlight`、总线事件 `cascadeHighlight` 与只读方法 `getCascadeHighlight()`,三者与内部读数同源;点空白、关开关、来源被删 / 隐藏或数据刷新后失效时自动收掉。级联样式不依赖选中 / 悬停样式;显式选中样式仍优先,未配置选中样式时不会把级联样式吞掉。
|
|
283
|
-
- **线路 forward**:`GisViewLine.forward?: boolean` 默认 `true`,表示从 `from` / `path[0]` 走向 `to` / `path[last]`。写 `false` 时装饰位置与朝向、静态方向箭头、线路动点与拖尾都反向;它与 `effect.reverse` / `direction.reverse` 是异或关系,且不改写 `path`。`line.js` 的路径定位与 `effect.js` 的弧长采样统一接收有效方向,`updateLine({ forward })` 即时生效。
|
|
284
|
-
- **右键统一**:`onContextMenu(payload, event)` 成为唯一右键回调,取消 `onChannelContextMenu` / `channelContextMenu` 与 `channelMenu` 功能开关。命中通道回线时仍走同一条回调,载荷顶层保留 `lineId` / `lineIndex`,并附 `channelContext`(组数 / 当前分组 / 分组列表 / 可用交互);`action.target` 为 `channel`、`action.data` 为通道定义。功能开关由 18 降到 17,ChannelDemo / GisViewDemo / EventDemo 与路径步骤页同步改读统一载荷。
|
|
285
|
-
- **文档与自测**:同步 `README.md`、`src/gis-view/README.md`、`docs/GisView.md`、`docs/manual/02` / `03` / `04` / `07` / `10` / `14` / `16` / `17` / `18` / `21`、`docs/format/07`、`docs/steps/README.md`;重新生成 `docs/demos/api-index.js`。新增断言覆盖 `fitSpacing` 并列居中、级联节点 / 线路 / 通道 / 空白 / scope / 独立样式 / 开关与快照、`forward` 默认值与四种反向组合、统一右键的 `channelContext`。
|
|
286
|
-
- **核心文件**:`src/gis-view/engine.js`、`src/gis-view/create.js`、`src/gis-view/line.js`、`src/gis-view/effect.js`、`src/gis-view/utils.js`、`src/gis-view/types.d.ts`、`src/gis-view/features.js`、`src/gis-view/events.js`、`src/gis-view/README.md`、`docs/demos/**`、`docs/manual/**`、`docs/format/07-事件载荷与示例数据.md`、`docs/steps/selftest-{features,effects,scale,actions,demos,docs}.html`、`docs/steps/README.md`、根 `README.md`。
|
|
287
|
-
- **验证**:14 个自测页共 **2160** 条通过 / 0 失败(`selftest-features` 621、`selftest-effects` 96、`selftest-demos` 309、`selftest-scale` 115 条结果 = 109 PASS + 6 DIAG);`node --check`、`npx tsc --noEmit`、`npm run build`、`npm run check:docs`(252 个成员 / 249 个方法 / 248 个数据字段 / 94 个 options / 17 个功能开关 / 43 个事件 / 16 个分组)、`node docs/steps/gen-api-index.mjs --check` 与 `git diff --check` 全部通过。复查入口见 [06 的增量记录](ai/06-会话索引与复查方法.md#2026-10-22-增量fitspacing-居中级联高亮与-forward)。
|
|
288
|
-
|
|
289
|
-
## 2026-10-22 增量(「问题.txt」三条:合并样式说明 / 级联高亮 Demo / 筛选后的通道宽度)
|
|
290
|
-
|
|
291
|
-
本轮仍是现有会话的继续增量,没有新建会话归档,因此不改上表的 39 条会话统计。需求原话来自仓库根目录的 `问题.txt`:① 说明「合并样式」是什么、有什么用;② 把上一轮的点击级联高亮补进 Demo;③ 排查 `setFilter` 为什么有时会让仍在显示的通道宽度发生变化。工作区未发现随附的参考图片,第 ③ 条按问题文字和现有锚点逻辑复现。
|
|
292
|
-
|
|
293
|
-
- **合并样式说明**:确认它不是额外配置或新 API,而是 `mergePoints()` 合并后最终写进保留节点的 `size` 与 `symbol`:尺寸取双方较大值,图标优先目标节点;需要自定义时改写 `merge.createItem()` 返回值或 `payload.item`。Demo 的合并读数加上「合并样式:」前缀,并在复制与合并面板补了规则与改写入口提示。
|
|
294
|
-
- **级联高亮 Demo**:综合示例的「视图 · 交互 → 交互开关与快捷键」面板新增级联高亮开关、「节点 + 直连线路 / 只亮节点」范围下拉、`getCascadeHighlight()` 读数与 `onCascadeHighlight` 载荷展示;可现场切换并确认它与选中集独立。
|
|
295
|
-
- **筛选后的通道宽度**:根因是 `channelNodeWidthFor()` 只从 `pointByIndex` 取节点外框,被 `setFilter` 隐藏的端点不在该表里,于是单端隐藏时改按另一端尺寸取宽,两端都隐藏时退回默认 `width`。`engine.js` 现在通过 `filteredAnchorIndexById` 补取被筛锚点,并用按数据下标缓存的外框尺寸走同一条「点自身 > 规则 > pointStyle」样式链(保留热力倍率,不叠临时的悬停 / 选中状态);数据、样式链或隐藏集合变化时清缓存。只有节点真删除或 `visible: false` 才按没有节点处理。
|
|
296
|
-
- **核心文件**:`src/gis-view/engine.js`、`docs/demos/gis-view-demo/useGisViewDemo.js`、`docs/demos/gis-view-demo/panels/ViewPanels.vue`、`docs/manual/07-指针与要素编辑.md`、`docs/manual/09-通道与多回线.md`、`docs/manual/14-视图与筛选.md`、`docs/steps/selftest-features.html`、`docs/steps/selftest-demos.html`、`docs/steps/README.md`。
|
|
297
|
-
- **验证**:`selftest-features.html` 621 → **625** 条、`selftest-demos.html` 309 → **314** 条、`selftest-docs.html` **130** 条,三页全部通过 / 0 失败;`node --check`、`npx tsc --noEmit`、`npm run build`、`npm run check:docs`(252 个成员 / 249 个方法 / 248 个数据字段 / 94 个 options / 17 个功能开关 / 43 个事件 / 16 个分组)、`node docs/steps/gen-api-index.mjs --check` 与 `git diff --check` 全部通过。公开 API 与文档计数均未变。复查入口见 [06 的增量记录](ai/06-会话索引与复查方法.md#2026-10-22-增量问题txt三条合并样式说明--级联高亮-demo--筛选后的通道宽度)。
|
|
298
|
-
|
|
299
|
-
## 2026-10-22 增量(「问题.txt」四条:筛选恢复 / focusOn 类型 / 程序化选中 / 线路跟随开关)
|
|
300
|
-
|
|
301
|
-
本轮仍是现有会话的继续增量,没有新建会话归档,因此不改上表的 39 条会话统计。需求原话来自仓库根目录的最新 `问题.txt`:① 修复通道被筛选后重新出现时的错位;② 让 `focusOn` 能明确聚焦节点 / 线路 / 通道 / 分组,并统一放大比例;③ 补齐节点、线路、通道、分组与拐点的程序化选中;④ 新增线路是否跟随节点的开关。工作区未发现随附参考图片,第 ① 条按问题文字与真实 `new.json` 临时复现验证。
|
|
302
|
-
|
|
303
|
-
- **筛选恢复后的通道**:`engine.js` 在线路解析完成、成员线宽表更新之后调用 `reflowChannelWidths(channels)`,按最新线宽重算通道偏移与回线路径;筛选隐藏再恢复时不再沿用筛掉成员期间的旧切点间距。真实 `new.json` 临时复现页 3/3 PASS,临时页验证完已删除。
|
|
304
|
-
- **focusOn 类型与缩放**:`focusOn` 支持显式 `type: 'point' | 'line' | 'channel' | 'group'`;字符串 / 数字仍按「先节点、再线路」兼容,同 id 用 `type` 消歧;通道可写 `{ channelId }` 或显式 `type: 'channel'`,分组写 `{ type: 'group', channelId?, groupId }`,全局唯一 `groupId` 可省略通道。四类目标都解析成范围后交给 `zoomToBounds`,没有单独放大倍率。
|
|
305
|
-
- **程序化选中**:`selectFeatures` 支持分组写法(`type: 'group'` 与全局唯一 `groupId`)。新增 `selectWaypoint('line-1', 2)` / `{ lineIndex, pathIndex }` / `{ lineId, pathIndex }` / `null`,有效拐点会同时选中所在线路;找不到线路或可编辑拐点时不会凭空选中拐点。
|
|
306
|
-
- **线路跟随节点**:新增 `lineFollowsNode`,默认 `true`。关闭后隐藏、删除、筛选只影响节点,线路 / 通道停在最后一个已知坐标与解析尺寸;筛选未显式写 `cascade` 时默认不级联,显式 `cascade` 始终优先。`updateOptions` 动态切换会按新口径重算当前筛选,并支持 true → false → true 的状态恢复。
|
|
307
|
-
- **核心文件**:`src/gis-view/create.js`、`src/gis-view/engine.js`、`src/gis-view/filter.js`、`src/gis-view/filter-runner.js`、`src/gis-view/filter.worker.js`、`src/gis-view/types.d.ts`、`docs/steps/selftest-features.html`、`docs/steps/selftest-demos.html`、`docs/steps/selftest-docs.html`、`docs/manual/03` / `08` / `09` / `14` / `16` / `17` / `18`、`docs/demos/api-index.js`(生成物)、根 `README.md`、`src/gis-view/README.md` 与 `docs/steps/README.md`。
|
|
308
|
-
- **验证**:`selftest-features.html` **662** 条、`selftest-demos.html` **314** 条、`selftest-docs.html` **130** 条,共 **1106** 条通过 / 0 失败;`npx tsc --noEmit`、`npm run check:docs`(实例成员 **253** = 方法 **250** + 属性 3,options **95**,数据字段 **249**)、`node docs/steps/gen-api-index.mjs --check`、`npm run build` 与 `git diff --check` 全部通过。复查入口见 [06 的增量记录](ai/06-会话索引与复查方法.md#2026-10-22-增量问题txt四条筛选恢复--focuson-类型--程序化选中--线路跟随开关)。
|
|
309
|
-
|
|
310
|
-
## 2026-10-22 增量:预指定通道起点、导出范围、级联触发与筛选宽度
|
|
311
|
-
|
|
312
|
-
本轮仍是现有会话的继续增量,没有新建会话归档,因此不改 06 的 39 条会话统计。需求原话来自仓库根目录的 `问题.txt`:第 0 条让 `beginAddChannel` 可以直接指定起点;第 1 条让 `exportImage` 支持当前视口 / 全部内容;第 2 条要求把方法与配置项的参数写到逐项可读;第 3 条要求级联样式只作用于邻接项、直接选中仍走 select,并让框选 / 多选各自决定是否触发级联;第 4 条继续排查筛选后的通道宽度。
|
|
313
|
-
|
|
314
|
-
- **预指定起点**:`GisViewChannelDraftOptions` 新增 `from?: GisViewPointRef`。引擎按 id、被筛锚点、数字下标依次解析,合法时草稿直接进入 `phase: 'from'`,下一次点节点只选终点;`continueAddChannel({ from })` 也支持换起点,优先级为显式 `from` > 连续新增的 `chain` 上一段终点。找不到节点时草稿不开始并报 warning,原有两次点击流程不变。
|
|
315
|
-
- **导出范围**:`GisViewExportImageOptions` 新增 `scope: 'viewport' | 'all'` 与 `padding`。`'viewport'` 保持原行为;`'all'` 保存当前相机,临时 `zoomToBounds(engine.getBounds(), padding)` 后重排标签 / 扩展图形,PNG 与 SVG 都按该视角出图,`finally` 恢复相机、标签、图形层与鹰眼图。非法 `scope` 直接抛错。
|
|
316
|
-
- **级联样式与触发**:直接选中的节点 / 线路只走 select / multiSelect / boxSelect 对应的样式,没配就保持普通外观,不再回落到悬停或级联样式;级联的 `pointStyle` / `lineStyle` 只作用于邻接项。新增 `triggerOnClick`(缺省 `true`)、`triggerOnMultiSelect`(缺省 `true`)、`triggerOnBoxSelect`(缺省 `false`);关掉的路径只改选中集并收掉旧级联,框选打开时按整框命中项取邻接并集,`origin` 取第一个命中项。
|
|
317
|
-
- **筛选后的通道宽度**:通道锚点宽度缓存改为 `channelAnchorSpans`,可见节点与被筛节点统一走「点自身 > 规则 > pointStyle」的中性尺寸链并保留热力倍率,不再混入悬停 / 选中 / 框选 / 级联的临时尺寸。`updatePoint` 显式失效对应缓存;`setFilter` 隐藏单端、双端或叠加选中样式时,仍显示的通道与保留的分组回线保持原宽度和车道。
|
|
318
|
-
- **参数文档**:同步 `docs/manual/03` / `07` / `10` / `15` / `16` / `17` / `18`,补全 `cascadeHighlight` 子字段、`GisViewChannelDraftOptions` 逐项表、`exportImage` 全部 options 与示例,并修正“未配选中样式会回退”的过期表述。
|
|
319
|
-
- **核心文件**:`src/gis-view/engine.js`、`src/gis-view/create.js`、`src/gis-view/types.d.ts`、`docs/manual/03-配置项.md`、`docs/manual/07-指针与要素编辑.md`、`docs/manual/10-通道编辑与新增.md`、`docs/manual/15-导出与集成.md`、`docs/manual/16-实例方法总表.md`、`docs/manual/17-参数速查.md`、`docs/manual/18-逐方法示例.md`、`docs/steps/selftest-features.html`、`docs/demos/api-index.js`(生成物)、`docs/AI对话汇总.md`、`docs/ai/06-会话索引与复查方法.md`。
|
|
320
|
-
- **验证**:`npx tsc --noEmit`、`npm run build`、`npm run check:docs`(252 个成员 / 249 个方法 / 248 个数据字段 / 94 个 options / 17 个功能开关 / 43 个事件 / 16 个分组)、`node docs/steps/gen-api-index.mjs --check` 与 `git diff --check` 全部通过;`node scripts/run-selftests.mjs selftest-features.html selftest-demos.html selftest-docs.html` 为 features **646** / demos **314** / docs **130**,共 **1090** 条通过 / 0 失败。公开 API 与文档计数未变。复查入口见 [06 的增量记录](ai/06-会话索引与复查方法.md#2026-10-22-增量预指定通道起点导出范围级联触发与筛选宽度)。
|
|
321
|
-
|
|
322
|
-
## 2026-10-22 增量:接口能力 demo、API 细节与 fitSpacing 中心修正
|
|
323
|
-
|
|
324
|
-
本轮仍是现有会话的继续增量,没有新建会话归档,因此不改上表的 39 条会话统计。需求原话来自仓库根目录的 `修改.txt` 六项:① 把 `triggerOnBoxSelect` 等级联触发开关在 demo 中体现;② 对照组件全部能力,为 demo 尚未体现的方法与属性补演示;③ 写细 API 方法入参与响应说明;④ 补关联文档互跳;⑤ 排查 `fitSpacing` 开启后为何不是围绕中心放大;⑥ 继续依据最近修改优化组件性能。
|
|
325
|
-
|
|
326
|
-
- **接口能力 demo**:新增 `docs/demos/ApiCoverageDemo.vue` 与 `api-coverage`「接口能力」页签,演示总数变为 **22**(21 个功能 + 综合)。同屏覆盖级联高亮的单击 / 多选 / 框选三种独立触发,节点 / 线路 / 通道 / 分组 / 拐点的程序化选中,`point` / `line` / `channel` / `group` 四类 `focusOn`,`lineFollowsNode`,以及坐标互转、视口 / 渲染器、场景快照、样式字段合并、装饰 CRUD、通道线宽与线路对账、GeoJSON 投影、历史、复制 / 删除、`once`、WebGL 层清理、注册表注销与初始化 options 等接口。
|
|
327
|
-
- **综合 demo**:`GisViewDemo` 的级联高亮面板增加 `triggerOnClick` / `triggerOnMultiSelect` / `triggerOnBoxSelect` 三个独立开关,并随配置热更新;接口能力页另把此前只在文档出现、没有 demo 入口的只读与写入方法集中展示。静态审计后,253 个实例成员与 95 个 options 在全部 demo 中的直接引用缺口均为 **0**。
|
|
328
|
-
- **API 参数与响应口径**:`docs/manual/17-参数速查.md` 增加「调用与响应口径」,统一说明链式返回、一次数据通知、选中集同步、相机更新、只读快照与失败 / 异步结果;并细化 `focusOn`、`selectFeatures`、`selectWaypoint`、`selectInBox`、复制 / 合并 / 删除 / 历史等方法的参数和返回字段。`03` / `07` / `08` / `09` / `14` / `16` / `17` / `18` 之间补齐关联章节互跳;同时把 17 的口径说明改为四级标题,避免解析器把后续参数表截断。
|
|
329
|
-
- **fitSpacing 中心修正**:`utils.js` 的 `measurePointSpacing()` 只返回最近正中心距,不再为并列节点对计算中点;`engine.js` 的 `fitSpacingAdjustment()` 只提高相机比例,相机中心始终沿用普通适应的包围盒中心。开启 `fitSpacing` 后不会因为最近节点对换位置而跳到另一个点,`maxZoom` / `maxScale` / 显式 `initialView.scale` / `zoom` 的优先级不变。
|
|
330
|
-
- **性能优化**:`measurePointSpacing()` 去掉并列距离时的中点距离比较,减少规则网格下的重复计算;`reflowChannelWidths()` 为单组通道增加宽度未变时的快路径,直接跳过车道布局与回线路径重建,多组通道仍走完整重排。10 万点微基准由 **34.933 ms** 降至 **27.572 ms**,约提升 **21%**。
|
|
331
|
-
- **核心文件**:`src/gis-view/utils.js`、`src/gis-view/engine.js`、`docs/demos/ApiCoverageDemo.vue`、`docs/demos/demos.js`、`docs/demos/gis-view-demo/panels/ViewPanels.vue`、`docs/demos/gis-view-demo/useGisViewDemo.js`、`docs/manual/03` / `07` / `08` / `09` / `14` / `16` / `17` / `18`、`docs/steps/selftest-demos.html`、`docs/steps/selftest-scale.html`、`docs/steps/README.md`、`docs/internals/16-03-优化与取舍-下.md`、根 `README.md` 与 `docs/demos/api-index.js`(生成物)。
|
|
332
|
-
- **验证**:`npx tsc --noEmit`、`npm run build`、`npm run check:docs`(实例成员 **253**、options **95**、数据字段 **249**)、`node docs/steps/gen-api-index.mjs --check` 与 `git diff --check` 全部通过;14 个自测页共 **2225 条通过 / 0 失败**,其中 `selftest-demos.html` **333 PASS / 0 FAIL**、`selftest-scale.html` **109 PASS / 0 FAIL / 6 DIAG**。复查入口见 [06 的增量记录](ai/06-会话索引与复查方法.md#2026-10-22-增量接口能力-demoapi-细节与-fitspacing-中心修正)。
|
|
333
|
-
|
|
334
|
-
## 2026-10-23 增量(「修改.txt」四条:focusOn 缩放 / 四类搜索 / 筛选选中保留 / 参数说明)
|
|
335
|
-
|
|
336
|
-
本轮仍是现有会话的继续增量,没有新建会话归档,因此不改上表的 39 条会话统计。需求原话来自仓库根目录的 `修改.txt`:① 检查 `focusOn` 对线路 / 通道是否仍默认放大,若有则取消;② `search` 增加与 `focusOn` 对应的目标类型;③ 排查筛选为何会取消选中,筛选应只隐藏;④ 把方法与参数说明补细。
|
|
337
|
-
|
|
338
|
-
- **focusOn 缩放核对**:现有四类目标(节点 / 线路 / 通道 / 分组)都已解析成真实 `bounds` 后走同一条 `zoomToBounds`,线路与通道没有额外倍率;本轮不改行为,只补自测逐位比较 `focusOn` 与同一份 `bounds` 的 `zoomToBounds` 比例。
|
|
339
|
-
- **四类搜索**:`scope` 新增 `groups`,并接受与 `focusOn` 一致的单数别名 `point` / `line` / `channel` / `group`;省略或写错时四类全搜。结果新增 `groups`,分组命中带 `channelIndex` / `groupId` / `groupIndex` 与轻量 `item`,`bounds` 按整组范围计算,可直接交给 `focusOn` / `selectFeatures`。同步、`searchAsync`、Worker 与结果回填四条路共用同一口径;分组快照随分组范围请求交给 Worker,改过分组后不会用旧快照匹配。
|
|
340
|
-
- **筛选取消选中**:根因是引擎的 `isKeyAlive()` 查 `pointByIndex` / `lineByIndex`,这两个索引只含可见要素,筛选隐藏被误判成删除,整份重排时把选中集清掉。改为查原始 `points` / `lines` 数组后,筛选只隐藏显示、不删数据、不清空选中集;被隐藏的选中项在条件放宽 / 清空后恢复,且不会补发选中变更。要删除仍走 `removePoints` / `removeLines`。
|
|
341
|
-
- **参数与文档**:补齐 `types.d.ts` 的搜索范围 / 分组命中说明与筛选注释,手册 `14` / `16` / `17` / `18` / `21` 写清四类 scope、别名、`result.groups`、分组命中字段、`focusOn` 不额外放大,以及筛选只隐藏;根 `README.md` 与 `src/gis-view/README.md` 同步当前口径。`SearchFilterDemo` 增加分组搜索入口与提示。
|
|
342
|
-
- **核心文件**:`src/gis-view/search.js`、`src/gis-view/search.worker.js`、`src/gis-view/search-runner.js`、`src/gis-view/create.js`、`src/gis-view/engine.js`、`src/gis-view/types.d.ts`、`docs/demos/SearchFilterDemo.vue`、`docs/steps/selftest-features.html`、`docs/steps/selftest-demos.html`、`docs/manual/14` / `16` / `17` / `18` / `21`、根 `README.md`、`src/gis-view/README.md`、`docs/demos/api-index.js`(生成物)、`docs/AI对话汇总.md` 与 `docs/ai/06-会话索引与复查方法.md`。
|
|
343
|
-
- **验证**:`selftest-features.html` **666** 条、`selftest-demos.html` **334** 条、`selftest-docs.html` **130** 条,三页共 **1130** 条通过 / 0 失败;`npx tsc --noEmit`、`node --check`(三个搜索文件)、`npm run check:docs`(253 个实例成员 / 95 个 options / 249 个数据字段)、`node docs/steps/gen-api-index.mjs --check`、`npm run build` 与 `git diff --check` 全部通过。公开实例成员、options 与主数据字段计数未变。复查入口见 [06 的增量记录](ai/06-会话索引与复查方法.md#2026-10-23-增量修改txt四条focuson-缩放--四类搜索--筛选选中保留--参数说明)。
|
|
344
|
-
|
|
345
|
-
## 2026-10-23 增量(「问题.txt」四条:SVG 描边 / 文档表格 / selectTrigger / 筛选删除)
|
|
346
|
-
|
|
347
|
-
本轮仍是现有会话的继续增量,没有新建会话归档,因此不改上表的 39 条会话统计。需求原话来自仓库根目录的 `问题.txt`:① 导出 SVG 时节点图标异常、只剩纯白;② 文档页面的参数表格渲染错误;③ 选中默认单击、可配置双击选中,并暴露双击事件;④ 筛选可配置为删除或隐藏。
|
|
348
|
-
|
|
349
|
-
- **SVG 节点描边**:根因是 `resolvePointWithBase()` 没把解析出来的 `strokeColor` 放进节点条目,`paintResolvedPoint()` 也没写回 `entry.strokeColor`,SVG 符号里的 `currentStrokeColor` 因此回落成白色。现在两处都带上实际描边色,规则 / 状态样式同样生效,`currentColor` 仍取填充色。
|
|
350
|
-
- **文档参数表格**:`docs/index.html` 的表格 `parseRow()` 改为逐字符扫描,反引号代码段里的 `|` 不再拆列,`\|` 还原成单元格内的普通竖线;修复联合类型(如导出格式的 `'image/png' | 'image/jpeg' | 'svg'`)被拆成多列。自测补了带反引号联合类型的表格夹具。
|
|
351
|
-
- **`selectTrigger`**:新增组件与引擎选项,缺省 `'click'` 保持第一次单击选中;`'dblClick'` 下第一下只发 `onClick`,第二次(320ms / 6px 内)才选中、清空或取反,并同时发 `onClick`(`action.double: true`)与 `onDblClick`。也收 `doubleClick` / `double` 别名;Ctrl / `multiSelect` 在双击模式第二下取反,`onClick.action.type` 为 `toggleSelect`。运行时 `updateOptions({ selectTrigger })` 只走表现快路径并清空上一次点击序列;单击模式的 Ctrl / `multiSelect` 取反保持旧口径,不额外发点击 / 双击事件。
|
|
352
|
-
- **筛选删除**:`filter.mode` 支持 `'hide'`(缺省)/ `'remove'`。`remove` 按筛选结果先删线路、再删节点,无 id 线路用删除前下标;删除集合就是筛选结果,不再按 `lineFollowsNode` 二次扩圈。中间 `removePoints` / `removeLines` 数据变更与 `onFilter` 被抑制,只发一条 `dataChange('filterRemove')` 和最终一次 `onFilter`,删完隐藏集合回到空。事件载荷新增 `mode` / `pointIndexes` / `removedPoints` / `removedLineItems`(其余 `lineIndexes` / `removedLineIndexes` / `lineIds` / `count` / `removedLines` / `removedChannels` 继续保留),`points` / `lines` / `channels` 仍是删除后的最新数据。
|
|
353
|
-
- **历史与初始时序**:一次 remove 只落一步历史;撤销恢复数据时通过 `suppressRemoval` 阻止仍生效的 remove 条件再次删除,重做不补发第二条 `filterRemove`。同步初始筛选在 `ready` 前删完;初始筛选走 Worker 时删除与 `onFilter` 在异步结果回来后才发生。顺带修正 `history.js` 的 `spliceEntries()` 一次撤销多条删除时的下标偏移,多条线路恢复后保持原顺序。
|
|
354
|
-
- **核心文件**:`src/gis-view/point.js`、`engine.js`、`create.js`、`filter.js`、`history.js`、`types.d.ts`、`docs/index.html`、`docs/steps/selftest-select.html` / `selftest-scale.html` / `selftest-docs.html` / `selftest-demos.html`、`docs/manual/03` / `04` / `08` / `14` / `15` / `16` / `17` / `18` / `21`、`README.md`、`src/gis-view/README.md`、`docs/GisView.md`、`docs/steps/README.md`、`docs/demos/api-index.js`(生成物)与本轮 aimd。
|
|
355
|
-
- **验证**:`selftest-select.html` **69**、`selftest-docs.html` **131**、`selftest-scale.html` **119**、`selftest-actions.html` **96**、`selftest-demos.html` **334**、`selftest-data.html` **103**、`selftest-features.html` **666**,相关 7 页共 **1518** 条通过 / 0 失败(`selftest-scale` 另有 6 条 DIAG 耗时读数)。`npx tsc --noEmit`、五个源码文件的 `node --check`、`node docs/steps/gen-api-index.mjs` 与 `--check`、`npm run check:docs`(253 个实例成员 / 250 个方法 / 250 个数据字段 / 96 个 options)、`npm run build`、`git diff --check` 全部通过。复查入口见 [06 的增量记录](ai/06-会话索引与复查方法.md#2026-10-23-增量问题txt四条svg-描边--文档表格--selecttrigger--筛选删除)。
|
|
356
|
-
|
|
357
|
-
## 2026-10-23 增量(「修改.txt」四项:focusOn 缺省居中 / 文档互跳 / 扩展命令 / 性能优化)
|
|
358
|
-
|
|
359
|
-
本轮仍是现有会话的继续增量,没有新建会话归档,因此不改上表的 39 条会话统计。需求原话来自仓库根目录的 `修改.txt`:① 节点 / 线路 / 通道的 `focusOn` 表现不一致,缺省应只居中、放大必须手动设置;② 增加文档互跳,并解决方法速查左栏点击后右侧滚动过慢;③ 继续增加组件的可扩展能力与灵活性并提供 demo;④ 优化组件交互与方法性能。
|
|
360
|
-
|
|
361
|
-
- **focusOn 缺省口径**:`focusOn(target, options)` 现在缺省只 `centerOn`,不再自动 `zoomToBounds`;只有 `zoom: true` 才按目标范围适配,`scale` 优先于 `zoom`,`center: true` 保留为显式居中。节点、线路、通道、分组与批量目标共用同一口径;演示页里原先依赖自动适配的定位都改成显式 `zoom: true`。
|
|
362
|
-
- **文档互跳与左栏跳转**:API 速查顶栏增加文档中心 / 实例方法 / 参数速查 / 逐方法示例四个深链,每个主题分组标题增加对应手册章节链接;左栏跳转由平滑滚动改为 `behavior: 'auto'`,长页面不再缓慢滚过整屏,并暴露 `__gisApi.scrollToGroup()` 供自测与宿主复用。
|
|
363
|
-
- **扩展能力与 demo**:新增实例命令 `registerCommand` / `executeCommand` / `listCommands`。命令表按视图隔离,同名后注册覆盖、注销函数幂等且不会误删后注册的同名命令;上下文冻结为 `{ view, name }`,执行结果区分成功值与未注册 / 非法名字 / handler 异常,`destroy()` 清空命令表。`ExtensionDemo` 补齐插件、自定义图元、条件运算符、导出格式、WebGL 自定义层与实例命令六类扩展点。
|
|
364
|
-
- **交互与方法性能**:定向补丁只在改动可能影响筛选结果时重跑筛选;只改展示字段时沿用原结果,`id` / 坐标 / `from` / `to` / `visible` 与函数 / 自定义运算符条件保持保守重跑。引擎新增定向的通道 / 分组范围测量,`focusOn` 不再为一段范围复制整页通道几何;事件总线在只有一条订阅时直接调用,省掉每次事件分发的快照数组。本轮没有做可信的性能基准,不提供加速倍数。
|
|
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
|
-
- **验证**:`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」两项:数据包围盒缓存与相机飞行)
|
|
10
|
+
| 想找 | 先看 |
|
|
11
|
+
| --- | --- |
|
|
12
|
+
| 为什么自研 WebGL2、没有选 ECharts / G6 / deck.gl | [关键技术决策](#关键技术决策) 与 [原理 18](internals/18-性能实测与WebGPU评估.md) |
|
|
13
|
+
| 通道、分组、拐点的设计口径 | [通道为什么必须两端绑节点](#通道为什么必须两端绑节点) 与 [手册 09](manual/09-通道与多回线.md) / [手册 10](manual/10-通道编辑与新增.md) |
|
|
14
|
+
| 十万级数据为什么能跑 | [性能](#性能不是一次优化) 与 [手册 20](manual/20-性能与大数据.md) |
|
|
15
|
+
| 拐点 / 分组怎么和后端对接 | [精选问答](#精选问答) 与 [手册 15](manual/15-导出与集成.md) |
|
|
16
|
+
| 某一轮具体改了什么、怎么复查 | [维护索引](ai/06-会话索引与复查方法.md) 与 [实现原理逐轮记录](internals/15-01-逐轮记录-新增与修复.md) |
|
|
17
|
+
| 组件现在公开多少能力 | [手册 16](manual/16-实例方法总表.md) / [API 速查](api/index.html) |
|
|
424
18
|
|
|
425
|
-
|
|
19
|
+
## 一眼看全
|
|
426
20
|
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
21
|
+
| 项目 | 结论 |
|
|
22
|
+
| --- | --- |
|
|
23
|
+
| 对话范围 | 2026-09-15 ~ 2026-10-29,39 个会话、194 轮;10-14 之后主要为现有会话的增量轮次 |
|
|
24
|
+
| 产品形态 | 一个无内置界面的 `createGisView(dom, options)` WebGL2 矢量视图,交互与视觉效果通过配置、事件和实例方法组合 |
|
|
25
|
+
| 核心对象 | 节点、线路、通道(多回线 / 分组)、拐点、装饰、标签、覆盖层、鹰眼图、扩展图形 |
|
|
26
|
+
| 技术路线 | WebGL2 批量渲染 + HTML / Canvas 覆盖层 + 网格索引 + 增量更新 + Worker 筛选与搜索 |
|
|
27
|
+
| 当前公开面 | 273 个实例成员、100 个 options、266 个数据字段、44 个事件、17 个功能开关、16 个分组 |
|
|
28
|
+
| 维护方式 | 文档双向对账、API 索引生成、14 个自测页与无头浏览器回归;每轮记录同步到本页与维护索引 |
|
|
432
29
|
|
|
433
|
-
##
|
|
30
|
+
## 关键技术决策
|
|
434
31
|
|
|
435
|
-
|
|
32
|
+
| 主题 | 当时的判断 | 最后落点 |
|
|
33
|
+
| --- | --- | --- |
|
|
34
|
+
| 技术路线 | 现成图库在十万级点线、通道回线、拐点拖拽与自定义视觉上会互相牵制,WebGPU 当时的兼容面又不够稳 | 自研 WebGL2 渲染与拾取,HTML 覆盖层负责标签和交互;WebGPU 只保留评估与开关口径 |
|
|
35
|
+
| 通道 | 通道不是普通连线的集合,而是两端必须绑节点、共享一条骨架的走廊 | 公共骨架 + 逐成员偏移 + 分组拐点;节点、筛选、删除、合并都联动通道状态 |
|
|
36
|
+
| 拐点 | 拐点是线路 / 通道的一部分,不能让选中键只记下标 | 选中键与数据对象身份绑定,删除 / 合并后跟着要素平移;整份覆盖接口与程序化方法共用同一几何口径 |
|
|
37
|
+
| 交互 | 点击、框选、Ctrl 多选、拖拽、拐点编辑要共享一套选中语义,但不同入口允许不同筛选 | 统一的选中键、事件载荷与 `selectionKinds`;几何沾框与端点框选并存 |
|
|
38
|
+
| 样式 | 描边色和填充色不是一回事,状态样式不能在没配置时偷偷放大 | `getGisStyle` 按描边 / 填充拆开;hover / select / multi / box 不配置就不改外观 |
|
|
39
|
+
| 性能 | 优化不能只靠“少画一点”,要同时减少 CPU 遍历、GPU 批次与 DOM 读写 | 点 / 线段网格、视口裁剪、批次前缀续写、按 id 惰性表、Worker、标签预算与聚合 |
|
|
40
|
+
| 数据接口 | 前端展示数据、后端编辑数据、导出回灌数据必须是能互相对上的几套口径 | `view` / `new` / `test` / `input` / `full` 五套格式,`sample-document.json` 作为标准样本,`BackendSyncDemo` 展示请求体 |
|
|
41
|
+
| 文档工程 | 只靠手写说明会漂移,必须有机器对账 | `check:docs` 检查成员、字段、options、事件、开关与链接;API 索引和自测页一起更新 |
|
|
436
42
|
|
|
437
|
-
|
|
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-能力)。
|
|
43
|
+
## 演进主线
|
|
443
44
|
|
|
444
|
-
|
|
45
|
+
### 2026-09-15 ~ 09-20:从 0 到 1
|
|
445
46
|
|
|
446
|
-
|
|
47
|
+
先定技术路线,再落组件雏形:两点一线、点线样式、通道与回线、拐点、鹰眼图、标签、热力图依次成形。这一阶段的用户问题大多来自 demo 的肉眼观察,例如 SVG 没画出来、颜色只改了描边、标签抖动、分组回线重合;结论逐步写进 `GisView.md` 与 `internals/15-01`。
|
|
447
48
|
|
|
448
|
-
-
|
|
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-整体性能)。
|
|
49
|
+
### 2026-09-20 ~ 10-14:补能力面,同时压性能
|
|
454
50
|
|
|
455
|
-
|
|
51
|
+
事件总线、历史、画质、批量更新、导出、装饰、筛选搜索、功能开关与宿主缩放逐步补齐;性能从样式快路径做到线路批次视口裁剪、百万级解析一趟完成和按 id 表的惰性化。10-10 的超长会话把「拐点 / 分组怎么给后端」定成可落地的接口演示,新增 `BackendSyncDemo` 与视口导出能力。
|
|
456
52
|
|
|
457
|
-
|
|
53
|
+
### 2026-10-19 ~ 10-23:API、文档与视觉收口
|
|
458
54
|
|
|
459
|
-
|
|
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修复放大缩小与移动时的短暂模糊)。
|
|
55
|
+
文档中心从静态索引扩成可搜索、可深链的阅读页;组件侧补扩展图形、鹰眼图交互、通道新增 / 合并 / 拆分、筛选后选中保留、标签层级与缩放字号等能力。大量工作从“新增功能”转向“减少重复入口、让文档和实现逐项对账”。
|
|
464
56
|
|
|
465
|
-
|
|
57
|
+
### 2026-10-26 ~ 10-29:选中、事件与增量接口
|
|
466
58
|
|
|
467
|
-
|
|
59
|
+
统一选中回调与载荷、补 `selectAt` / 中心点等窄接口、让删除与合并后的选中集和拐点键跟着要素走;同时继续优化通道批量更新、节点 id 索引和线路端点 / 通道端点框选。最新一轮把 AI 文档合并成一页,并给文档中心补了阅读导航。
|
|
468
60
|
|
|
469
|
-
|
|
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线片段着色管线专用化)。
|
|
61
|
+
## 精选问答
|
|
476
62
|
|
|
477
|
-
|
|
63
|
+
### 为什么不用 ECharts、G6 或 deck.gl?
|
|
478
64
|
|
|
479
|
-
|
|
65
|
+
十万级节点和二十万级线路只是底线,真正难的是线路拐点拖拽、通道多回线、节点 / 线路 / 通道混合选中以及完全自定义的视觉层。通用图库要么把几何封在内部,要么在大量 DOM / 图层对象上付出额外成本;WebGL2 自绘可以把点、线、通道骨架、标签、覆盖层拆成各自合适的批次,再用网格索引和增量更新控制每帧工作量。选型过程与实测见 [原理 18](internals/18-性能实测与WebGPU评估.md)。
|
|
480
66
|
|
|
481
|
-
|
|
482
|
-
- **文档改动**:`docs/manual/08-选中与拐点.md` 顶部新增「选中与取消选中速查」,把鼠标 / 键盘 / 接口入口、`selectTrigger: 'dblClick'` 的差异、读回方法与 `onSelectChange` 放在一处;同时修正正文与当前 demo / 自测注释里的过期 `select()` 名称。
|
|
483
|
-
- **核心文件**:`docs/manual/08-选中与拐点.md`、`docs/demos/StyleDemo.vue`、`docs/demos/gis-view-demo/useGisViewDemo.js`、`docs/steps/selftest-features.html`、`docs/AI对话汇总.md`、`docs/ai/06-会话索引与复查方法.md`。
|
|
484
|
-
- **验证**:`node docs/steps/gen-api-index.mjs --check`(生成索引最新)、`npm run check:docs`(264 个实例成员 / 250 个方法 / 250 个数据字段 / 96 个 options / 43 个事件 / 17 个功能开关全部命中)、`npx tsc --noEmit`、`npm run build`、`selftest-select.html` **69** 条通过 / 0 失败,以及 `git diff --check` 全部通过。公开 API 计数未变。
|
|
485
|
-
## 2026-10-26 增量(「修改.txt」:按坐标模拟单击选中 selectAt)
|
|
67
|
+
### 通道为什么必须两端绑节点?
|
|
486
68
|
|
|
487
|
-
|
|
69
|
+
通道表达的是两座场站之间的实体走廊,两端没有节点就没有稳定锚点,拐点、宽度、筛选和拖拽都会失去语义。因此通道用 `from` / `to` 绑节点:端点缺失、被筛选或隐藏时,整条通道和成员回线一起收起;拖动节点时骨架跟着走。框选还可以选 `channelEndpoints`,要求两端都在框内才命中。
|
|
488
70
|
|
|
489
|
-
|
|
490
|
-
- **行为**:`selectAt` 按真实单击相同的 `pick()` 顺序命中节点 / 线路并立即调用 `applySelection`;通道回线按 `channelSelectMode` 摊成一条 / 一组 / 整条通道。空白或聚合圆返回 `null`,不清空原选中;不等待 `selectTrigger: 'dblClick'`,也不派发 `onClick` / `onDblClick`,但 `onSelect` / `onSelectChange` 正常发,`cause` 为 `api`。
|
|
491
|
-
- **设计取舍**:这是接口入口,固定替换当前选中集;追加 / 取反仍用 `selectFeatures(refs, { mode: 'add' | 'toggle' })`。要清空仍用 `deselect()` / `selectFeatures(null)`。返回值为 `GisViewSelectPayload | null`。
|
|
492
|
-
- **核心文件**:`src/gis-view/create.js`、`src/gis-view/engine.js`、`src/gis-view/types.d.ts`、`docs/steps/selftest-select.html`、`docs/manual/08-选中与拐点.md`、`docs/manual/09-通道与多回线.md`、`docs/manual/16-实例方法总表.md`、`docs/manual/17-参数速查.md`、`docs/manual/18-逐方法示例.md`、`README.md`、`docs/GisView.md`、`docs/steps/README.md`、`docs/steps/selftest-docs.html`、`docs/steps/selftest-demos.html`、`docs/demos/api-index.js`(生成物)与本轮 aimd。
|
|
493
|
-
- **验证**:`node --check src/gis-view/create.js`、`node --check src/gis-view/engine.js`、`npx tsc --noEmit`、`node docs/steps/gen-api-index.mjs --check`、`npm run check:docs`(265 个实例成员 = 260 个方法 + 5 个属性 / 250 个数据字段 / 96 个 options / 43 个事件 / 17 个功能开关全部命中)、`selftest-select.html` **73** 条、`selftest-docs.html` **134** 条、`selftest-demos.html` **365** 条,三页共 **572** 条通过 / 0 失败;`npm run build` 与 `git diff --check` 全部通过。详细口径见 [06 的增量记录](ai/06-会话索引与复查方法.md#2026-10-26-增量修改txt按坐标模拟单击选中-selectat)。
|
|
494
|
-
## 2026-10-26 增量(「修改.txt」:选中接口的回调口径)
|
|
71
|
+
### 性能不是一次优化
|
|
495
72
|
|
|
496
|
-
|
|
73
|
+
现成做法是一条大路径:点网格缩候选、线段网格裁视口、样式规则按槽位就地更新、线路批次续写、长线换粗网格、按 id 的表只在需要时建、筛选和搜索进 Worker、标签按屏幕预算和格位避让、密集点自动聚合。每项优化都要同时验证命中顺序、可见性、选中与导出语义不变,基准与实测见 [手册 20](manual/20-性能与大数据.md) 和 [原理 18](internals/18-性能实测与WebGPU评估.md)。
|
|
497
74
|
|
|
498
|
-
|
|
499
|
-
- **事件口径**:`onSelectChange` 覆盖点击、框选、键盘清空与接口调用,并且只在选中集真的变化时发,适合统一同步面板;`onSelect` 覆盖点击 / 框选语义(真实点击 / Ctrl 多选 / 框选(含 `selectInBox()`)/ 空白清空)与模拟单击的 `selectAt()`。此前手册 17 把 `selectFeatures` 写成也会发 `onSelect`,与实际行为不一致,已改正。
|
|
500
|
-
- **两个方法的区别**:`selectAt(clientX, clientY)` 吃坐标、走与真实单击相同的 `pick()`,通道回线按 `channelSelectMode` 摊开,空白返回 `null` 且不动原选中,返回本次载荷;`selectFeatures(refs, options)` 吃 id / 下标 / 通道 / 分组引用,`mode` 支持 replace / add / toggle / remove,`null` / 空数组清空,返回实例本身。两者最终改的是同一份选中 state,样式与读数没有区别。
|
|
501
|
-
- **核心文件**:`docs/manual/04-事件与回调.md`、`docs/manual/08-选中与拐点.md`、`docs/manual/16-实例方法总表.md`、`docs/manual/17-参数速查.md`、`docs/manual/18-逐方法示例.md`、`src/gis-view/types.d.ts`、`docs/steps/selftest-select.html`、`docs/steps/README.md`、`docs/demos/api-index.js`(生成物)与本轮 aimd。
|
|
502
|
-
- **验证**:`selftest-select.html` 新增 2 条事件口径断言(73 → **75**),三页定向自测 **574** 条通过 / 0 失败(select 75 / docs 134 / demos 365);`npx tsc --noEmit`、`node docs/steps/gen-api-index.mjs --check`、`npm run check:docs`(265 个实例成员 / 250 个数据字段 / 96 个 options / 43 个事件 / 17 个功能开关全部命中)、`npm run build` 与 `git diff --check` 全部通过。运行时代码与公开成员计数未变。详细口径见 [06 的增量记录](ai/06-会话索引与复查方法.md#2026-10-26-增量修改txt选中接口的回调口径)。
|
|
75
|
+
### 拐点 / 分组跟后端怎么对接?
|
|
503
76
|
|
|
504
|
-
|
|
77
|
+
推荐“整份覆盖 + 组件按方法读最新几何”:节点位置用 `updatePoint` / `updatePoints`,线路拐点整份提交,分组骨架通过通道方法读写;不要在宿主里复制一份偏移后的回线坐标。`BackendSyncDemo`(`?demo=backend`)展示场站、拐点、分组的请求体、合并策略与保存时机,手册 15 给出导出与回灌口径。
|
|
505
78
|
|
|
506
|
-
|
|
79
|
+
### 文档怎么保证不漂移?
|
|
507
80
|
|
|
508
|
-
|
|
509
|
-
- **鼠标事件分组载荷**:通道回线最终命中时,拾取结果除 `group`(当前组)外补 `groups`(同一通道全部分组,按声明顺序,每项带 `groupIndex` / `lineIds` / `path` 与成员 / 拐点读数)。`pickAt()`、`hoverAt()` / `onHover`、`onPointerDown` / `onPointerUp`、`onClick` / `onDblClick`、`onContextMenu` 都是同一份;全部分组只在最终命中后构建,悬停扫描过程中不复制成员数组。
|
|
510
|
-
- **核心文件**:`src/gis-view/create.js`、`src/gis-view/engine.js`、`src/gis-view/types.d.ts`、`docs/steps/selftest-select.html`、`docs/manual/04-事件与回调.md`、`07-指针与要素编辑.md`、`08-选中与拐点.md`、`09-通道与多回线.md`、`16-实例方法总表.md`、`17-参数速查.md`、`18-逐方法示例.md`、`src/gis-view/README.md`、`docs/steps/README.md`、`docs/demos/api-index.js`(生成物)与本轮 aimd。
|
|
511
|
-
- **验证**:`node --check src/gis-view/create.js`、`node --check src/gis-view/engine.js`、`npx tsc --noEmit`;四页定向自测 **1250** 条通过 / 0 失败(select 79 / features 672 / docs 134 / demos 365);`node docs/steps/gen-api-index.mjs --check`、`npm run check:docs`(265 个实例成员 / 250 个数据字段 / 96 个 options / 43 个事件 / 17 个功能开关全部命中);`npm run build` 与 `git diff --check` 通过(后者仅有 CRLF 提示)。详细口径见 [06 的增量记录](ai/06-会话索引与复查方法.md#2026-10-26-增量修改txt统一选中回调与鼠标分组载荷)。
|
|
81
|
+
四层:源码与手册双向对账、options 默认值与事件名对账、文档中心文件 / 链接对账、浏览器自测回归。改公开成员或 options 后必须重建 API 索引;改 Markdown 要同步本页和 [维护索引](ai/06-会话索引与复查方法.md);每轮验证结果写进维护索引,避免“代码改了、文档还停在上一版”。
|
|
512
82
|
|
|
513
|
-
|
|
83
|
+
### 宿主里出现“圈代替 SVG / 标记不画 / initData 反复触发”怎么排查?
|
|
514
84
|
|
|
515
|
-
|
|
85
|
+
先分清组件与宿主:本组件只负责接收已经整理好的点线数据,`initData` 只应在挂载时调用一次;若宿主定时重建数据,先查宿主路由、监听与 `gisTools.js` / `buildNewData`。SVG 被画成圆通常是宿主传入了错误的 `symbol` 或 `pointRules`,直流标记则要确认装饰类型与数据映射。历史排查见维护索引的 10-12 旁支记录。
|
|
516
86
|
|
|
517
|
-
|
|
518
|
-
- **通道上下文**:两条选中回调现在带同一套上下文。选中集只涉及一条通道时顶层平铺 `channelId` / `channelIndex` / `channel` / `groupId` / `groupIndex` / `group` / `groups`;多条通道时只给 `channelContexts`,每项带同样字段与本次选中的 `lineIndexes` / `lineIds`。`items[]` 里的通道回线也补 `group` / `groups`。真实单击与 `selectAt()` 的当前组是命中的那一组;框选 / 按引用选中取选中集里第一条通道回线所在的组;`groups` 始终是整条通道的全部分组。
|
|
519
|
-
- **派发顺序**:旧顺序 `onSelectChange → onSelect → onClick` 改为固定 `onClick → onSelect → onSelectChange`。普通单击由组件层 `deferredSelection` 只延后选中回调、先同步选中镜像与标签,等 `onClick` 派发后再补 `onSelect` / `onSelectChange`;Ctrl / `multiSelect` 取反、框选与接口选中没有 `onClick`,顺序为 `onSelect → onSelectChange`;双击模式第二下为 `onClick → onSelect → onSelectChange(有变化时)→ onDblClick`。回调里读 `getSelectionData()` 仍是最新值。
|
|
520
|
-
- **channelIndex 修正**:分组通道此前在拾取 / 悬停 / `describe` / `listLines` / 级联 / `getLineChannel` 等六处取了分组状态序号 `state.order`,与「通道在 `channels` 声明数组里的下标」不是一回事;现统一改为 `state.channelIndex`,通道增删或分组重排后读数不再漂移。
|
|
521
|
-
- **核心文件**:`src/gis-view/engine.js`、`src/gis-view/create.js`、`src/gis-view/types.d.ts`、`docs/steps/selftest-select.html`、`docs/manual/04-事件与回调.md`、`07-指针与要素编辑.md`、`08-选中与拐点.md`、`09-通道与多回线.md`、`16-实例方法总表.md`、`17-参数速查.md`、`18-逐方法示例.md`、`src/gis-view/README.md`、`docs/steps/README.md`、`docs/demos/gis-view-demo/useGisViewDemo.js`、`docs/demos/api-index.js`(生成物)与本轮 aimd。
|
|
522
|
-
- **验证**:`node --check`(engine / create)、`npx tsc --noEmit`;`selftest-select.html` **83** 条、`selftest-features.html` **672** 条、`selftest-docs.html` **134** 条、`selftest-demos.html` **365** 条,四页共 **1254** 条通过 / 0 失败;`npm run build` 通过;`node docs/steps/gen-api-index.mjs --check` PASS(索引最新)、`npm run check:docs` 全 PASS(265 个实例成员 / 250 个数据字段 / 96 个 options / 43 个事件 / 17 个功能开关)、`git diff --check` 通过(仅有 CRLF 提示)。公开实例成员 / options / 数据字段 / 事件 / 功能开关计数均未变。
|
|
87
|
+
## 当前轮次:AI 文档合并与阅读导航(2026-10-29)
|
|
523
88
|
|
|
524
|
-
|
|
89
|
+
- **需求来源**:根目录 `修改.txt` 两条 —— ① 修改 AI 文档页,精简合并;② 继续优化文档页面的呈现效果。
|
|
90
|
+
- **AI 文档合并**:把原先 `ai/01` ~ `ai/05` 的来源、主题分类、精选问答与旁支记录压缩进本页;保留 `ai/06` 作为会话文件、历史增量与复查方法的维护索引。AI 文档从 7 个入口收敛为 2 个入口,主页面不再重复堆叠逐轮细节。
|
|
91
|
+
- **页面呈现**:文档中心新增当前位置面包屑、上一份 / 下一份文档导航与右栏小节计数;推荐阅读卡改为四列自适应布局,长文档切换后更容易判断当前位置和继续阅读方向。
|
|
92
|
+
- **核心文件**:`docs/AI对话汇总.md`、`docs/ai/06-会话索引与复查方法.md`、`docs/index.html`、`docs/steps/selftest-docs.html`、根 `README.md`。
|
|
525
93
|
|
|
526
|
-
|
|
94
|
+
## 继续读
|
|
527
95
|
|
|
528
|
-
-
|
|
529
|
-
-
|
|
530
|
-
-
|
|
531
|
-
-
|
|
532
|
-
- **验证**:`node --check`(engine / create)、`npx tsc --noEmit`、`npm run build` 通过;五页定向自测 **1438** 条通过 / 0 失败(select 84 / features 672 / docs 134 / demos 365 / perf 183);`node docs/steps/gen-api-index.mjs --check` PASS(索引最新)、`npm run check:docs` 全 PASS(265 个实例成员 / 250 个数据字段 / 96 个 options / 43 个事件 / 17 个功能开关)、`git diff --check` 通过(仅有 CRLF 提示)。公开实例成员与配置计数未变。
|
|
96
|
+
- [维护索引与复查方法](ai/06-会话索引与复查方法.md):39 个会话文件、历史轮次索引、当前增量与命令。
|
|
97
|
+
- [实现原理逐轮记录](internals/15-01-逐轮记录-新增与修复.md):某一轮为什么这样做、改在哪个引擎路径。
|
|
98
|
+
- [GisView 手册](GisView.md):当前可用的配置、方法与事件,不按历史演进组织。
|
|
99
|
+
- [从 0 到完整的实现](从0到完整的实现.md):按代码顺序重新走一遍渲染、交互与数据流。
|