gis-view-webgl2 0.1.11 → 0.1.13

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 (54) hide show
  1. package/README.md +0 -24
  2. package/dist/gis-view.css +1 -1
  3. package/dist/index.cjs +1 -1
  4. package/dist/index.d.ts +524 -33
  5. package/dist/index.js +1 -1
  6. package/docs/AI/345/257/271/350/257/235/346/261/207/346/200/273.md +156 -8
  7. package/docs/GisView.md +6 -6
  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 +157 -7
  9. package/docs/demos/BackgroundDemo.vue +600 -0
  10. package/docs/demos/ChannelDemo.vue +145 -3
  11. package/docs/demos/StyleDemo.vue +280 -69
  12. package/docs/demos/api-index.js +35 -19
  13. package/docs/demos/demos.js +26 -18
  14. package/docs/demos/gis-view-demo/demo.css +76 -0
  15. package/docs/demos/gis-view-demo/panels/StylePanels.vue +24 -8
  16. package/docs/demos/gis-view-demo/panels/ViewPanels.vue +33 -3
  17. package/docs/demos/gis-view-demo/useGisViewDemo.js +236 -22
  18. package/docs/format/02-/350/212/202/347/202/271/344/270/216/347/272/277/350/267/257.md +1 -1
  19. 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 +3 -3
  20. package/docs/from0/06-/344/273/216/346/225/260/346/215/256/345/210/260/345/256/236/344/276/213-/350/247/243/346/236/220/345/261/202.md +13 -11
  21. package/docs/from0/15-/351/231/204/345/275/225-/345/270/270/351/207/217/351/200/237/346/237/245/344/270/216/350/270/251/345/235/221/346/270/205/345/215/225.md +1 -1
  22. package/docs/index.html +2 -2
  23. package/docs/internals/10-/350/247/204/345/210/231/346/235/241/344/273/266/344/270/216/347/212/266/346/200/201/346/240/267/345/274/217.md +3 -3
  24. package/docs/internals/13-/351/271/260/347/234/274/345/233/276.md +1 -1
  25. package/docs/internals/14-/350/203/214/346/231/257/345/261/202.md +1 -0
  26. package/docs/internals/15-03-/351/200/220/350/275/256/350/256/260/345/275/225-/346/200/247/350/203/275/344/270/216/344/277/256/345/244/215-/344/270/213.md +199 -0
  27. package/docs/internals/17-/350/260/203/350/257/225/344/270/216/346/211/251/345/261/225/345/273/272/350/256/256.md +1 -1
  28. package/docs/internals/18-/346/200/247/350/203/275/345/256/236/346/265/213/344/270/216WebGPU/350/257/204/344/274/260.md +32 -0
  29. package/docs/manual/02-/345/235/220/346/240/207/344/270/216/346/225/260/346/215/256.md +1 -1
  30. package/docs/manual/03-/351/205/215/347/275/256/351/241/271.md +217 -26
  31. 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 +2 -2
  32. package/docs/manual/08-/351/200/211/344/270/255/344/270/216/346/213/220/347/202/271.md +37 -4
  33. package/docs/manual/09-/351/200/232/351/201/223/344/270/216/345/244/232/345/233/236/347/272/277.md +58 -1
  34. package/docs/manual/11-/346/240/267/345/274/217/344/270/216/350/247/204/345/210/231.md +59 -8
  35. package/docs/manual/12-/346/240/207/347/255/276/344/270/216/350/243/205/351/245/260.md +1 -1
  36. package/docs/manual/13-/345/212/250/346/225/210/344/270/216/345/233/276/345/205/203.md +220 -2
  37. package/docs/manual/14-/350/247/206/345/233/276/344/270/216/347/255/233/351/200/211.md +77 -16
  38. package/docs/manual/15-/345/257/274/345/207/272/344/270/216/351/233/206/346/210/220.md +30 -17
  39. package/docs/manual/16-/345/256/236/344/276/213/346/226/271/346/263/225/346/200/273/350/241/250.md +11 -4
  40. package/docs/manual/17-/345/217/202/346/225/260/351/200/237/346/237/245.md +17 -8
  41. package/docs/manual/18-/351/200/220/346/226/271/346/263/225/347/244/272/344/276/213.md +128 -4
  42. 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 +2 -2
  43. package/docs/manual/20-/346/200/247/350/203/275/344/270/216/345/244/247/346/225/260/346/215/256.md +13 -1
  44. 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 +4 -1
  45. package/docs/steps/index.html +1 -1
  46. package/docs/steps/selftest-demo.html +2 -2
  47. package/docs/steps/selftest-demos.html +626 -11
  48. package/docs/steps/selftest-docs.html +8 -4
  49. package/docs/steps/selftest-features.html +1428 -2
  50. package/docs/steps/selftest-perf.html +296 -25
  51. package/docs/steps/selftest-scale.html +61 -3
  52. package/docs/steps/selftest-select.html +303 -1
  53. package/docs/steps/step-06-style.js +3 -2
  54. package/package.json +2 -2
@@ -24,6 +24,9 @@
24
24
  **拖也拖不动、点了没反应,是不是坏了?**
25
25
  不是 —— 功能开关**缺省全关**(见「功能开关」),什么都不写时组件只剩画布与数据。查看类要手动打开:详细配置写 `interactive: true`(平移 / 缩放 / 右键回调)与 `clickable: true`(悬停 / 选中),或一步写 `features: 'view'`;改数据的交互各有自己的开关 —— `boxSelect: true` / `draggable: true` / `waypointEditable: true` / `copy: {…}` / `merge: {…}` / `remove: {…}` / `features: { channelDraft: true }`,`features: 'edit'` 一次全开。标签 / 提示 / 鹰眼图不在开关表里:配了 `label` / `lineLabel` / `tooltip` / `minimap` 就等于打开。
26
26
 
27
+ **想先铺网架、再对背景,或者只把网架压淡怎么办?**
28
+ 网架展示用两个顶层配置:`networkVisible: false` 真正跳过节点、线路、通道、装饰、动画与标签(拾取和框选也停止命中),但背景、网格与自定义 WebGL 层照常显示;`networkOpacity` 在逐要素透明度之后再乘一层,适合保留交互、只把网架压淡来对底图。背景图片用 `image.corners` 摆四角(旋转后重算四角即可),GeoJSON 用 `geoJsonStyle.bounds` 独立缩放 / 平移,并用 `geoJsonStyle.rotation` 绕目标矩形中心顺时针旋转,二者都不改原始数据。对底图直接用内置编辑器:`view.beginBackgroundEdit({ aspectLocked: true, rotation: true, fitView: true })` 会自动锁住网架交互(滚轮缩放与 `fitView` 仍可用),拖动手柄即可移动、缩放和旋转;样式用同一调用的 `style` 或后续 `updateBackgroundEdit({ style })` 改,`getBackgroundEdit()` 读当前状态,`endBackgroundEdit()` 退出并恢复进入前的 `backgroundEditing`。完整演示见 `?demo=background`:锁比例时四个角点,解锁后八个缩放手柄,勾选“允许旋转”才出现第九个旋转点。
29
+
27
30
  **怎么一次关闭 / 打开组件的所有功能?**
28
31
  `features: false` 或 `features: 'static'` 会把全部 17 个功能开关关掉(`'static'` 连已配置的标签 / 提示 / 鹰眼图也一起关;`false` 与缺省全关同一口径);`features: true` 或 `features: 'edit'` 全部打开。运行时用 `view.setFeatures(...)` 换、`view.getFeatures()` 读 17 项有效值,完整清单见「功能开关」一节的表。
29
32
 
@@ -93,7 +96,7 @@
93
96
  图案是 CSS 像素量屏幕距离,线很粗时应把图案调长(`[10, 6]` 在 3px 线宽下很清楚,在 12px 线宽下就显得密);另外图案槽位上限 16 组,超过的线会退回实线。
94
97
 
95
98
  **线路怎么设线形(solid / dashed / dotted / dashdot)?**
96
- 最短的写法是给线路数据加一个字段:`lineType: 'dashed'`(点线 `'dotted'`、点划线 `'dashdot'`、实线 `'solid'`;别名 `none` / `line` / `dash` / `dot` / `dash-dot` 都认)。要自定义图案就写 `dash: [12, 4, 2, 4]`(CSS 像素)或 `dash: { type: 'dashed', offset: 6 }`,相位也能单独写 `dashOffset`。运行中改单条用 `updateLine(id, { lineType })`(批量 `patchLines`)、改全局用 `updateLineStyle({ lineType, dashOffset })`;规则 `lineRules` 与全局 `lineStyle` 都只是「要素自己没写」时的回落,优先级别记反了:**状态样式 > 要素自身 > 规则 > `lineStyle` > 实线**,图案长度、相位与槽位上限这些注意点见「线型」一节。
99
+ 最短的写法是给线路数据加一个字段:`lineType: 'dashed'`(点线 `'dotted'`、点划线 `'dashdot'`、实线 `'solid'`;别名 `none` / `line` / `dash` / `dot` / `dash-dot` 都认)。要自定义图案就写 `dash: [12, 4, 2, 4]`(CSS 像素)或 `dash: { type: 'dashed', offset: 6 }`,相位也能单独写 `dashOffset`。运行中改单条用 `updateLine(id, { lineType })`(批量 `patchLines`)、改全局用 `updateLineStyle({ lineType, dashOffset })`;优先级是 **状态样式 > `override` 规则 > 要素自身 > 普通规则 > `lineStyle` > 实线**。普通规则只补「要素自己没写」的线型,`override: true` 的规则才会盖住逐条字段;图案长度、相位与槽位上限这些注意点见「线型」一节。
97
100
 
98
101
  **标签太多盖住画面?**
99
102
 
@@ -450,7 +450,7 @@
450
450
  { goal: '把每段线展开成四边形状,在顶点着色器里按法线撑开线宽。', accept: '线宽不随缩放变糊,拐点处不断裂,颜色与宽度能逐条覆盖。', source: 'src/gis-view/line.js + shaders.js' },
451
451
  { goal: '把世界坐标经相机矩阵投到屏幕,并实现 fitView / 滚轮缩放 / 拖动平移。', accept: '滚轮以指针位置为锚点、拖动位移跟手,fitView 能完整包住数据范围。', source: 'src/gis-view/engine.js · 相机段' },
452
452
  { goal: '用屏幕距离做拾取,把 hover / click / dblClick / pointer / contextMenu 接成一套回调。', accept: '每个回调都带 type / index / item;点空白不误命中,拖动不会被当成点击。', source: 'src/gis-view/utils.js + engine.js' },
453
- { goal: '把业务字段翻译成样式,再按“点自身 > 状态 > 规则 > 全局”的优先级落地。', accept: '现场改规则只重算样式、不写业务数据;选中与悬停状态仍然优先。', source: 'src/gis-view/rules.js + condition.js' },
453
+ { goal: '把业务字段翻译成样式,再按“全局 > 普通规则 > 点自身 > override 规则 > 状态”的优先级落地。', accept: '现场改规则只重算样式、不写业务数据;override 规则可压过逐点样式,选中与悬停状态仍然优先。', source: 'src/gis-view/rules.js + condition.js' },
454
454
  { goal: '先算通道公共骨架,再按车道生成平行回线,并把两次点击变成可取消的草稿。', accept: '点两个节点能落成一条通道;回线间距稳定;取消 / 落地 / 连续新增都有回调。', source: 'src/gis-view/channel.js + engine.js' },
455
455
  { goal: '用 DOM 覆盖层承载标签和提示框,按视口、缩放级别与避让结果决定显示谁。', accept: '平移缩放后标签仍贴住要素;超过上限会隐藏或避让,悬停提示不阻塞画布。', source: 'src/gis-view/overlay.js' },
456
456
  { goal: '用两层小画布画全景与视口框,并把点击、拖动映射回主图相机。', accept: '主图缩放时视口框准确变化;点小图或拖框都能定位主图;销毁后不残留帧任务。', source: 'src/gis-view/minimap.js' },
@@ -696,7 +696,7 @@
696
696
  await wait(200)
697
697
  const minBox = [...document.querySelectorAll('.demo-panel-inline .demo-slider')].find(item => item.textContent.includes('最小比例'))?.querySelector('input')
698
698
  const maxBox = [...document.querySelectorAll('.demo-panel-inline .demo-slider')].find(item => item.textContent.includes('最大比例'))?.querySelector('input')
699
- check('面板上有「最小比例 / 最大比例」两个输入框,初值就是组件缺省的两条线', Boolean(minBox) && Boolean(maxBox) && Number(minBox.value) === 0.002 && Number(maxBox.value) === 20000, `${minBox?.value ?? '没找到'} / ${maxBox?.value ?? '没找到'}`)
699
+ check('面板上有「最小比例 / 最大比例」两个输入框,初值就是组件缺省的两条线', Boolean(minBox) && Boolean(maxBox) && Number(minBox.value) === 0.002 && Number(maxBox.value) === 1000000000, `${minBox?.value ?? '没找到'} / ${maxBox?.value ?? '没找到'}`)
700
700
  if (overlayView && minBox && maxBox) {
701
701
  const atLimit = (scale, limit) => Math.abs(scale - limit) < limit * 1e-6
702
702
  const limitsOf = () => overlayView.getOptions()
@@ -714,7 +714,7 @@
714
714
  check('喂一个远高于上限的比例:setCamera 被夹在上限上', atLimit(overlayView.getCamera().scale, high), `上限 ${high} · 相机 ${overlayView.getCamera().scale}`)
715
715
  popoverButton('解除限制')?.click()
716
716
  await wait(200)
717
- check('「解除限制」回到组件缺省的两条线', Number(minBox.value) === 0.002 && Number(maxBox.value) === 20000, `${minBox.value} ~ ${maxBox.value}`)
717
+ check('「解除限制」回到组件缺省的两条线', Number(minBox.value) === 0.002 && Number(maxBox.value) === 1000000000, `${minBox.value} ~ ${maxBox.value}`)
718
718
  }
719
719
  const liveRow = [...document.querySelectorAll('.demo-panel-inline label')].find(item => item.textContent.includes('线路实时跟随'))
720
720
  const liveBox = liveRow?.querySelector('input')