vue-openlayers-plugin 1.1.15 → 1.2.0

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 (43) hide show
  1. package/README.md +302 -170
  2. package/lib/{BasemapPanel-7664fc20.mjs → BasemapPanel-d6e4ea88.mjs} +1 -1
  3. package/lib/{CoordinateLocationDialog-f505c006.mjs → CoordinateLocationDialog-81d00abc.mjs} +1 -1
  4. package/lib/{MapPrintDialog-0cf04cae.mjs → FilterPanel-7358e3fb.mjs} +1 -1
  5. package/lib/{FilterPanel-4cfbbfeb.mjs → LayerPanel-9bf28955.mjs} +1 -1
  6. package/lib/{LayerPanel-354b6ac7.mjs → MapPrintDialog-64d46412.mjs} +1 -1
  7. package/lib/{MeasurementDialog-4fd11413.mjs → MeasurementDialog-4e084192.mjs} +1 -1
  8. package/lib/{MyMarkersDialog-f413337c.mjs → MyMarkersDialog-aa44e5bd.mjs} +1 -1
  9. package/lib/{QuadCompareDialog-176a8178.mjs → QuadCompareDialog-84a88cf9.mjs} +1 -1
  10. package/lib/{RegionNavigationDialog-1edd078f.mjs → RegionNavigationDialog-467ad6c0.mjs} +1 -1
  11. package/lib/{SplitCompareDialog-3fe419de.mjs → SplitCompareDialog-50410c0b.mjs} +1 -1
  12. package/lib/{SwipeCompareDialog-e2c28122.mjs → SwipeCompareDialog-c322e2f6.mjs} +1 -1
  13. package/lib/{ViewBookmarksDialog-9873fb3c.mjs → ViewBookmarksDialog-83cf5ec4.mjs} +1 -1
  14. package/lib/{index-923f7253.mjs → index-58704a25.mjs} +400 -152
  15. package/lib/{index-a30f4100.mjs → index-ee58f2f8.mjs} +1 -1
  16. package/lib/{index.es-b7728855.mjs → index.es-320e524d.mjs} +1 -1
  17. package/lib/index.esm.js +1 -1
  18. package/lib/index.umd.js +386 -138
  19. package/lib/style.css +13 -4
  20. package/package.json +106 -106
  21. package/types/components/OlDialogs/LayerPanel.vue.d.ts +102 -0
  22. package/types/components/OlDialogs/LayerPanel.vue.d.ts.map +1 -1
  23. package/types/components/OlMap.vue.d.ts +204 -0
  24. package/types/components/OlMap.vue.d.ts.map +1 -1
  25. package/types/components/OlMapSearch.vue.d.ts +20 -1
  26. package/types/components/OlMapSearch.vue.d.ts.map +1 -1
  27. package/types/core/LayerManager.d.ts +5 -5
  28. package/types/core/LayerManager.d.ts.map +1 -1
  29. package/types/core/layers/GeoJSONLayerHandler.d.ts +3 -4
  30. package/types/core/layers/GeoJSONLayerHandler.d.ts.map +1 -1
  31. package/types/core/layers/interfaces.d.ts +1 -1
  32. package/types/core/layers/interfaces.d.ts.map +1 -1
  33. package/types/core/storage.d.ts.map +1 -1
  34. package/types/core/tiandituSearchApi.d.ts.map +1 -1
  35. package/types/lowcode-entry.d.ts +204 -0
  36. package/types/lowcode-entry.d.ts.map +1 -1
  37. package/types/plugins/index.d.ts +90 -0
  38. package/types/plugins/index.d.ts.map +1 -0
  39. package/types/services/searchService.d.ts +21 -1
  40. package/types/services/searchService.d.ts.map +1 -1
  41. package/types/tsconfig.tsbuildinfo +1 -1
  42. package/types/types/map.d.ts +29 -1
  43. package/types/types/map.d.ts.map +1 -1
package/README.md CHANGED
@@ -131,6 +131,194 @@ const onFeatureSelected = (feature: any) => {
131
131
  </style>
132
132
  ```
133
133
 
134
+ ### 视角书签使用
135
+
136
+ 视角书签的数据由父组件统一管理,通过 `viewBookmarks` 传给地图组件。地图组件内部只负责展示、应用视角和触发事件,不直接请求后端接口。
137
+
138
+ 推荐接入方式:
139
+
140
+ - 父组件初始化时调用查询接口,拿到书签列表后传给 `CustomOpenlayer`
141
+ - 用户在地图中新增、编辑、删除、清空、应用书签时,地图组件通过 `bookmark-action` 向外抛出事件
142
+ - 父组件在 `onBookmarkAction` 中根据 `action` 调用新增、更新、删除、清空等接口
143
+ - 接口成功后重新查询书签列表,或本地同步更新后再回传给 `viewBookmarks`
144
+
145
+ ```vue
146
+ <template>
147
+ <CustomOpenlayer
148
+ :map-config="mapConfig"
149
+ :view-bookmarks="viewBookmarks"
150
+ @bookmark-action="onBookmarkAction"
151
+ />
152
+ </template>
153
+
154
+ <script setup lang="ts">
155
+ import { onMounted, ref } from 'vue'
156
+ import { CustomOpenlayer } from 'vue-openlayers-plugin'
157
+ import type { BookmarkAction, MapConfig, ViewBookmark } from 'vue-openlayers-plugin'
158
+
159
+ const viewBookmarks = ref<ViewBookmark[]>([])
160
+
161
+ const mapConfig: MapConfig = {
162
+ center: [116.397428, 39.90923],
163
+ zoom: 10,
164
+ projection: 'EPSG:4326',
165
+ controls: {
166
+ viewBookmarks: true
167
+ }
168
+ }
169
+
170
+ const fetchBookmarks = async () => {
171
+ const list = await bookmarkApi.list()
172
+ viewBookmarks.value = list
173
+ }
174
+
175
+ const onBookmarkAction = async (event: BookmarkAction) => {
176
+ const { action, bookmark } = event
177
+
178
+ if (action === 'add' && bookmark) {
179
+ await bookmarkApi.create(bookmark)
180
+ }
181
+
182
+ if (action === 'update' && bookmark) {
183
+ await bookmarkApi.update(bookmark.id, bookmark)
184
+ }
185
+
186
+ if (action === 'delete' && bookmark) {
187
+ await bookmarkApi.remove(bookmark.id)
188
+ }
189
+
190
+ if (action === 'clear') {
191
+ await bookmarkApi.clear()
192
+ }
193
+
194
+ if (action === 'apply' && bookmark) {
195
+ console.log('已应用书签视角', bookmark)
196
+ }
197
+
198
+ await fetchBookmarks()
199
+ }
200
+
201
+ onMounted(() => {
202
+ fetchBookmarks()
203
+ })
204
+
205
+ const bookmarkApi = {
206
+ async list(): Promise<ViewBookmark[]> {
207
+ return []
208
+ },
209
+ async create(bookmark: ViewBookmark) {
210
+ return bookmark
211
+ },
212
+ async update(id: string, bookmark: ViewBookmark) {
213
+ return { id, ...bookmark }
214
+ },
215
+ async remove(id: string) {
216
+ return id
217
+ },
218
+ async clear() {
219
+ return true
220
+ }
221
+ }
222
+ </script>
223
+ ```
224
+
225
+ #### 数据传递说明
226
+
227
+ - `viewBookmarks`:父组件传入的书签数组,作为地图组件的书签数据源
228
+ - `controls.viewBookmarks: true`:开启视角书签按钮,用户点击后会打开“视角书签”面板
229
+ - 地图组件不会自动持久化书签;是否存本地、是否调后端接口,都由父组件决定
230
+
231
+ #### 视角书签数据结构
232
+
233
+ `viewBookmarks` 的元素类型为 `ViewBookmark`,结构如下:
234
+
235
+ ```typescript
236
+ interface ViewBookmark {
237
+ id: string
238
+ name: string
239
+ category: string
240
+ description: string
241
+ center: [number, number]
242
+ zoom: number
243
+ rotation: number
244
+ createTime: string | Date
245
+ creator?: string
246
+ thumbnail?: string
247
+ layerStates?: {
248
+ id: string
249
+ visible: boolean
250
+ opacity: number
251
+ title?: string
252
+ }[]
253
+ }
254
+ ```
255
+
256
+ 字段说明:
257
+
258
+ - `id`:书签唯一标识,通常对应后端主键
259
+ - `name`:书签名称
260
+ - `category`:书签分类,便于筛选和分组
261
+ - `description`:书签描述信息
262
+ - `center`:视角中心点坐标,格式为 `[经度, 纬度]`
263
+ - `zoom`:缩放级别
264
+ - `rotation`:旋转角度,单位为度
265
+ - `createTime`:创建时间,支持字符串或 `Date`
266
+ - `creator`:创建人,可选
267
+ - `thumbnail`:视角缩略图,可选,通常为图片 URL 或 Base64
268
+ - `layerStates`:保存书签时记录的图层状态,可选,用于恢复图层显隐和透明度
269
+
270
+ 示例数据:
271
+
272
+ ```typescript
273
+ const viewBookmarks: ViewBookmark[] = [
274
+ {
275
+ id: 'bk-1',
276
+ name: '北京中心',
277
+ category: '城市',
278
+ description: '北京中心视角',
279
+ center: [116.407526, 39.90403],
280
+ zoom: 12,
281
+ rotation: 0,
282
+ createTime: '2026-05-05 10:00:00',
283
+ creator: 'admin',
284
+ thumbnail: 'https://example.com/bookmarks/bk-1.jpg',
285
+ layerStates: [
286
+ {
287
+ id: 'osm',
288
+ visible: true,
289
+ opacity: 1,
290
+ title: 'OpenStreetMap'
291
+ },
292
+ {
293
+ id: 'land_acquisition',
294
+ visible: false,
295
+ opacity: 0.8,
296
+ title: '征地图层'
297
+ }
298
+ ]
299
+ }
300
+ ]
301
+ ```
302
+
303
+ #### 事件说明
304
+
305
+ 地图组件会抛出 `bookmark-action` 事件,事件参数类型如下:
306
+
307
+ ```typescript
308
+ type BookmarkAction = {
309
+ action: 'add' | 'update' | 'delete' | 'apply' | 'clear'
310
+ bookmark?: ViewBookmark
311
+ }
312
+ ```
313
+
314
+ 不同 `action` 的含义如下:
315
+
316
+ - `add`:用户保存了一个新书签
317
+ - `update`:用户修改了已有书签
318
+ - `delete`:用户删除了某个书签
319
+ - `clear`:用户清空了全部书签
320
+ - `apply`:用户点击应用书签,地图已切换到对应视角
321
+
134
322
  ### 移动端使用(MobileMap)
135
323
 
136
324
  `MobileMap` 内置了移动端常用 UI(搜索、图层面板、图例入口等),通过 Props 控制显示:
@@ -229,6 +417,13 @@ const onMapReady = (map: unknown) => {
229
417
  | showLayerPanel | `boolean` | `false` | 是否显示图层面板 |
230
418
  | showMeasurementTools | `boolean` | `false` | 是否显示测量工具 |
231
419
  | showDrawingTools | `boolean` | `false` | 是否显示标绘工具 |
420
+ | viewBookmarks | `ViewBookmark[]` | `[]` | 视角书签列表,由父组件传入 |
421
+
422
+ #### Events
423
+
424
+ | 事件名 | 参数 | 描述 |
425
+ |------|------|------|
426
+ | bookmark-action | `BookmarkAction` | 视角书签新增、编辑、删除、清空、应用时触发 |
232
427
 
233
428
  ### CustomDialog
234
429
 
@@ -336,208 +531,151 @@ layerManager.addLayer({
336
531
  })
337
532
  ```
338
533
 
339
- #### GeoJSON 图层请求配置
534
+ #### GeoJSON 请求图层配置
340
535
 
341
- GeoJSON 图层除了支持直接传入 `data` 和 `url`,现在也支持更完整的接口配置,适合通用组件场景下的查询、筛选与动态刷新。
342
-
343
- 最简单的用法仍然保持不变:
536
+ GeoJSON 图层除了支持直接传入 `data`,也支持通过 `geojsonConfig.request` 发起远程请求,适合按行政区、业务类型、时间范围等条件动态加载矢量数据。
344
537
 
345
538
  ```typescript
346
- layerManager.addLayer({
347
- id: 'geojson-static',
348
- name: '静态 GeoJSON',
349
- type: 'geojson',
350
- visible: true,
351
- opacity: 1,
352
- zIndex: 10,
353
- data: featureCollection
354
- })
539
+ const mapConfig = {
540
+ center: [121.473, 31.23],
541
+ zoom: 12,
542
+ projection: 'EPSG:4326',
543
+ vectorLayers: [
544
+ {
545
+ id: 'land_acquisition',
546
+ name: '征地',
547
+ type: 'GeoJSON',
548
+ visible: true,
549
+ opacity: 80,
550
+ geojsonLandType: '征地未结案',
551
+ geojsonConfig: {
552
+ request: {
553
+ url: '/zzd/parcel/geojson/by-user-land-type',
554
+ method: 'GET',
555
+ headers: {
556
+ Authorization: 'Bearer <token>',
557
+ 'X-Tenant-Id': 'demo'
558
+ },
559
+ params: {
560
+ landType: '征地未结案'
561
+ },
562
+ managementUnitParamName: 'managementUnit',
563
+ landTypeParamName: 'landType',
564
+ dataPath: 'data.features'
565
+ }
566
+ },
567
+ style: {
568
+ fill: {
569
+ color: 'rgba(255, 0, 0, 0.2)'
570
+ },
571
+ stroke: {
572
+ color: '#FF0000',
573
+ width: 2
574
+ }
575
+ }
576
+ }
577
+ ]
578
+ }
355
579
  ```
356
580
 
357
- 如果需要从接口加载数据,推荐使用 `geojsonConfig.request`:
581
+ #### GeoJSON 请求配置项
582
+
583
+ | 字段 | 类型 | 说明 |
584
+ |------|------|------|
585
+ | `geojsonConfig.data` | `object \| string` | 直接传入 GeoJSON 数据,适合本地静态数据 |
586
+ | `geojsonConfig.request.url` | `string` | 请求地址 |
587
+ | `geojsonConfig.request.method` | `'GET' \| 'POST' \| 'PUT' \| 'DELETE'` | 请求方法,默认 `GET` |
588
+ | `geojsonConfig.request.headers` | `Record<string, string>` | 自定义请求头,比如 `Authorization` |
589
+ | `geojsonConfig.request.params` | `Record<string, any>` | 查询参数,会自动拼接到 URL 上 |
590
+ | `geojsonConfig.request.body` | `Record<string, any> \| string` | 非 `GET` 请求体 |
591
+ | `geojsonConfig.request.dataPath` | `string` | 返回结果中的 GeoJSON 数据路径,例如 `data.features` |
592
+ | `geojsonConfig.request.managementUnit` | `string` | 管理单位值 |
593
+ | `geojsonConfig.request.managementUnitParamName` | `string` | 管理单位参数名,默认 `managementUnit` |
594
+ | `geojsonConfig.request.landType` | `string` | 地类值 |
595
+ | `geojsonConfig.request.landTypeParamName` | `string` | 地类参数名,默认 `landType` |
596
+ | `geojsonConfig.refresh` | `object` | 刷新配置,支持定时刷新、缩放后刷新、移动后刷新 |
597
+
598
+ #### 请求头设置方式
599
+
600
+ 最直接的方式是在 `geojsonConfig.request.headers` 中传入:
358
601
 
359
602
  ```typescript
360
- layerManager.addLayer({
361
- id: 'poi-api',
362
- name: '接口点位',
363
- type: 'geojson',
364
- visible: true,
365
- opacity: 1,
366
- zIndex: 20,
367
- projection: 'EPSG:4326',
368
- geojsonConfig: {
369
- request: {
370
- url: '/api/poi/list',
371
- method: 'GET',
372
- params: {
373
- city: 'hangzhou',
374
- category: 'restaurant'
375
- },
376
- headers: {
377
- Authorization: 'Bearer token'
378
- },
379
- dataPath: 'data.list'
603
+ geojsonConfig: {
604
+ request: {
605
+ url: '/api/parcel/geojson',
606
+ method: 'GET',
607
+ headers: {
608
+ Authorization: `Bearer ${token}`,
609
+ 'X-Project-Id': 'project-a'
380
610
  }
381
611
  }
382
- })
612
+ }
383
613
  ```
384
614
 
385
- 也兼容扁平写法,适合快速接入:
615
+ 如果不希望把 token 写死在配置中,可以使用请求拦截器动态注入:
386
616
 
387
617
  ```typescript
388
- layerManager.addLayer({
389
- id: 'geojson-flat',
390
- name: '快速接入图层',
391
- type: 'geojson',
392
- url: '/api/geojson',
393
- method: 'POST',
394
- params: {
395
- cityCode: '330100'
396
- },
397
- body: {
398
- keyword: '商圈'
399
- },
400
- dataPath: 'result.features',
401
- visible: true,
402
- opacity: 1,
403
- zIndex: 15
404
- })
618
+ geojsonConfig: {
619
+ request: {
620
+ url: '/api/parcel/geojson',
621
+ method: 'GET',
622
+ requestInterceptor: async (request) => {
623
+ const token = localStorage.getItem('token') || ''
624
+
625
+ return {
626
+ headers: {
627
+ ...request.headers,
628
+ Authorization: `Bearer ${token}`
629
+ }
630
+ }
631
+ }
632
+ }
633
+ }
405
634
  ```
406
635
 
407
- #### GeoJSON 配置项说明
636
+ #### 响应转换与数据解析
408
637
 
409
- | 字段 | 类型 | 说明 |
410
- |------|------|------|
411
- | data | `object \| string` | 直接传入 GeoJSON 数据,适合本地数据或已拿到结果的场景 |
412
- | url | `string` | GeoJSON 请求地址,保留原有用法 |
413
- | method | `'GET' \| 'POST' \| 'PUT' \| 'PATCH' \| 'DELETE'` | 请求方法 |
414
- | headers | `Record<string, string>` | 请求头 |
415
- | params | `Record<string, any>` | 请求参数,`GET` 时会自动拼接到 URL |
416
- | body | `Record<string, any> \| string` | 请求体,适用于 `POST` 等方法 |
417
- | dataPath | `string` | 响应中 GeoJSON 数据所在路径,例如 `data.list` |
418
- | geojsonConfig.request | `object` | 推荐写法,统一管理请求配置 |
419
- | geojsonConfig.refresh | `object` | 刷新配置,支持定时、移动后、缩放后刷新 |
420
- | geojsonConfig.clearOnError | `boolean` | 请求失败时是否清空当前图层要素 |
421
-
422
- #### 刷新配置示例
638
+ 如果后端返回结构不固定,除了 `dataPath` 之外,还可以使用 `responseInterceptor` `responseParser` 做二次处理:
423
639
 
424
640
  ```typescript
425
- layerManager.addLayer({
426
- id: 'geojson-refresh',
427
- name: '动态刷新图层',
428
- type: 'geojson',
429
- visible: true,
430
- opacity: 1,
431
- zIndex: 30,
432
- projection: 'EPSG:4326',
433
- geojsonConfig: {
434
- request: {
435
- url: '/api/device/query',
436
- method: 'GET',
437
- params: {
438
- status: 'online'
439
- },
440
- dataPath: 'data.features'
441
- },
442
- refresh: {
443
- enabled: true,
444
- interval: 30000,
445
- onMoveEnd: true,
446
- onZoomEnd: false,
447
- debounce: 300,
448
- useExtent: true,
449
- extentParamName: 'bbox',
450
- extentTarget: 'params',
451
- extentProjection: 'EPSG:4326'
641
+ geojsonConfig: {
642
+ request: {
643
+ url: '/api/parcel/geojson',
644
+ method: 'GET',
645
+ responseParser: async (response) => {
646
+ return response.result.list
452
647
  }
453
648
  }
454
- })
649
+ }
455
650
  ```
456
651
 
457
- `refresh` 字段说明:
458
-
459
- | 字段 | 类型 | 说明 |
460
- |------|------|------|
461
- | enabled | `boolean` | 是否启用刷新能力,默认开启 |
462
- | interval | `number` | 定时刷新间隔,单位毫秒 |
463
- | onMoveEnd | `boolean` | 地图移动结束后自动刷新 |
464
- | onZoomEnd | `boolean` | 地图缩放结束后自动刷新 |
465
- | debounce | `number` | 地图事件触发后的防抖时间,单位毫秒 |
466
- | useExtent | `boolean` | 是否自动将当前地图范围作为查询参数传给接口 |
467
- | extentParamName | `string` | 视野范围参数名,默认 `bbox` |
468
- | extentTarget | `'params' \| 'body'` | 将范围写入查询参数还是请求体 |
469
- | extentProjection | `string` | 范围参数使用的坐标系,默认跟随图层投影 |
470
-
471
- #### 手动刷新与动态更新参数
652
+ #### 运行时刷新 GeoJSON 图层
472
653
 
473
- 如果使用的是 `OlMap` / `CustomOpenlayer` 组件实例,也可以直接调用暴露的方法:
654
+ 组件实例暴露了 `refreshLayer` `updateLayerRequestParams`,可以在不重建地图的情况下更新请求参数并重新拉取数据:
474
655
 
475
656
  ```vue
476
- <template>
477
- <CustomOpenlayer ref="mapRef" :config="mapConfig" />
478
- </template>
479
-
480
657
  <script setup lang="ts">
481
658
  import { ref } from 'vue'
482
659
  import { CustomOpenlayer } from 'vue-openlayers-plugin'
483
660
 
484
661
  const mapRef = ref<InstanceType<typeof CustomOpenlayer> | null>(null)
485
662
 
486
- const reloadLayer = async () => {
487
- mapRef.value?.updateLayerRequestParams('poi-api', {
488
- city: 'ningbo',
489
- category: 'hotel'
663
+ const updateLandType = async () => {
664
+ mapRef.value?.updateLayerRequestParams('land_acquisition', {
665
+ landType: '征地已结案'
490
666
  })
491
667
 
492
- await mapRef.value?.refreshLayer('poi-api')
668
+ await mapRef.value?.refreshLayer('land_acquisition')
493
669
  }
494
670
  </script>
495
671
  ```
496
672
 
497
- 公开方法说明:
498
-
499
- | 方法 | 参数 | 说明 |
500
- |------|------|------|
501
- | refreshLayer | `(layerId, options?)` | 手动刷新指定图层,可临时传入 `params` / `body` |
502
- | updateLayerRequestParams | `(layerId, params)` | 更新图层默认请求参数,并立即重新拉取数据 |
673
+ #### 使用建议
503
674
 
504
- #### 高级响应处理
505
-
506
- 当接口返回结构不固定时,可以通过拦截器或解析器做统一适配:
507
-
508
- ```typescript
509
- layerManager.addLayer({
510
- id: 'geojson-advanced',
511
- name: '高级响应处理',
512
- type: 'geojson',
513
- visible: true,
514
- opacity: 1,
515
- zIndex: 40,
516
- geojsonConfig: {
517
- request: {
518
- url: '/api/map/search',
519
- method: 'POST',
520
- body: {
521
- keyword: '学校'
522
- },
523
- requestInterceptor: async (request) => {
524
- return {
525
- ...request,
526
- headers: {
527
- ...request.headers,
528
- Authorization: 'Bearer token'
529
- }
530
- }
531
- },
532
- responseInterceptor: async (response) => response.result,
533
- responseParser: async (response) => ({
534
- type: 'FeatureCollection',
535
- features: response.items
536
- })
537
- }
538
- }
539
- })
540
- ```
675
+ - 需要鉴权时,优先使用 `headers` 或 `requestInterceptor`
676
+ - 参数频繁变化时,优先使用 `updateLayerRequestParams`
677
+ - 后端返回结构复杂时,优先使用 `dataPath`,不够再使用 `responseParser`
678
+ - 如果鉴权依赖 Cookie,也可以不传 `headers`,由浏览器自动携带
541
679
 
542
680
  ### 标绘工具
543
681
 
@@ -638,12 +776,6 @@ MIT License
638
776
 
639
777
  ## 更新日志
640
778
 
641
- ### 1.1.14
642
-
643
- - ✨ 新增 GeoJSON 图层接口配置说明,支持 `method`、`headers`、`params`、`body`、`dataPath`
644
- - ✨ 新增 GeoJSON 图层动态刷新说明,支持定时刷新、移动后刷新、缩放后刷新与视野范围参数
645
- - ✨ 新增 `refreshLayer` 与 `updateLayerRequestParams` 用法示例,便于业务侧快速接入
646
-
647
779
  ### 1.2.0
648
780
 
649
781
  - ✨ 新增图标图例功能,支持 PNG、JPG、SVG、GIF、WebP 等图像格式
@@ -1,5 +1,5 @@
1
1
  import { defineComponent, inject, computed, ref, watch, onMounted, onUnmounted, openBlock, createBlock, unref, withCtx, createElementVNode, createElementBlock, Fragment, renderList, normalizeClass, toDisplayString } from "vue";
2
- import { r as resolveBasemapThumbnail, l as layerEventBus, X, b as _export_sfc } from "./index-923f7253.mjs";
2
+ import { r as resolveBasemapThumbnail, l as layerEventBus, X, b as _export_sfc } from "./index-58704a25.mjs";
3
3
  import "@element-plus/icons-vue";
4
4
  import "ol";
5
5
  import "proj4";
@@ -1,6 +1,6 @@
1
1
  import { defineComponent, inject, computed, ref, reactive, resolveComponent, openBlock, createBlock, unref, withCtx, createElementVNode, createVNode, createTextVNode } from "vue";
2
2
  import { Aim } from "@element-plus/icons-vue";
3
- import { X, T as TooltipHelper, b as _export_sfc } from "./index-923f7253.mjs";
3
+ import { X, T as TooltipHelper, b as _export_sfc } from "./index-58704a25.mjs";
4
4
  import "ol";
5
5
  import "proj4";
6
6
  import "@supermapgis/iclient-ol";
@@ -1,4 +1,4 @@
1
- import { d as _sfc_main } from "./index-923f7253.mjs";
1
+ import { j as _sfc_main } from "./index-58704a25.mjs";
2
2
  import "vue";
3
3
  import "@element-plus/icons-vue";
4
4
  import "ol";
@@ -1,4 +1,4 @@
1
- import { j as _sfc_main } from "./index-923f7253.mjs";
1
+ import { e as _sfc_main } from "./index-58704a25.mjs";
2
2
  import "vue";
3
3
  import "@element-plus/icons-vue";
4
4
  import "ol";
@@ -1,4 +1,4 @@
1
- import { e as _sfc_main } from "./index-923f7253.mjs";
1
+ import { d as _sfc_main } from "./index-58704a25.mjs";
2
2
  import "vue";
3
3
  import "@element-plus/icons-vue";
4
4
  import "ol";
@@ -1,5 +1,5 @@
1
1
  import { defineComponent, inject, computed, ref, watch, resolveComponent, openBlock, createBlock, unref, withCtx, createElementVNode, createVNode, createTextVNode, toDisplayString, createElementBlock, Fragment, renderList, normalizeClass } from "vue";
2
- import { X, f as formatMeasurementResult, b as _export_sfc } from "./index-923f7253.mjs";
2
+ import { X, f as formatMeasurementResult, b as _export_sfc } from "./index-58704a25.mjs";
3
3
  import "@element-plus/icons-vue";
4
4
  import "ol";
5
5
  import "proj4";
@@ -1,7 +1,7 @@
1
1
  import { defineComponent, inject, computed, ref, reactive, onUnmounted, watch, resolveComponent, openBlock, createElementBlock, Fragment, createVNode, unref, withCtx, createElementVNode, normalizeClass, createTextVNode, toDisplayString, renderList, createBlock, withModifiers, mergeProps } from "vue";
2
2
  import { Plus, FolderOpened, Download, Delete, Search, LocationFilled, Edit } from "@element-plus/icons-vue";
3
3
  import { ElMessageBox } from "element-plus";
4
- import { X, M as MarkerDrawingAdapter, h as fromLonLat, t as toLonLat } from "./index-923f7253.mjs";
4
+ import { X, M as MarkerDrawingAdapter, h as fromLonLat, t as toLonLat } from "./index-58704a25.mjs";
5
5
  import "ol";
6
6
  import "proj4";
7
7
  import "@supermapgis/iclient-ol";
@@ -1,5 +1,5 @@
1
1
  import { defineComponent, ref, inject, computed, shallowRef, reactive, watch, nextTick, onMounted, onUnmounted, resolveComponent, openBlock, createElementBlock, createVNode, unref, withCtx, createElementVNode, Fragment, renderList, createBlock, createCommentVNode } from "vue";
2
- import { k as layerFactory, i as getUid, m as defaults, X, n as TileLayer, I as ImageLayer, V as VectorTileLayer, H as HeatmapLayer, o as VectorLayer, L as LayerGroup, b as _export_sfc } from "./index-923f7253.mjs";
2
+ import { k as layerFactory, i as getUid, m as defaults, X, n as TileLayer, I as ImageLayer, V as VectorTileLayer, H as HeatmapLayer, o as VectorLayer, L as LayerGroup, b as _export_sfc } from "./index-58704a25.mjs";
3
3
  import { u as useMap } from "./useMap-8e3a2de5.mjs";
4
4
  import { View, Map } from "ol";
5
5
  import "@element-plus/icons-vue";
@@ -1,5 +1,5 @@
1
1
  import { defineComponent, computed, ref, reactive, resolveComponent, openBlock, createBlock, unref, withCtx, createElementVNode, createVNode, createElementBlock, Fragment, renderList, createTextVNode, toDisplayString, normalizeClass } from "vue";
2
- import { X } from "./index-923f7253.mjs";
2
+ import { X } from "./index-58704a25.mjs";
3
3
  import "@element-plus/icons-vue";
4
4
  import "ol";
5
5
  import "proj4";
@@ -1,5 +1,5 @@
1
1
  import { defineComponent, ref, inject, computed, shallowRef, watch, nextTick, onMounted, onUnmounted, resolveComponent, openBlock, createElementBlock, createVNode, unref, withCtx, createElementVNode, Fragment, renderList, createBlock, createCommentVNode } from "vue";
2
- import { k as layerFactory, i as getUid, m as defaults, X, n as TileLayer, I as ImageLayer, V as VectorTileLayer, H as HeatmapLayer, o as VectorLayer, L as LayerGroup, b as _export_sfc } from "./index-923f7253.mjs";
2
+ import { k as layerFactory, i as getUid, m as defaults, X, n as TileLayer, I as ImageLayer, V as VectorTileLayer, H as HeatmapLayer, o as VectorLayer, L as LayerGroup, b as _export_sfc } from "./index-58704a25.mjs";
3
3
  import { u as useMap } from "./useMap-8e3a2de5.mjs";
4
4
  import { View, Map } from "ol";
5
5
  import "@element-plus/icons-vue";
@@ -1,5 +1,5 @@
1
1
  import { defineComponent, ref, inject, computed, shallowRef, watch, nextTick, onMounted, onUnmounted, resolveComponent, openBlock, createElementBlock, createVNode, unref, withCtx, createElementVNode, normalizeClass, normalizeStyle, Fragment, renderList, createBlock, createCommentVNode } from "vue";
2
- import { k as layerFactory, i as getUid, m as defaults, X, n as TileLayer, I as ImageLayer, V as VectorTileLayer, H as HeatmapLayer, o as VectorLayer, L as LayerGroup, b as _export_sfc } from "./index-923f7253.mjs";
2
+ import { k as layerFactory, i as getUid, m as defaults, X, n as TileLayer, I as ImageLayer, V as VectorTileLayer, H as HeatmapLayer, o as VectorLayer, L as LayerGroup, b as _export_sfc } from "./index-58704a25.mjs";
3
3
  import { u as useMap } from "./useMap-8e3a2de5.mjs";
4
4
  import { View, Map } from "ol";
5
5
  import { DCaret } from "@element-plus/icons-vue";
@@ -1,7 +1,7 @@
1
1
  import { defineComponent, inject, computed, ref, watch, reactive, resolveComponent, openBlock, createBlock, unref, withCtx, createElementVNode, createVNode, createTextVNode, createElementBlock, Fragment, renderList, withModifiers, toDisplayString, createCommentVNode } from "vue";
2
2
  import { Plus, Delete, Search, Camera, View, Edit, Location, ZoomIn } from "@element-plus/icons-vue";
3
3
  import { ElMessage, ElMessageBox } from "element-plus";
4
- import { X, t as toLonLat, h as fromLonLat, i as getUid } from "./index-923f7253.mjs";
4
+ import { X, t as toLonLat, h as fromLonLat, i as getUid } from "./index-58704a25.mjs";
5
5
  import "ol";
6
6
  import "proj4";
7
7
  import "@supermapgis/iclient-ol";