gis-view-webgl2 0.1.1 → 0.1.2

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.
Files changed (34) hide show
  1. package/README.md +13 -1
  2. package/dist/gis-view.css +1 -1
  3. package/dist/index.cjs +1 -1
  4. package/dist/index.d.ts +255 -3
  5. package/dist/index.js +1 -1
  6. package/docs/AI/345/257/271/350/257/235/346/261/207/346/200/273.md +65 -0
  7. package/docs/GisView.md +1 -1
  8. 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 +58 -0
  9. package/docs/demos/ChannelDemo.vue +566 -6
  10. package/docs/demos/CopyMergeDemo.vue +57 -6
  11. package/docs/demos/LabelDemo.vue +67 -11
  12. package/docs/demos/api-index.js +13 -3
  13. package/docs/format/03-/346/213/220/347/202/271/350/243/205/351/245/260/344/270/216/346/240/267/345/274/217.md +4 -2
  14. package/docs/format/04-/351/200/232/351/201/223/344/270/216/346/240/207/347/255/276.md +5 -4
  15. package/docs/manual/02-/345/235/220/346/240/207/344/270/216/346/225/260/346/215/256.md +7 -2
  16. package/docs/manual/03-/351/205/215/347/275/256/351/241/271.md +21 -5
  17. 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 +100 -0
  18. 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 +38 -0
  19. package/docs/manual/08-/351/200/211/344/270/255/344/270/216/346/213/220/347/202/271.md +5 -5
  20. package/docs/manual/09-/351/200/232/351/201/223/344/270/216/345/244/232/345/233/236/347/272/277.md +58 -8
  21. 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 +27 -2
  22. package/docs/manual/12-/346/240/207/347/255/276/344/270/216/350/243/205/351/245/260.md +45 -1
  23. package/docs/manual/16-/345/256/236/344/276/213/346/226/271/346/263/225/346/200/273/350/241/250.md +7 -1
  24. package/docs/manual/17-/345/217/202/346/225/260/351/200/237/346/237/245.md +8 -0
  25. package/docs/manual/18-/351/200/220/346/226/271/346/263/225/347/244/272/344/276/213.md +28 -0
  26. package/docs/manual/20-/346/200/247/350/203/275/344/270/216/345/244/247/346/225/260/346/215/256.md +3 -0
  27. 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 +1 -1
  28. package/docs/steps/README.md +8 -6
  29. package/docs/steps/selftest-demos.html +194 -29
  30. package/docs/steps/selftest-docs.html +7 -6
  31. package/docs/steps/selftest-features.html +213 -1
  32. package/docs/steps/selftest-labels.html +249 -4
  33. package/docs//346/216/245/345/217/243/345/215/217/350/256/256.md +17 -11
  34. package/package.json +2 -2
package/dist/index.d.ts CHANGED
@@ -1208,6 +1208,11 @@ export interface GisViewChannelGroup {
1208
1208
  lineIds: Array<string | number>
1209
1209
  /** 这一组自己的骨架拐点(两端锚定时只写中间拐点):新拆分出来的分组不带拐点,就是一条直线 */
1210
1210
  path?: GisViewCoordinate[]
1211
+ /**
1212
+ * 刚性拐点偏移:键是分组骨架顶点序号(含首尾端点,从 0 起,只认中间拐点),值是这一组所有成员回线在该顶点的世界坐标增量。
1213
+ * `channelWaypointDragMode: 'vertex'` 拖出来的结果写在这里;不写或空对象就是普通平行骨架
1214
+ */
1215
+ waypointOffsets?: Record<string, GisViewCoordinate>
1211
1216
  }
1212
1217
 
1213
1218
  /**
@@ -1219,6 +1224,12 @@ export interface GisViewChannel {
1219
1224
  id?: string | number
1220
1225
  /** 通道名:仅作业务标识,组件不渲染 */
1221
1226
  name?: string
1227
+ /**
1228
+ * 是否显示这条通道:false 时整条通道与成员回线一起隐藏,数据、分组、拐点与编辑状态都保留,
1229
+ * 改回 true(或 `showFeatures('channel', ref)`)立即恢复;缺省 true。
1230
+ * 端点节点 `visible: false` 时通道也会整条隐藏,节点恢复后自动回来
1231
+ */
1232
+ visible?: boolean
1222
1233
  /** 通道内的线路 id,顺序即回线顺序(沿骨架左法线方向) */
1223
1234
  lineIds: Array<string | number>
1224
1235
  /**
@@ -1300,6 +1311,8 @@ export interface GisViewChannelInfo {
1300
1311
  to?: string | number
1301
1312
  /** 两端是否都落在节点上:锚定的通道会跟着节点拖动走 */
1302
1313
  anchored: boolean
1314
+ /** 分组刚性拐点偏移:与 groups[].waypointOffsets 同一份口径,没有偏移时是空对象 */
1315
+ waypointOffsets: Record<string, [number, number]>
1303
1316
  /** 整条通道相邻回线的中心间距(世界单位),单回线通道为 0;分组之后各组共用这一套间距 */
1304
1317
  spacing: number
1305
1318
  }
@@ -1352,6 +1365,8 @@ export interface GisViewChannelGroupInfo {
1352
1365
  skeleton: Array<[number, number]>
1353
1366
  /** 骨架换算回声明用的中间拐点(两端锚定时不含首尾节点),可以直接写回 groups[].path */
1354
1367
  path: Array<[number, number]>
1368
+ /** 刚性拐点偏移:与 groups[].waypointOffsets 同一份口径,可以直接写回声明 */
1369
+ waypointOffsets: Record<string, [number, number]>
1355
1370
  }
1356
1371
 
1357
1372
  /** getChannelGroupWaypoints 里的一条成员回线:偏移之后的折线与拐点(与图上画的一致) */
@@ -1386,6 +1401,8 @@ export interface GisViewChannelGroupWaypoints {
1386
1401
  skeleton: Array<[number, number]>
1387
1402
  /** 整组共用的中间拐点:给后端的 channel.group.path 就是这一份 */
1388
1403
  path: Array<[number, number]>
1404
+ /** 刚性拐点偏移:需要把非平行拖动结果一起回传时写回 groups[].waypointOffsets */
1405
+ waypointOffsets: Record<string, [number, number]>
1389
1406
  /** 组里每条回线偏移后的折线与拐点(同组同步之后「其他线路的拐点」读它) */
1390
1407
  lines: GisViewChannelGroupLineWaypoints[]
1391
1408
  }
@@ -1826,6 +1843,102 @@ export interface GisViewMovedPoint {
1826
1843
  item: GisViewPoint
1827
1844
  }
1828
1845
 
1846
+ /** 可整批隐藏 / 显示的要素类型 */
1847
+ export type GisViewVisibilityKind = 'point' | 'line' | 'channel'
1848
+
1849
+ /** 隐藏 / 显示的引用:单个 id / 下标 / `{ id }` / `{ index }`,一批,或当前选中集 `'selection'` */
1850
+ export type GisViewVisibilityRefs = GisViewFeatureRef | 'selection' | Array<GisViewFeatureRef | 'selection'>
1851
+
1852
+ /** 隐藏 / 显示时没认出来的引用 */
1853
+ export interface GisViewVisibilitySkip {
1854
+ ref: unknown
1855
+ reason: string
1856
+ }
1857
+
1858
+ /** setFeatureVisible / hideFeatures / showFeatures 的返回:indexes 与 items 按数据顺序一一对应 */
1859
+ export interface GisViewSetVisibilityOutcome {
1860
+ ok: boolean
1861
+ reason: string | null
1862
+ kind: GisViewVisibilityKind
1863
+ visible: boolean
1864
+ /** 实际改到的下标(去重、按传入顺序) */
1865
+ indexes: number[]
1866
+ /** 对应的 id;要素没 id 时退回下标 */
1867
+ ids: Array<string | number>
1868
+ items: Array<GisViewPoint | GisViewLine | GisViewChannel>
1869
+ skipped: GisViewVisibilitySkip[]
1870
+ }
1871
+
1872
+ /** 通道变化里的一组:成员与骨架都是当次读数的可比较快照 */
1873
+ export interface GisViewChangedChannelGroup {
1874
+ id: string | number | null
1875
+ lineIds: string[]
1876
+ path: GisViewCoordinate[] | null
1877
+ }
1878
+
1879
+ /** 通道变化原因 */
1880
+ export type GisViewChangedChannelReason = 'groups' | 'members' | 'waypoints' | 'endpoints' | 'visibility' | 'fields'
1881
+
1882
+ /** getChangedChannels 的查询选项 */
1883
+ export interface GisViewChangedChannelOptions {
1884
+ /** 只返回带这些原因的变化(空数组 = 不返回任何变化);不传 = 全部原因 */
1885
+ reasons?: GisViewChangedChannelReason[]
1886
+ /**
1887
+ * 忽略分组结构的新增 / 删除 / 重排:不报 `groups`,也不把整组增删算成拐点变化;
1888
+ * 基准与当前都存在、且分组 `path` 真变过的,仍报 `waypoints`
1889
+ */
1890
+ ignoreGroups?: boolean
1891
+ }
1892
+
1893
+ /** getChangedChannels 的一项:相对上次通道对账发生了哪些变化 */
1894
+ export interface GisViewChangedChannel {
1895
+ index: number
1896
+ id: string | number | null
1897
+ item: GisViewChannel
1898
+ /** 当前分组读数(没写 groups 的通道按「一整组」折算) */
1899
+ groups: GisViewChangedChannelGroup[]
1900
+ groupsChanged: boolean
1901
+ waypointsChanged: boolean
1902
+ membersChanged: boolean
1903
+ endpointsChanged: boolean
1904
+ visibilityChanged: boolean
1905
+ fieldsChanged: boolean
1906
+ /** 除 id / lineIds / groups / path / from / to / visible 之外变过的字段名 */
1907
+ fields: string[]
1908
+ /** 变化原因:groups / members / waypoints / endpoints / visibility / fields */
1909
+ reasons: GisViewChangedChannelReason[]
1910
+ }
1911
+
1912
+ /** 线路变化原因:path(path / start / end)、端点、可见性、其余字段 */
1913
+ export type GisViewChangedLineReason = 'path' | 'endpoints' | 'visibility' | 'fields'
1914
+
1915
+ /** getChangedLines 的查询选项 */
1916
+ export interface GisViewChangedLineOptions {
1917
+ /** 只返回带这些原因的变化(空数组 = 不返回任何变化);不传 = 全部原因 */
1918
+ reasons?: GisViewChangedLineReason[]
1919
+ }
1920
+
1921
+ /** getChangedLines 的一项:相对上次线路对账发生了哪些变化 */
1922
+ export interface GisViewChangedLine {
1923
+ index: number
1924
+ id: string | number | null
1925
+ item: GisViewLine
1926
+ /** 当前声明的 path(没有 path 时为 null);线条几何还会看 start / end */
1927
+ path: GisViewCoordinate[] | null
1928
+ start: GisViewCoordinate | null
1929
+ end: GisViewCoordinate | null
1930
+ from: string | number | null
1931
+ to: string | number | null
1932
+ visible: boolean
1933
+ pathChanged: boolean
1934
+ endpointsChanged: boolean
1935
+ visibilityChanged: boolean
1936
+ fieldsChanged: boolean
1937
+ /** 除 id / start / end / path / from / to / visible 之外变过的字段名 */
1938
+ fields: string[]
1939
+ reasons: GisViewChangedLineReason[]
1940
+ }
1941
+
1829
1942
  /**
1830
1943
  * addChannels 的返回:results 与传入顺序一一对应(失败的条目也在里面,按各自的 reason 读),
1831
1944
  * count 是成功落地的条数;lineIds / channelIds 只列成功那几条的(顺序与 results 里成功的一致)。
@@ -3269,6 +3382,71 @@ export interface GisViewMergeSelectedOptions {
3269
3382
  originalEvent?: Event | null
3270
3383
  }
3271
3384
 
3385
+ /**
3386
+ * splitPoint 的一份节点定义:节点字段可直接写在顶层(id / x / y / name / style…),也可以放进 item;
3387
+ * lines / channels / channelFrom / channelTo 是会从节点字段里摘出来的分配指令,不会写进节点数据。
3388
+ */
3389
+ export interface GisViewSplitPointPart extends Partial<GisViewPoint> {
3390
+ /** 新节点的字段(与顶层的节点字段合并,顶层优先) */
3391
+ item?: Partial<GisViewPoint>
3392
+ /** 分到这一份的线路(id / 下标 / { id } / { index }):不写时连在原节点上的线路跟第一份 */
3393
+ lines?: GisViewFeatureRef | GisViewFeatureRef[]
3394
+ /** 两端都分到这一份的受影响通道;把同一条通道写进两份时按 from / to 各去一份 */
3395
+ channels?: GisViewFeatureRef | GisViewFeatureRef[]
3396
+ /** 只把通道的 from 端分到这一份 */
3397
+ channelFrom?: GisViewFeatureRef | GisViewFeatureRef[]
3398
+ /** 只把通道的 to 端分到这一份 */
3399
+ channelTo?: GisViewFeatureRef | GisViewFeatureRef[]
3400
+ }
3401
+
3402
+ /** splitPoint 的选项 */
3403
+ export interface GisViewSplitPointOptions {
3404
+ /** 第一份是否沿用来源节点的 id(缺省 true);false 时也给第一份生成 `${来源 id}-split-1` */
3405
+ keepSourceId?: boolean
3406
+ /** 这一步历史的标签,缺省「拆分节点」 */
3407
+ label?: string
3408
+ }
3409
+
3410
+ /** 拆分时没认出来的线路 / 通道引用 */
3411
+ export interface GisViewSplitPointSkip {
3412
+ ref: unknown
3413
+ reason: string
3414
+ }
3415
+
3416
+ /**
3417
+ * 一次拆分的完整变更集:removedPoint 是拆分前的来源节点,points 是拆分后的全部节点,
3418
+ * lines / channels 是仍存在且受影响的最终数据,removedLines / removedChannels 是拆分前被删掉的数据。
3419
+ * 可直接作为后端事务的输入。
3420
+ */
3421
+ export interface GisViewSplitPointChangeSet {
3422
+ removedPoint: GisViewPoint
3423
+ points: GisViewPoint[]
3424
+ lines: GisViewLine[]
3425
+ removedLines: GisViewLine[]
3426
+ channels: GisViewChannel[]
3427
+ removedChannels: GisViewChannel[]
3428
+ }
3429
+
3430
+ /** splitPoint 的返回:ok 为 false 时 reason 说明原因,其余数组为空、changes 为 null */
3431
+ export interface GisViewSplitPointOutcome {
3432
+ ok: boolean
3433
+ reason: string | null
3434
+ source: { index: number; id: string | number | null; item: GisViewPoint } | null
3435
+ /** 拆分后的节点,第一份在原下标,其余按 indexes 追加 */
3436
+ items: GisViewPoint[]
3437
+ indexes: number[]
3438
+ pointIds: Array<string | number>
3439
+ linesChanged: number
3440
+ removedLines: number
3441
+ removedLineIds: Array<string | number>
3442
+ removedLineIndexes: number[]
3443
+ channelsChanged: number
3444
+ removedChannels: number
3445
+ removedChannelIds: Array<string | number>
3446
+ skipped: { lines: GisViewSplitPointSkip[]; channels: GisViewSplitPointSkip[] }
3447
+ changes: GisViewSplitPointChangeSet | null
3448
+ }
3449
+
3272
3450
  /** 定位一个节点:id、数组下标,或带 id / index 的对象(`{ id: 'a' }` / `{ index: 2 }`) */
3273
3451
  export type GisViewPointRef = string | number | { id: string | number } | { index: number }
3274
3452
 
@@ -3347,6 +3525,7 @@ export type GisViewDataChangeType =
3347
3525
  | 'copyPoint'
3348
3526
  | 'copyPoints'
3349
3527
  | 'mergePoints'
3528
+ | 'splitPoint'
3350
3529
  | 'waypoint'
3351
3530
  | 'addChannel'
3352
3531
  | 'addChannels'
@@ -3706,6 +3885,8 @@ export interface GisViewItemLabel {
3706
3885
  style?: Record<string, string>
3707
3886
  /** 线路标签是否与线路方向平行(点的标签忽略这一项) */
3708
3887
  parallel?: boolean
3888
+ /** 这一条是否参与避让:false 时即使全局开启 labelOptimize / avoidOverlap 也始终按候选落点画出;缺省跟随全局 */
3889
+ avoidOverlap?: boolean
3709
3890
  /**
3710
3891
  * 这一条撞上别的标签之后怎么避让:`shift`(默认)主动换锚点 / 沿线挪,`hide` 直接不显示。
3711
3892
  * 只在顶层 `labelOptimize: true` 且这条的 `avoidOverlap` 不为 false 时生效;只和底图区域文字重叠时仍按软冲突照画。
@@ -3715,6 +3896,10 @@ export interface GisViewItemLabel {
3715
3896
  visibility?: GisViewLabelVisibility
3716
3897
  /** 整条不画(等于 visibility: 'hidden');false 表示撤回隐藏覆盖 */
3717
3898
  hidden?: boolean
3899
+ /** 这一条标签能不能拖:逐条覆盖 options.label / lineLabel 里的同名开关 */
3900
+ draggable?: boolean
3901
+ /** 这一条标签能不能点选:逐条覆盖 options.label / lineLabel 里的同名开关 */
3902
+ editable?: boolean
3718
3903
  /** 这条标签是运行时加的(addLabel),导出时带上它便于整份回显 */
3719
3904
  added?: boolean
3720
3905
  className?: string
@@ -3954,8 +4139,10 @@ export interface GisViewLabelPatch {
3954
4139
  export interface GisViewLabelInfo {
3955
4140
  /** 这一条要素上的哪一条标签 */
3956
4141
  id: string
3957
- /** 当下画出来的文本(DOM 里的那一份:模板 / 函数算完之后的结果) */
4142
+ /** 当下画出来的内容(DOM 里的那一份:模板 / 函数算完之后的结果;html 时保留标记本身) */
3958
4143
  content: string
4144
+ /** 这一条当下是否按 HTML 渲染(html: true 才有子节点;false 永远是纯文本) */
4145
+ html: boolean
3959
4146
  /** 当下生效的锚点(点八向 / 线沿线位置),算不出来时是 null */
3960
4147
  position: GisViewLabelPosition | GisViewLineLabelPosition | null
3961
4148
  className: string | null
@@ -4120,12 +4307,12 @@ export interface GisViewLabelListItem {
4120
4307
  id: string
4121
4308
  /** 这一条是哪来的:'config' 配置里定义的 / 'data' 数据里写的 / 'runtime' 运行时加的(与事件载荷里的 GisViewLabelInfo.source 同一口径) */
4122
4309
  source: 'config' | 'data' | 'runtime'
4123
- /** 这一条声明里的内容(模板 / 函数原样给出),没写是 null */
4310
+ /** 这一条当下生效的内容(运行时覆盖优先,模板 / 函数原样给出),没写是 null */
4124
4311
  content: GisViewLabelContent | GisViewLineLabelContent | null
4125
4312
  html: boolean
4126
4313
  className: string | null
4127
4314
  position: GisViewLabelPosition | GisViewLineLabelPosition | null
4128
- /** 声明里的偏移(像素),没写是 [0, 0] */
4315
+ /** 当下生效的偏移(像素):运行时拖出来的优先,否则用声明里的;都没有是 [0, 0] */
4129
4316
  offset: [number, number]
4130
4317
  style: Record<string, string> | null
4131
4318
  /** 线路标签:这一条是否与线路平行;节点标签恒为 false */
@@ -5020,6 +5207,13 @@ export type GisViewChannelSelectMode =
5020
5207
  /** 整条通道(所有分组的回线)一起选 */
5021
5208
  | 'channel'
5022
5209
 
5210
+ /** 分组拐点拖动模式:普通线路永远只动自己,这里只影响通道里的一组回线 */
5211
+ export type GisViewChannelWaypointDragMode =
5212
+ /** 缺省:改共用骨架,组内回线按平行偏移重算;拐角处相邻顶点可能随 miter 微调 */
5213
+ | 'parallel'
5214
+ /** 只把同组同一 pathIndex 的拐点按相同世界增量平移,其他拐点(含相邻顶点)保持不动 */
5215
+ | 'vertex'
5216
+
5023
5217
  /**
5024
5218
  * 框选 / Ctrl 多选允许收哪几类要素:节点、独立线路、通道回线。
5025
5219
  * 通道回线只归 channel 这一档管;通道之外的普通线路归 line,两者可以任意组合。
@@ -5786,6 +5980,14 @@ export interface GisViewOptions {
5786
5980
  * 只管「画不画、画哪几条」:`visibility` / `when` / 拖拽 / 编辑 / 样式与动画都不受影响
5787
5981
  */
5788
5982
  labelOptimize?: boolean
5983
+ /**
5984
+ * 纯文本标签的渲染方式,缺省 `auto`:
5985
+ * - `auto`:强制显示档下,视口里的纯文本标签达到 1024 条时自动改画到单张 Canvas;
5986
+ * 需要 DOM 的标签(`html: true`、函数返回元素、可拖拽 / 可编辑)仍逐条建节点。
5987
+ * - `dom`:始终逐条建 `.gis-view__label`,保持旧行为。
5988
+ * 画布档不改变标签内容、锚点与显隐,只减少高密度场景的 DOM 数量。
5989
+ */
5990
+ labelRender?: 'auto' | 'dom'
5789
5991
  /**
5790
5992
  * 标签的运行时状态(`getLabelStates()` 的那一份:拖过的偏移、改过的内容与样式、运行时加的标签、隐藏覆盖):
5791
5993
  * 创建 / `updateOptions` 时喂回来就回显,与 `setLabelStates(states)` 同一条路。
@@ -5928,6 +6130,12 @@ export interface GisViewOptions {
5928
6130
  * Ctrl + 点击在 group / channel 下是整批取反,切换走 updateOptions 不用重排场景
5929
6131
  */
5930
6132
  channelSelectMode?: GisViewChannelSelectMode
6133
+ /**
6134
+ * 分组拐点拖动模式:'parallel'(缺省)沿用共用骨架 + 平行偏移,拐角相邻顶点可能随 miter 微调;
6135
+ * 'vertex' 只移动当前分组同一 pathIndex 的拐点(组内所有回线按相同世界增量),其他拐点保持不动。
6136
+ * 普通线路不受影响;切换走 updateOptions({ channelWaypointDragMode }),下一次拖动生效
6137
+ */
6138
+ channelWaypointDragMode?: GisViewChannelWaypointDragMode
5931
6139
 
5932
6140
  /**
5933
6141
  * 快捷键:框选、多选、加点、复制、粘贴、取消、删除、适应视图都可以在这里改
@@ -7188,6 +7396,14 @@ export interface GisViewInstance {
7188
7396
  * 并不了返回 ok: false 并另发一条 `phase: 'merge', ok: false` 的事件
7189
7397
  */
7190
7398
  mergePoints(source: GisViewPointRef, target: GisViewPointRef, options?: { originalEvent?: Event | null; item?: GisViewPoint }): GisViewMergeOutcome
7399
+ /**
7400
+ * 把一个节点拆成多份(mergePoints 的逆操作):第一份复用原下标与 id,其余追加到 points 末尾。
7401
+ * 每份可直接写节点字段或放进 item;lines 分配线路(不写时连在原节点上的线路跟第一份),
7402
+ * channels / channelFrom / channelTo 分配受影响通道的端点。没显式分配的通道跟随它第一条被分配过的成员线路。
7403
+ * 拆分后自环 / 零长度线路与两端相同的通道删掉;整次调用只记一条历史、只发一条 `splitPoint` 数据变更。
7404
+ * 返回 `{ ok, items, indexes, pointIds, linesChanged, removedLines, channelsChanged, removedChannels, changes, skipped }`
7405
+ */
7406
+ splitPoint(source: GisViewPointRef, parts: GisViewSplitPointPart[], options?: GisViewSplitPointOptions): GisViewSplitPointOutcome
7191
7407
  /**
7192
7408
  * 框选 / 多选之后一步把选中的节点并到一个目标上(接口调用):不指定 target 就自动挑「绑定线路最多」的那一个
7193
7409
  * (一样多取画得大的、再一样取下标小的);来源默认是除目标之外的选中节点,也可以直接用 options.sources 给定,
@@ -7518,6 +7734,40 @@ export interface GisViewInstance {
7518
7734
  * (写法与 removePoints 一致:id / 下标 / { id } / { index });空数组无操作,返回实例本身。
7519
7735
  */
7520
7736
  clearMovedPoints(refs?: GisViewFeatureRef | GisViewFeatureRef[]): GisViewInstance
7737
+ /**
7738
+ * 相对上一次对账,成员 / 分组 / 拐点 / 端点 / 可见性或其余声明字段变过的通道。
7739
+ * 新加通道只补账不报变化,删掉的通道从账本清掉;整份换通道数据(updateData / updateOptions / applyChannels)
7740
+ * 之后以新数据为基准。返回项带 groups / 各 changed 标记 / fields / reasons。
7741
+ * options.reasons 只返回指定原因;options.ignoreGroups 忽略分组增删,只比较已有分组的拐点。
7742
+ */
7743
+ getChangedChannels(options?: GisViewChangedChannelOptions): GisViewChangedChannel[]
7744
+ /**
7745
+ * 通道变化对账:不传 / 传 null 全部对账,传一个或一批引用只对账这些(写法与 removePoints 一致);
7746
+ * 返回实例本身,认不出来的引用跳过并报一句提醒。
7747
+ */
7748
+ clearChangedChannels(refs?: GisViewFeatureRef | GisViewFeatureRef[]): GisViewInstance
7749
+ /**
7750
+ * 相对上一次对账,path / start / end、from / to、可见性或其余声明字段变过的线路。
7751
+ * 新加线路只补账不报变化,删掉的线路从账本同步清掉;整份换线路后以新数据为基准。
7752
+ * 通道里的回线只比较自己的声明;通道骨架变化由 getChangedChannels 负责。
7753
+ * options.reasons 只返回指定原因。
7754
+ */
7755
+ getChangedLines(options?: GisViewChangedLineOptions): GisViewChangedLine[]
7756
+ /**
7757
+ * 线路变化对账:不传 / 传 null 全部对账,传一个或一批引用只对账这些(写法与 removePoints 一致);
7758
+ * 返回实例本身,认不出来的引用跳过并报一句提醒。
7759
+ */
7760
+ clearChangedLines(refs?: GisViewFeatureRef | GisViewFeatureRef[]): GisViewInstance
7761
+ /**
7762
+ * 统一隐藏 / 显示节点、线路或通道:只改数据里的 visible,不删要素,分组 / 拐点 / 编辑状态都保留。
7763
+ * refs 收单个或一批(id / 下标 / { id } / { index }),也认 'selection';整次调用一条历史、一条 batch 数据变更。
7764
+ * 返回 `{ ok, kind, visible, indexes, ids, items, skipped }`
7765
+ */
7766
+ setFeatureVisible(kind: GisViewVisibilityKind, refs: GisViewVisibilityRefs, visible: boolean): GisViewSetVisibilityOutcome
7767
+ /** `setFeatureVisible(kind, refs, false)` 的快捷写法 */
7768
+ hideFeatures(kind: GisViewVisibilityKind, refs: GisViewVisibilityRefs): GisViewSetVisibilityOutcome
7769
+ /** `setFeatureVisible(kind, refs, true)` 的快捷写法(隐藏后原样恢复) */
7770
+ showFeatures(kind: GisViewVisibilityKind, refs: GisViewVisibilityRefs): GisViewSetVisibilityOutcome
7521
7771
  /**
7522
7772
  * 某个下标的节点当前在不在图上:被筛选 / visible: false 隐藏掉的不算,
7523
7773
  * 初始化发散渲染还没排到的那一部分也不算。
@@ -7776,6 +8026,8 @@ export interface GisViewEngineOptions {
7776
8026
  * 切换走 setOptions / updateOptions 不用重排场景
7777
8027
  */
7778
8028
  channelSelectMode?: GisViewChannelSelectMode
8029
+ /** 分组拐点拖动模式:'parallel'(缺省)/ 'vertex',见 GisViewOptions.channelWaypointDragMode */
8030
+ channelWaypointDragMode?: GisViewChannelWaypointDragMode
7779
8031
 
7780
8032
  /** 快捷键:动作 -> 写法(框选、多选、加点、复制、粘贴、取消、删除、适应视图),没写的沿用默认值 */
7781
8033
  shortcuts?: GisViewShortcuts