gis-view-webgl2 0.1.8 → 0.1.10
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 +11 -5
- package/dist/gis-view.css +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +275 -18
- package/dist/index.js +1 -1
- package/docs/AI/345/257/271/350/257/235/346/261/207/346/200/273.md +78 -543
- 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 +116 -526
- package/docs/demos/BasicDemo.vue +142 -25
- package/docs/demos/BatchAddDemo.vue +127 -1
- package/docs/demos/ChannelDemo.vue +61 -0
- package/docs/demos/CopyMergeDemo.vue +125 -36
- package/docs/demos/EventDemo.vue +12 -4
- package/docs/demos/api-index.js +28 -17
- package/docs/demos/gis-view-demo/panels/StylePanels.vue +14 -2
- package/docs/demos/gis-view-demo/useGisViewDemo.js +29 -5
- 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/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/03-/351/205/215/347/275/256/351/241/271.md +84 -16
- package/docs/manual/04-/344/272/213/344/273/266/344/270/216/345/233/236/350/260/203.md +2 -1
- 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/07-/346/214/207/351/222/210/344/270/216/350/246/201/347/264/240/347/274/226/350/276/221.md +48 -11
- package/docs/manual/08-/351/200/211/344/270/255/344/270/216/346/213/220/347/202/271.md +8 -4
- package/docs/manual/09-/351/200/232/351/201/223/344/270/216/345/244/232/345/233/236/347/272/277.md +60 -0
- package/docs/manual/12-/346/240/207/347/255/276/344/270/216/350/243/205/351/245/260.md +26 -3
- package/docs/manual/14-/350/247/206/345/233/276/344/270/216/347/255/233/351/200/211.md +53 -6
- 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 +14 -10
- package/docs/manual/17-/345/217/202/346/225/260/351/200/237/346/237/245.md +15 -8
- package/docs/manual/18-/351/200/220/346/226/271/346/263/225/347/244/272/344/276/213.md +57 -3
- package/docs/manual/20-/346/200/247/350/203/275/344/270/216/345/244/247/346/225/260/346/215/256.md +3 -1
- 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 +5 -2
- package/docs/steps/README.md +200 -121
- package/docs/steps/index.html +216 -0
- package/docs/steps/selftest-demos.html +209 -31
- package/docs/steps/selftest-docs.html +17 -6
- package/docs/steps/selftest-features.html +317 -3
- package/docs/steps/selftest-labels.html +81 -0
- package/docs/steps/selftest-perf.html +31 -3
- package/docs/steps/selftest-scale.html +33 -0
- package/docs/steps/selftest-select.html +51 -1
- 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
package/README.md
CHANGED
|
@@ -2,10 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
不依赖任何图形库的 WebGL2 矢量视图:点、线、背景层(图片 / GeoJSON)与首屏落位(`initialView`)都通过 `createGisView(dom, options)` 创建,宽高默认跟随传入的 DOM 容器;跨项目复用的视图级逻辑用 `plugins` 挂载。
|
|
4
4
|
|
|
5
|
-
本轮按 `修改.txt`
|
|
5
|
+
本轮按 `修改.txt` 两条收口节点间距口径:`fitSpacing` 的 `minDistance` / `maxDistance` 改为二选一,同时写时只启用 `maxDistance`,不再同时保留两个相反方向的约束;`getPointSpacing()` 改为按当前相机比例返回 CSS 像素,与 `fitSpacing` 同一套屏幕口径,可直接拿来配置最小 / 最大中心距,除以 `getScale()` 才回到世界单位。demo 样式面板增加距离模式选择,返回值、类型与相关手册同步。公开实例成员与 options 计数不变。
|
|
6
|
+
|
|
7
|
+
上一轮按 `修改.txt` 三条补齐直接连接筛选、回显比例与节点距离读数:`getDirectConnections(pointIds, options?)` 固定返回 `{ channels, lines }`,第二段可写 `'channel'` / `'line'` / `'both'` 或 `{ kind }`,只查一列时另一列为空数组;新增 `getPointSpacing()` 读当前可见节点的最近正距离、最远距离与两端节点(当轮为世界坐标单位,当前已改为 CSS 像素);`fitSpacing.maxDistance` 用最远节点对的屏幕距离压住稀疏数据的适应比例,和 `minDistance` 冲突时以最大距优先(当前已改为二选一)。导出回显要一比一还原时保存 `getCamera()` 并交给 `initialView`(`exportData({ format: 'full' })` 已自带 `view.camera`),只改数据不换实例则用 `updateData()` / `importData()` 保持当前相机。公开实例成员增至 **274**(**269** 个方法 + **5** 个属性),options / 数据字段 / 事件 / 功能开关保持 **100 / 266 / 44 / 17**。
|
|
8
|
+
|
|
9
|
+
本轮按 `修改.txt` 四条补齐批量编辑、通道简略与合并可控项:场站 / 线路用 `patchPoints` / `patchLines` / `removePoints` / `removeLines` 一次处理多条,通道与分组把 `updateChannel` / `removeChannel` / `splitChannelGroups` / `removeChannelGroup` 等放进 `batch`,整批只记一步历史、只发一条 `batch` 数据变更(`BatchAddDemo` 已给增删改与分组配方)。新增 `channelSimplify`:`true` 缺省阈值 4,也可写 `{ enabled, threshold, style }`;分组回线数严格大于阈值时只画第一条可见回线,代表线可自定义样式,没有 `groups` 的通道按一组处理,数据 / 分组读数 / 导出不变(`ChannelDemo`)。合并时线路与通道端点继续改写、自环清理与 `mergeInfo` 自动解除保留;节点业务字段缺省全部取保留端,只有 `merge.maxKeys`(数组或逗号字符串,缺省空表)列出的有限数字字段取双方最高,`['vn_kv', 'value']` 即只保留这两项的较高值。`splitPoint` 的 `options.select` 缺省 `false`,解除 / 拆分后不选中结果、保留无关选中,显式 `true` 才选中全部结果;`CopyMergeDemo` 增加 maxKeys 与 select 开关。公开实例成员 / 方法 / 属性保持 **272 / 267 / 5**,options / 数据字段 / 事件 / 功能开关为 **100 / 266 / 44 / 17**。
|
|
10
|
+
|
|
11
|
+
本轮按 `问题.txt` 五条补齐视图与标签能力:新增 `getCenter()` / `setCenter(center)`,可独立读写视图中心、保留当前比例;`selectionOnTop` 下选中线路与通道抬到普通节点之上,但两端节点仍压在线路上。节点 / 线路标签支持 `zIndex`、节点标签可 `followNodeZIndex` 跟随节点样式链,并能在更高层节点图标压住时整条让位;`zoomScale` 让字号可按地图比例缩放或保持屏幕固定。性能侧继续收口标签遮挡索引、缩放字号缓存与抬层批次,`updatePoint` / `patchPoints` 改层级或尺寸时会正确补排受影响的标签。公开实例成员增至 **269**(**264** 个方法 + **5** 个属性),options / 数据字段 / 事件 / 功能开关为 **96 / 261 / 43 / 17**。
|
|
6
12
|
|
|
7
13
|
- 渲染层:原生 WebGL2(GLSL ES 3.00 + 实例化绘制),没有任何运行时依赖,也不需要 Vue。
|
|
8
|
-
- 交互层:拖拽平移、滚轮缩放、按关键字搜索并定位(节点 / 线路 / 通道)、点击 / 双击拾取、点拖拽(相连线路同步移动)、Shift 拖动框选与 Ctrl 点击累加多选(多选后整组同步移动;`selectionKinds` 可限定只选节点 / 线路 /
|
|
14
|
+
- 交互层:拖拽平移、滚轮缩放、按关键字搜索并定位(节点 / 线路 / 通道)、点击 / 双击拾取、点拖拽(相连线路同步移动)、Shift 拖动框选与 Ctrl 点击累加多选(多选后整组同步移动;`selectionKinds` 可限定只选节点 / 线路 / 通道或任意组合,也可要求线路 / 通道两端节点都被框住才命中)、复制只带选中要素、节点合并可指定保留端并改写最终信息与样式、线路拐点编辑与通道多回线,全部走配置与回调 —— **这些能力缺省全关**,要哪一项显式打开(`features` 预设 / 开关表,或 `interactive: true` / `clickable: true` / `draggable: true` 这类详细配置,见 `docs/GisView.md` 的「功能开关」)。
|
|
9
15
|
- 数据层:按属性筛选(点被过滤时绑在它身上的线路与通道一起消失,大数据量走 Web Worker)、按属性批量配色 / 换符号、节点标签(内容、贴边方式、HTML 定制、数量与显隐可配,十万级数据下有候选上限兜底)与点 / 线 / 通道的悬浮提示,筛选、规则与标签共用同一套条件语言;节点标签与线路标签分开配置、都支持 `auto`(智能隐藏)/ `always` / `hidden` 三种显隐策略,线路标签的位置沿线走(比例 / 百分比 / 绝对距离)、候选还会按屏幕小格摊开(通道里的并行回线不会把扫描名额占光),线路上还能按同样的位置写法挂图片或 SVG 装饰(`decorations`,通道回线可以用 `linePropsByMember` 逐条配;装饰缺省 `auto` —— 线路上没有拐点时按比例跟随(挂在中点就一直保持中点),有了拐点就跟拐点一样钉在线路上(位置不再沿路径挪动,线路几何一变就把锚点投回线身最近的点),写 `anchor: 'follow'` 强制一直跟随、`anchor: 'fixed'` + `at: [x, y]` 则固定在写死的坐标上;装饰与线路标签都能写 `parallel: true` 跟着线路方向转,通道里的每条回线也能各显示各的标签)。节点也能用 `points[].decorations` 挂图片 / SVG:`offset` 或 `distance` + `direction` 是相对节点的屏幕像素偏移(缩放时保持像素距离),`anchor: 'fixed'` / `at` 是固定世界坐标,`connector` 可从节点中心画连接线。平移 / 缩放 / 拖拽期间两类标签都能各自配 `hideOnInteract`(`true` 或者「标签数超过 N 才收」),收起时只切一个 class、不写标签 DOM,停手自动补齐;线路标签另有 `followOnInteract`(默认开)—— 没收起时拖节点 / 拖拐点期间跟着线路走,关掉则停手后统一归位;通道回线的提示范围用 `tooltip.channelScope` 在整条通道 / 所属分组 / 单条回线之间切。
|
|
10
16
|
- 大数据与导出:`denseMode` 缺省 `'auto'`,按可见节点数(4000)、屏幕密度(每百万 CSS 像素 3000)或数据总量(5 万)自动进入密集档,标签切到避让 / 截断、线路动点与节点涟漪暂停,退出留 22% 回滞并恢复用户原来的 `effects`,当前状态看 `getStats().dense`;导出统一收口到 `exportData({ scope, parts, format })`,`scope` 选全量 / 视口 / 选中,`parts` 选场站 / 线路 / 通道 / 拐点。需要自己画 WebGL 标记或特效时,用 `webglLayers` / `addWebGLLayer()` 或直接取 `view.gl`。
|
|
11
17
|
- 动态装饰器:`beginDecorationDraft` 用 `target` 选择只挂线路、只挂节点或两类同时开启(`both` 时按屏幕距离取更近者、等距优先节点,最近目标不可用时回退另一类);线路侧保留单线 / 分组 / 整条通道三种范围与平行方向,节点侧可切相对偏移 / 固定坐标 / 鼠标位置并画连接线。触发半径默认收紧到 14px,离开目标立即收掉;`maxPerLine` / `maxPerPoint` 分别限制每线 / 每点数量,`allowedLines` / `allowedChannels` / `allowedGroups` / `allowedPoints` 限定白名单,超限或不在白名单的目标静默不触发,提交前还会按最新数据复核;`allowDuplicate: false` 时按 `duplicateDistance` 检测同一位置,`duplicateStrategy` 可选自动避让或直接拒绝。空白处松手不发事件,只有命中的左键松开才发 `ready`;确认走 `commitDecorationDraft` 一次批量写入(线路与节点同一批、一条历史),取消走 `cancelDecorationDraft`,数据与历史在确认前不动。演示页可从左侧图标拖到线路,也可分别开启节点 / 线路装饰并现场调吸附方式、白名单与重复策略。
|
|
@@ -31,7 +37,7 @@ npm run dev
|
|
|
31
37
|
|
|
32
38
|
源码本身就是 JS:`src/gis-view/*.js` 逐文件带中文注释,对外类型集中在 `src/gis-view/types.d.ts`(构建时复制成 `dist/index.d.ts`),不用先编译就能直接读。想照着从零写一遍看 [从 0 到完整的实现](docs/从0到完整的实现.md),里面有一份可以照抄的 mini 实现与验收清单。
|
|
33
39
|
|
|
34
|
-
想知道组件到底有哪些属性和方法:[GisView 文档](docs/GisView.md) 的「实例方法」一节把
|
|
40
|
+
想知道组件到底有哪些属性和方法:[GisView 文档](docs/GisView.md) 的「实例方法」一节把 274 个实例成员(方法 + `el` / `canvas` / `gl` / `cameraAnimating` 这类属性)与 100 个 `options` 键逐个列全;demo 的「视图 · 交互」页签里有同一份清单(`?demo=full`,可搜索、点一条就对当前视图求值);`node docs/steps/check-doc-coverage.mjs` 负责 10 项双向对账,改完源码或文档先跑 `node docs/steps/gen-api-index.mjs` 重生成 demo 读的那一份(三类查询的口径见 [docs/steps/README.md](docs/steps/README.md) 的「怎么查全部属性与方法」)。
|
|
35
41
|
|
|
36
42
|
## 构建 npm 包
|
|
37
43
|
|
|
@@ -242,11 +248,11 @@ view.zoomTo(12).zoomToBounds({ minX: 116, minY: 39, maxX: 117, maxY: 40 }, 60)
|
|
|
242
248
|
|
|
243
249
|
- [GisView 文档](docs/GisView.md):用法与参考全在这一份 —— 安装引入、最小示例、坐标与相机、数据字段、options 全表、线型 `lineType` / `dash`、条件语言、光标 `cursorStyle`、交互、标签与装饰、筛选搜索、通道与多回线、鹰眼图、实例方法与回调全表、导出图片、标准数据文档、渲染后端(WebGPU 开关)与大数据开关,末尾附常见问题与类型索引
|
|
244
250
|
- [从 0 到完整的实现](docs/从0到完整的实现.md):按「先画一个点、再画一条线」的顺序把整库重写一遍,含 WebGL2 原理、代码与踩坑记录
|
|
245
|
-
- [从 0 手写 gis-view:分步 demo](docs/steps/README.md)
|
|
251
|
+
- [从 0 手写 gis-view:分步 demo](docs/steps/README.md):十三个递增的文件(`docs/steps/step-01-canvas.js` ~ `step-13-engineering.js`)。第 1 ~ 9 步手写画布、点线、相机、拾取、规则、通道、覆盖层与鹰眼图,第 10 步换成真实 `createGisView`,第 11 ~ 13 步补首屏 / 动作判读 / 画质与历史;README 给出四段学习路线、每步验收、搭建思路和按瓶颈排序的优化方向,`docs/steps/index.html` 可切步骤对照读数、事件日志与源码入口。基础 demo(`?demo=basic`)已把顶层 `center` / `scale`、`getScale()` / `setScale()` 与 `idleTimeout` / `onIdle` / `idle` 放到面板上直接试。
|
|
246
252
|
- [GisView 实现原理](docs/GisView实现原理.md):只讲「怎么实现」—— 文件职责与数据流、从 `createGisView` 到第一帧、渲染管线与着色器、相机与像素、拾取、通道骨架与增量更新、虚线图案表、光标状态机、规则与状态样式、覆盖层、筛选与搜索 Worker、鹰眼图、性能改动与还能怎么优化(第 16 章现在是 22 条方案,逐条标收益 / 成本;10 万点 / 1 万线的底数表之后另有两张改前 / 改后的实测表,16.13 / 16.17 / 16.18 是上一轮落地的,16.14 / 16.15 / 16.16 与 16.20 里的搜索这一件是这一轮落地的),第 18 章是各轮优化的完整实测与 WebGPU 取舍
|
|
247
253
|
- [数据格式](docs/数据格式.md):喂进来的节点 / 线路 / 通道 / 标签 / 拐点分组逐字段怎么填、条件语法与运算符表、五套导出格式(`view` / `new` / `test` / `input` / `full` —— 后一种是「接收 == 导出」的标准数据文档)与常用选项、事件载荷速查、仓库里的示例数据怎么用 —— 自建面板与后端约定数据时先看这一份
|
|
248
254
|
- [sample-document 字段详解](docs/sample-document字段详解.md):仓库根目录 `sample-document.json` 的逐字段讲解 —— 先回答 `labelStates`(标签的运行时状态)、`channels[].groups[].path`(分组骨架的中间拐点)、`lines[].path` 的拐点(整条折线,首尾是端点)三个高频问题,再按文件顺序把八列(`format` / `version` / `points` / `lines` / `channels` / `labelStates` / `view` / `filter`)逐条讲一遍,末尾附 154 个字段路径的自动对账;图形化的交互版见 [docs/guide/sample-document.html](docs/guide/sample-document.html),所有 markdown 都能在文档中心 [docs/index.html](docs/index.html) 里读
|
|
249
|
-
- [AI 对话汇总](docs/AI对话汇总.md)
|
|
255
|
+
- [AI 对话汇总](docs/AI对话汇总.md):一页读完本机跟组件有关的 39 个 AI 会话(194 轮):关键决策、精选问答、演进时间线与当前增量;逐会话文件、历史轮次索引和复查命令收在 [维护索引](docs/ai/06-会话索引与复查方法.md),原先拆开的 01 ~ 05 已合并进主汇总
|
|
250
256
|
|
|
251
257
|
## 说明
|
|
252
258
|
|
package/dist/gis-view.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.gis-view{box-sizing:border-box;--gis-view-cursor-grab:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'><path d='M12 2 16 6 13 6 13 11 18 11 18 8 22 12 18 16 18 13 13 13 13 18 16 18 12 22 8 18 11 18 11 13 6 13 6 16 2 12 6 8 6 11 11 11 11 6 8 6Z' fill='%23ffffff' stroke='%23ffffff' stroke-width='3' stroke-linejoin='round'/><path d='M12 2 16 6 13 6 13 11 18 11 18 8 22 12 18 16 18 13 13 13 13 18 16 18 12 22 8 18 11 18 11 13 6 13 6 16 2 12 6 8 6 11 11 11 11 6 8 6Z' fill='%2325313f'/></svg>") 12 12, grab;--gis-view-cursor-grabbing:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'><path d='M12 2 16 6 13 6 13 11 18 11 18 8 22 12 18 16 18 13 13 13 13 18 16 18 12 22 8 18 11 18 11 13 6 13 6 16 2 12 6 8 6 11 11 11 11 6 8 6Z' fill='%23ffffff' stroke='%23ffffff' stroke-width='3' stroke-linejoin='round'/><path d='M12 2 16 6 13 6 13 11 18 11 18 8 22 12 18 16 18 13 13 13 13 18 16 18 12 22 8 18 11 18 11 13 6 13 6 16 2 12 6 8 6 11 11 11 11 6 8 6Z' fill='%232f6fd0'/></svg>") 12 12, grabbing;--gis-view-cursor-move:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'><path d='M12 2 16 6 13 6 13 11 18 11 18 8 22 12 18 16 18 13 13 13 13 18 16 18 12 22 8 18 11 18 11 13 6 13 6 16 2 12 6 8 6 11 11 11 11 6 8 6Z' fill='%23ffffff' stroke='%23ffffff' stroke-width='3' stroke-linejoin='round'/><path d='M12 2 16 6 13 6 13 11 18 11 18 8 22 12 18 16 18 13 13 13 13 18 16 18 12 22 8 18 11 18 11 13 6 13 6 16 2 12 6 8 6 11 11 11 11 6 8 6Z' fill='%23c2761b'/></svg>") 12 12, move;--gis-view-cursor-box:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'><path d='M12 3.5V9M12 15v5.5M3.5 12H9M15 12h5.5' fill='none' stroke='%23ffffff' stroke-width='4.6' stroke-linecap='round'/><circle cx='12' cy='12' r='2.8' fill='%23ffffff'/><path d='M12 3.5V9M12 15v5.5M3.5 12H9M15 12h5.5' fill='none' stroke='%2325313f' stroke-width='1.8' stroke-linecap='round'/><circle cx='12' cy='12' r='1.4' fill='%2325313f'/></svg>") 12 12, crosshair;--gis-view-cursor-copy:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'><g fill='none' stroke-linejoin='round'><rect x='4' y='4' width='11' height='11' rx='2' stroke='%23ffffff' stroke-width='5.4'/><rect x='9' y='9' width='11' height='11' rx='2' stroke='%23ffffff' stroke-width='5.4'/><rect x='4' y='4' width='11' height='11' rx='2' stroke='%2325313f' stroke-width='2'/><rect x='9' y='9' width='11' height='11' rx='2' stroke='%2325313f' stroke-width='2'/></g></svg>") 12 12, copy;--gis-view-cursor-point:pointer;--gis-view-cursor-line:pointer;--gis-view-cursor-channel:pointer;--gis-view-cursor-waypoint:pointer;outline:none;width:100%;height:100%;position:relative;overflow:hidden}.gis-view__canvas{touch-action:none;width:100%;height:100%;display:block}.gis-view__graphics{pointer-events:none;z-index:1;isolation:isolate;position:absolute;inset:0;overflow:hidden}.gis-view__graphic{pointer-events:none;will-change:transform, left, top, width, height;position:absolute;top:0;left:0}.gis-view__graphic-image{pointer-events:none;-webkit-user-select:none;user-select:none}.gis-view__labels{pointer-events:none;z-index:2;contain:layout style paint;isolation:isolate;transform-origin:0 0;will-change:transform;position:absolute;inset:0;overflow:hidden}.gis-view__label-layer{position:absolute;inset:0}.gis-view__label-layer--hidden{visibility:hidden}.gis-view__label-canvas{pointer-events:none;position:absolute;top:0;left:0}.gis-view__label{white-space:nowrap;color:#1f3550;background:#ffffffe0;border-radius:4px;padding:1px 6px;font-size:12px;line-height:16px;position:absolute;top:0;left:0}.gis-view__cluster-label{color:#fff;letter-spacing:.2px;pointer-events:none;-webkit-user-select:none;user-select:none;text-shadow:0 1px 1px #102a5059;white-space:nowrap;justify-content:center;align-items:center;min-width:16px;height:16px;font-size:12px;font-weight:600;line-height:16px;display:flex;position:absolute;top:0;left:0}.gis-view__label--draggable,.gis-view__label--editable{pointer-events:auto;touch-action:none}.gis-view__label--draggable{cursor:grab}.gis-view__label--editable{cursor:pointer}.gis-view__label--dragging{cursor:grabbing;z-index:
|
|
1
|
+
.gis-view{box-sizing:border-box;--gis-view-cursor-grab:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'><path d='M12 2 16 6 13 6 13 11 18 11 18 8 22 12 18 16 18 13 13 13 13 18 16 18 12 22 8 18 11 18 11 13 6 13 6 16 2 12 6 8 6 11 11 11 11 6 8 6Z' fill='%23ffffff' stroke='%23ffffff' stroke-width='3' stroke-linejoin='round'/><path d='M12 2 16 6 13 6 13 11 18 11 18 8 22 12 18 16 18 13 13 13 13 18 16 18 12 22 8 18 11 18 11 13 6 13 6 16 2 12 6 8 6 11 11 11 11 6 8 6Z' fill='%2325313f'/></svg>") 12 12, grab;--gis-view-cursor-grabbing:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'><path d='M12 2 16 6 13 6 13 11 18 11 18 8 22 12 18 16 18 13 13 13 13 18 16 18 12 22 8 18 11 18 11 13 6 13 6 16 2 12 6 8 6 11 11 11 11 6 8 6Z' fill='%23ffffff' stroke='%23ffffff' stroke-width='3' stroke-linejoin='round'/><path d='M12 2 16 6 13 6 13 11 18 11 18 8 22 12 18 16 18 13 13 13 13 18 16 18 12 22 8 18 11 18 11 13 6 13 6 16 2 12 6 8 6 11 11 11 11 6 8 6Z' fill='%232f6fd0'/></svg>") 12 12, grabbing;--gis-view-cursor-move:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'><path d='M12 2 16 6 13 6 13 11 18 11 18 8 22 12 18 16 18 13 13 13 13 18 16 18 12 22 8 18 11 18 11 13 6 13 6 16 2 12 6 8 6 11 11 11 11 6 8 6Z' fill='%23ffffff' stroke='%23ffffff' stroke-width='3' stroke-linejoin='round'/><path d='M12 2 16 6 13 6 13 11 18 11 18 8 22 12 18 16 18 13 13 13 13 18 16 18 12 22 8 18 11 18 11 13 6 13 6 16 2 12 6 8 6 11 11 11 11 6 8 6Z' fill='%23c2761b'/></svg>") 12 12, move;--gis-view-cursor-box:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'><path d='M12 3.5V9M12 15v5.5M3.5 12H9M15 12h5.5' fill='none' stroke='%23ffffff' stroke-width='4.6' stroke-linecap='round'/><circle cx='12' cy='12' r='2.8' fill='%23ffffff'/><path d='M12 3.5V9M12 15v5.5M3.5 12H9M15 12h5.5' fill='none' stroke='%2325313f' stroke-width='1.8' stroke-linecap='round'/><circle cx='12' cy='12' r='1.4' fill='%2325313f'/></svg>") 12 12, crosshair;--gis-view-cursor-copy:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'><g fill='none' stroke-linejoin='round'><rect x='4' y='4' width='11' height='11' rx='2' stroke='%23ffffff' stroke-width='5.4'/><rect x='9' y='9' width='11' height='11' rx='2' stroke='%23ffffff' stroke-width='5.4'/><rect x='4' y='4' width='11' height='11' rx='2' stroke='%2325313f' stroke-width='2'/><rect x='9' y='9' width='11' height='11' rx='2' stroke='%2325313f' stroke-width='2'/></g></svg>") 12 12, copy;--gis-view-cursor-point:pointer;--gis-view-cursor-line:pointer;--gis-view-cursor-channel:pointer;--gis-view-cursor-waypoint:pointer;outline:none;width:100%;height:100%;position:relative;overflow:hidden}.gis-view__canvas{touch-action:none;width:100%;height:100%;display:block}.gis-view__graphics{pointer-events:none;z-index:1;isolation:isolate;position:absolute;inset:0;overflow:hidden}.gis-view__graphic{pointer-events:none;will-change:transform, left, top, width, height;position:absolute;top:0;left:0}.gis-view__graphic-image{pointer-events:none;-webkit-user-select:none;user-select:none}.gis-view__labels{pointer-events:none;z-index:2;contain:layout style paint;isolation:isolate;transform-origin:0 0;will-change:transform;position:absolute;inset:0;overflow:hidden}.gis-view__label-layer{position:absolute;inset:0}.gis-view__label-layer--hidden{visibility:hidden}.gis-view__label-canvas{pointer-events:none;position:absolute;top:0;left:0}.gis-view__label{z-index:var(--gis-view-label-z,auto);white-space:nowrap;color:#1f3550;background:#ffffffe0;border-radius:4px;padding:1px 6px;font-size:12px;line-height:16px;position:absolute;top:0;left:0}.gis-view__cluster-layer{z-index:2147483000}.gis-view__cluster-label{color:#fff;letter-spacing:.2px;pointer-events:none;-webkit-user-select:none;user-select:none;text-shadow:0 1px 1px #102a5059;white-space:nowrap;justify-content:center;align-items:center;min-width:16px;height:16px;font-size:12px;font-weight:600;line-height:16px;display:flex;position:absolute;top:0;left:0}.gis-view__label--draggable,.gis-view__label--editable{pointer-events:auto;touch-action:none}.gis-view__label--draggable{cursor:grab}.gis-view__label--editable{cursor:pointer}.gis-view__label--dragging{cursor:grabbing;z-index:2147483647;-webkit-user-select:none;user-select:none}.gis-view__background-label{white-space:nowrap;pointer-events:none;text-shadow:0 1px 2px #ffffffe6,0 0 2px #fffc;position:absolute;top:0;left:0}.gis-view__tooltip{color:#f3f7fc;white-space:pre-line;pointer-events:none;will-change:transform;background:#172436eb;border-radius:6px;max-width:280px;padding:6px 10px;font-size:12px;line-height:18px;position:absolute;top:0;left:0}.gis-view__tooltip[hidden]{display:none}.gis-view__minimap{z-index:2;box-sizing:border-box;contain:layout paint;isolation:isolate;touch-action:none;cursor:default;position:absolute;overflow:hidden}.gis-view__minimap[hidden]{display:none}.gis-view__minimap-canvas{width:100%;height:100%;display:block}.gis-view__minimap-box{box-sizing:border-box;pointer-events:none;will-change:transform;position:absolute;top:0;left:0}.gis-view__minimap-select{box-sizing:border-box;pointer-events:none;will-change:transform;background:#3678bf1f;border:1px dashed #3678bf;display:none;position:absolute;top:0;left:0}
|