tg-map-vue3 4.2.1 → 4.2.3
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/CHANGELOG.md +117 -116
- package/README.md +105 -105
- package/dist/src/components/extra/TgMarkerClusterer.vue.d.ts +2 -0
- package/dist/tg-map.cjs +1 -1
- package/dist/tg-map.cjs.map +1 -1
- package/dist/tg-map.js +132 -128
- package/dist/tg-map.js.map +1 -1
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,116 +1,117 @@
|
|
|
1
|
-
# 更新日志
|
|
2
|
-
|
|
3
|
-
## 4.2.x
|
|
4
|
-
|
|
5
|
-
-
|
|
6
|
-
- feat:
|
|
7
|
-
- feat:
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
- ***BREAKING CHANGE***:
|
|
13
|
-
-
|
|
14
|
-
-
|
|
15
|
-
- feat:
|
|
16
|
-
- feat:
|
|
17
|
-
- feat: [
|
|
18
|
-
- feat: [
|
|
19
|
-
-
|
|
20
|
-
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
-
|
|
26
|
-
- feat:
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
-
|
|
32
|
-
- fix:
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
-
|
|
38
|
-
-
|
|
39
|
-
- feat:
|
|
40
|
-
-
|
|
41
|
-
-
|
|
42
|
-
- ***BREAKING CHANGE***:
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
- feat: [
|
|
48
|
-
-
|
|
49
|
-
-
|
|
50
|
-
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
-
|
|
56
|
-
-
|
|
57
|
-
- ***BREAKING CHANGE***:
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
- feat:
|
|
63
|
-
-
|
|
64
|
-
-
|
|
65
|
-
- ***BREAKING CHANGE***:
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
-
|
|
71
|
-
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
-
|
|
77
|
-
- feat: 支持[
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
[
|
|
89
|
-
[
|
|
90
|
-
[
|
|
91
|
-
[
|
|
92
|
-
[
|
|
93
|
-
[
|
|
94
|
-
[
|
|
95
|
-
[
|
|
96
|
-
[
|
|
97
|
-
[
|
|
98
|
-
[
|
|
99
|
-
[
|
|
100
|
-
[
|
|
101
|
-
[
|
|
102
|
-
[
|
|
103
|
-
[
|
|
104
|
-
[
|
|
105
|
-
[
|
|
106
|
-
[
|
|
107
|
-
[
|
|
108
|
-
[
|
|
109
|
-
[
|
|
110
|
-
[
|
|
111
|
-
[
|
|
112
|
-
[
|
|
113
|
-
[
|
|
114
|
-
[
|
|
115
|
-
[
|
|
116
|
-
[
|
|
1
|
+
# 更新日志
|
|
2
|
+
|
|
3
|
+
## 4.2.x
|
|
4
|
+
|
|
5
|
+
- ***BREAKING CHANGE***: `TgMapConfig.talks.layerId`废弃, 改用`layerIds`
|
|
6
|
+
- feat: talks支持编辑覆盖物
|
|
7
|
+
- feat: [Overlay]新增`addTo`方法
|
|
8
|
+
- feat: talks支持切换内置地图类型和暗色模式
|
|
9
|
+
|
|
10
|
+
## 4.1.x
|
|
11
|
+
|
|
12
|
+
- ***BREAKING CHANGE***: [AbstractMap]改成接口, 只保留`getCenter`/`panTo`等外部使用的方法
|
|
13
|
+
- ***BREAKING CHANGE***: 样式改回独立的css文件, 需要手动导入`import 'tg-map-vue3/dist/tg-map.css'`
|
|
14
|
+
- refactor: 独立出单独的[tg-map-core]包
|
|
15
|
+
- feat: 使用实现基于maptalks的地图的展示功能
|
|
16
|
+
- feat: 实验性支持GL版的baidu地图, 暂时不可用于生产环境
|
|
17
|
+
- feat: [TgMap]新增`fractionalZoom`选项
|
|
18
|
+
- feat: [TgInfoBox]新增`disableAutoPan`选项
|
|
19
|
+
- feat: [TgZoomControl]新增`showZoomLevel`选项
|
|
20
|
+
- refactor: [TgMarkerClusterer]的`styles`选项新增`minMarkersLength`属性, 用于支持新的talks地图
|
|
21
|
+
- feat: [MarkerLabel]新增`talksStyle`选项
|
|
22
|
+
|
|
23
|
+
## 3.9.x
|
|
24
|
+
|
|
25
|
+
- ***BREAKING CHANGE***: 依赖[tg-commons](https://www.npmjs.com/package/tg-commons), 移除`typed`/`isDef`等和地图无关的导出
|
|
26
|
+
- feat: [TgMarker]添加`label`属性, **它和已有的[TgLabel]不能同时设置**
|
|
27
|
+
- feat: 添加球体和线段工具: [SphericalUtil], [PolyUtil]
|
|
28
|
+
|
|
29
|
+
## 3.8.x
|
|
30
|
+
|
|
31
|
+
- chore: 更新到Vue3.4 & Vite5
|
|
32
|
+
- fix: 香港地区坐标转换问题
|
|
33
|
+
- fix: google地图弹窗样式问题
|
|
34
|
+
|
|
35
|
+
## 3.7.x
|
|
36
|
+
|
|
37
|
+
- feat: 添加[IconSequence]到[TgPolyline]中
|
|
38
|
+
- fix: 多个地图同时载入时报错的问题
|
|
39
|
+
- feat: [TgMarker]添加`autoAddToClusterer`属性, 可以不被点聚合管理
|
|
40
|
+
- feat: 添加[热力图][TgHeatmap]功能
|
|
41
|
+
- fix: 让baidu-info-box的行为和google的尽量一致
|
|
42
|
+
- ***BREAKING CHANGE***: [MapStyle]简化成纯对象, 方便使用
|
|
43
|
+
- ***BREAKING CHANGE***: 增加[TgStreetViewControl], 默认关闭google的街景控制按钮
|
|
44
|
+
|
|
45
|
+
## 3.6.x
|
|
46
|
+
|
|
47
|
+
- feat: 添加[MapUrls], 支持打开地图网页(导航和搜索)
|
|
48
|
+
- feat: [LatLng]和[TgMarker]添加`normalize`相关方法/参数, 处理经纬度不合法的问题
|
|
49
|
+
- fix: 百度地图的覆盖物([BaiduShape])不能隐藏填充/线条颜色的问题
|
|
50
|
+
- perf: [TgLabel]/[TgInfoBox]/[TgInfoWindow]和[TgMarker]不必紧密相邻, 可以放其他组件
|
|
51
|
+
- ***BREAKING CHANGE***: `placeService` -> `placesService`
|
|
52
|
+
|
|
53
|
+
## 3.5.x
|
|
54
|
+
|
|
55
|
+
- fix: [LatLngBounds]为空时中心点计算问题
|
|
56
|
+
- perf: 废弃`rightclick`事件, 使用`contextmenu`替代
|
|
57
|
+
- ***BREAKING CHANGE***: `useTgMap` -> [useTgMapInner]
|
|
58
|
+
- ***BREAKING CHANGE***: 统一[TgLabel]在google和baidu上的默认显示层级, 都位于overlay上方
|
|
59
|
+
|
|
60
|
+
## 3.4.x
|
|
61
|
+
|
|
62
|
+
- feat: 添加矩形[TgRectangle]
|
|
63
|
+
- feat: 点/圆/矩形/多边形/多段线 在`editable`/`draggable`模式时支持双向绑定
|
|
64
|
+
- fix: 修复[TgCircle]在某些情况下半径会变成0的问题
|
|
65
|
+
- ***BREAKING CHANGE***: [TgPolygon].polygon, [TgPolyline].polyline 属性, 统一改成`overlay`
|
|
66
|
+
- ***BREAKING CHANGE***: 修复`setDisableDoubleClickZoom(type)`在google/baidu行为相反的问题, 并且重命名为`setDoubleClickZoom(enable)`
|
|
67
|
+
|
|
68
|
+
## 3.3.x
|
|
69
|
+
|
|
70
|
+
- fix: 修复同时修改center和zoom可能中心点偏移的问题
|
|
71
|
+
- feat: [Icon]支持缩放
|
|
72
|
+
- ***BREAKING CHANGE***: [TgMap]的高度默认改成`100%`
|
|
73
|
+
|
|
74
|
+
## 3.2.x
|
|
75
|
+
|
|
76
|
+
- fix: 修复google和baidu的zoom取值不一致的问题
|
|
77
|
+
- feat: 支持[SymbolIcon]
|
|
78
|
+
- feat: 支持[PlacesService], [Autocomplete], [SearchBox]
|
|
79
|
+
|
|
80
|
+
## 3.1.x
|
|
81
|
+
|
|
82
|
+
- feat: 支持隐藏地图Logo
|
|
83
|
+
|
|
84
|
+
## 3.0.x
|
|
85
|
+
|
|
86
|
+
- ***BREAKING CHANGE***: 迁移到Vue3
|
|
87
|
+
|
|
88
|
+
[TgMap]: src/components/TgMap.vue
|
|
89
|
+
[TgCircle]: src/components/overlays/TgCircle.vue
|
|
90
|
+
[TgLabel]: src/components/overlays/TgLabel.vue
|
|
91
|
+
[TgRectangle]: src/components/overlays/TgRectangle.vue
|
|
92
|
+
[TgPolygon]: src/components/overlays/TgPolygon.vue
|
|
93
|
+
[TgPolyline]: src/components/overlays/TgPolyline.vue
|
|
94
|
+
[TgMarker]: src/components/overlays/TgMarker.vue
|
|
95
|
+
[TgInfoBox]: src/components/overlays/TgInfoBox.vue
|
|
96
|
+
[TgInfoWindow]: src/components/overlays/TgInfoWindow.vue
|
|
97
|
+
[TgHeatmap]: src/components/extra/TgHeatmap.vue "热力图"
|
|
98
|
+
[TgStreetViewControl]: src/components/controls/TgStreetViewControl.vue
|
|
99
|
+
[TgZoomControl]: src/components/controls/TgZoomControl.vue
|
|
100
|
+
[Icon]: packages/tg-map-core/src/map/map/overlay/icon.ts#L17 "图标"
|
|
101
|
+
[SymbolIcon]: packages/tg-map-core/src/map/map/overlay/icon.ts#L143 "Svg图标"
|
|
102
|
+
[MarkerLabel]: packages/tg-map-core/src/map/map/overlay/marker-label.ts
|
|
103
|
+
[IconSequence]: packages/tg-map-core/src/map/map/overlay/icon.ts#L254 "Svg图标序列"
|
|
104
|
+
[PlacesService]: packages/tg-map-core/src/map/map/extra/places-service.ts "位置服务"
|
|
105
|
+
[Autocomplete]: packages/tg-map-core/src/map/map/extra/autocomplete.ts "自动完成"
|
|
106
|
+
[MapUrls]: packages/tg-map-core/src/map/map/extra/map-urls.ts "地图网页"
|
|
107
|
+
[SearchBox]: packages/tg-map-core/src/map/map/extra/search-box.ts "搜索框"
|
|
108
|
+
[useTgMapInner]: src/components/map-hooks.ts
|
|
109
|
+
[LatLngBounds]: packages/tg-map-core/src/map/lat-lng.ts#L355
|
|
110
|
+
[LatLng]: packages/tg-map-core/src/map/lat-lng.ts#L32
|
|
111
|
+
[BaiduShape]: packages/tg-map-core/src/map/map/overlay/shape.ts#L48
|
|
112
|
+
[MapStyle]: packages/tg-map-core/src/map/map/map-options.ts#L97
|
|
113
|
+
[PolyUtil]: packages/tg-map-core/src/utils/maps-utils/poly-util.ts
|
|
114
|
+
[SphericalUtil]: packages/tg-map-core/src/utils/maps-utils/spherical-util.ts
|
|
115
|
+
[AbstractMap]: packages/tg-map-core/src/map/map/map.ts#L92
|
|
116
|
+
[Overlay]: packages/tg-map-core/src/map/map/overlay/overlay.ts
|
|
117
|
+
[tg-map-core]: packages/tg-map-core/README.md
|
package/README.md
CHANGED
|
@@ -1,105 +1,105 @@
|
|
|
1
|
-
# tg-map-vue3
|
|
2
|
-
|
|
3
|
-
封装 百度地图, Google地图, Here地图(未完成), Maptalks 的Vue3组件库
|
|
4
|
-
|
|
5
|
-
## 使用
|
|
6
|
-
|
|
7
|
-
安装:
|
|
8
|
-
|
|
9
|
-
```sh
|
|
10
|
-
pnpm install tg-map-vue3
|
|
11
|
-
```
|
|
12
|
-
|
|
13
|
-
使用:
|
|
14
|
-
|
|
15
|
-
```vue
|
|
16
|
-
<template>
|
|
17
|
-
<TgMap> </TgMap>
|
|
18
|
-
</template>
|
|
19
|
-
<script lang="ts" setup>
|
|
20
|
-
import { TgMap } from 'tg-map-vue3'
|
|
21
|
-
// 需要手动导入样式文件
|
|
22
|
-
import 'tg-map-vue3/dist/tg-map.css'
|
|
23
|
-
</script>
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
## 发布
|
|
27
|
-
|
|
28
|
-
在npm上, 登录[transcode-group](https://www.npmjs.com/~transcode-group)帐号后, 可以发布该项目的所有库
|
|
29
|
-
|
|
30
|
-
```sh
|
|
31
|
-
pnpm -r publish
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
## 开发
|
|
35
|
-
|
|
36
|
-
### 初始化仓库
|
|
37
|
-
|
|
38
|
-
```sh
|
|
39
|
-
# 拉取本仓库
|
|
40
|
-
git clone https://github.com/TranscodeGroup/tg-map.git
|
|
41
|
-
# 进入本地仓库目录
|
|
42
|
-
cd tg-map
|
|
43
|
-
# 安装依赖
|
|
44
|
-
pnpm install
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
其他项目若需要引用本地开发中的tg-map, 可以根据需要链接tg-map-vue3/tg-map-core:
|
|
48
|
-
|
|
49
|
-
```sh
|
|
50
|
-
# 使用相对路径链接tg-map-vue3包
|
|
51
|
-
pnpm link ../tg-map
|
|
52
|
-
# 使用相对路径链接tg-map-core包
|
|
53
|
-
pnpm link ../tg-map/packages/tg-map-core
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
### 构建
|
|
57
|
-
|
|
58
|
-
```sh
|
|
59
|
-
# 修改代码后要重新构建
|
|
60
|
-
pnpm run build
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
## 其他
|
|
64
|
-
|
|
65
|
-
```sh
|
|
66
|
-
pnpm install
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
### Compile and Hot-Reload for Development
|
|
70
|
-
|
|
71
|
-
```sh
|
|
72
|
-
pnpm run dev
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
### Type-Check, Compile and Minify for Production
|
|
76
|
-
|
|
77
|
-
```sh
|
|
78
|
-
pnpm run build
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
### Lint with [ESLint](https://eslint.org/)
|
|
82
|
-
|
|
83
|
-
```sh
|
|
84
|
-
pnpm run lint
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
### Customize configuration
|
|
88
|
-
|
|
89
|
-
See [Vite Configuration Reference](https://vitejs.dev/config/).
|
|
90
|
-
|
|
91
|
-
## 参考文档
|
|
92
|
-
|
|
93
|
-
- [百度Javascript API v3.0][]: 老版, [类参考][baidu_ref3]
|
|
94
|
-
- [百度Javascript API GL][]: 新的基于WebGL的实现, [类参考][baidu_ref]
|
|
95
|
-
- [Google Maps Javascript API][]: Google地图, [类参考][google_ref]
|
|
96
|
-
- [maptalks][]: 自绘地图, [类参考][maptalks_ref]
|
|
97
|
-
|
|
98
|
-
[Google Maps Javascript API]: https://developers.google.com/maps/documentation/javascript
|
|
99
|
-
[google_ref]: https://developers.google.com/maps/documentation/javascript/reference
|
|
100
|
-
[百度Javascript API v3.0]: https://lbsyun.baidu.com/index.php?title=jspopular3.0
|
|
101
|
-
[baidu_ref3]: https://mapopen-pub-jsapi.bj.bcebos.com/jsapi/reference/jsapi_reference_3_0.html
|
|
102
|
-
[百度Javascript API GL]: https://lbsyun.baidu.com/index.php?title=jspopularGL
|
|
103
|
-
[baidu_ref]: https://mapopen-pub-jsapi.bj.bcebos.com/jsapi/reference/jsapi_webgl_1_0.html
|
|
104
|
-
[maptalks]: https://maptalks.org/
|
|
105
|
-
[maptalks_ref]: https://maptalks.org/maptalks.js/api/1.x/Map.html
|
|
1
|
+
# tg-map-vue3
|
|
2
|
+
|
|
3
|
+
封装 百度地图, Google地图, Here地图(未完成), Maptalks 的Vue3组件库
|
|
4
|
+
|
|
5
|
+
## 使用
|
|
6
|
+
|
|
7
|
+
安装:
|
|
8
|
+
|
|
9
|
+
```sh
|
|
10
|
+
pnpm install tg-map-vue3
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
使用:
|
|
14
|
+
|
|
15
|
+
```vue
|
|
16
|
+
<template>
|
|
17
|
+
<TgMap> </TgMap>
|
|
18
|
+
</template>
|
|
19
|
+
<script lang="ts" setup>
|
|
20
|
+
import { TgMap } from 'tg-map-vue3'
|
|
21
|
+
// 需要手动导入样式文件
|
|
22
|
+
import 'tg-map-vue3/dist/tg-map.css'
|
|
23
|
+
</script>
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## 发布
|
|
27
|
+
|
|
28
|
+
在npm上, 登录[transcode-group](https://www.npmjs.com/~transcode-group)帐号后, 可以发布该项目的所有库
|
|
29
|
+
|
|
30
|
+
```sh
|
|
31
|
+
pnpm -r publish
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## 开发
|
|
35
|
+
|
|
36
|
+
### 初始化仓库
|
|
37
|
+
|
|
38
|
+
```sh
|
|
39
|
+
# 拉取本仓库
|
|
40
|
+
git clone https://github.com/TranscodeGroup/tg-map.git
|
|
41
|
+
# 进入本地仓库目录
|
|
42
|
+
cd tg-map
|
|
43
|
+
# 安装依赖
|
|
44
|
+
pnpm install
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
其他项目若需要引用本地开发中的tg-map, 可以根据需要链接tg-map-vue3/tg-map-core:
|
|
48
|
+
|
|
49
|
+
```sh
|
|
50
|
+
# 使用相对路径链接tg-map-vue3包
|
|
51
|
+
pnpm link ../tg-map
|
|
52
|
+
# 使用相对路径链接tg-map-core包
|
|
53
|
+
pnpm link ../tg-map/packages/tg-map-core
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### 构建
|
|
57
|
+
|
|
58
|
+
```sh
|
|
59
|
+
# 修改代码后要重新构建
|
|
60
|
+
pnpm run build
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## 其他
|
|
64
|
+
|
|
65
|
+
```sh
|
|
66
|
+
pnpm install
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### Compile and Hot-Reload for Development
|
|
70
|
+
|
|
71
|
+
```sh
|
|
72
|
+
pnpm run dev
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### Type-Check, Compile and Minify for Production
|
|
76
|
+
|
|
77
|
+
```sh
|
|
78
|
+
pnpm run build
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### Lint with [ESLint](https://eslint.org/)
|
|
82
|
+
|
|
83
|
+
```sh
|
|
84
|
+
pnpm run lint
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### Customize configuration
|
|
88
|
+
|
|
89
|
+
See [Vite Configuration Reference](https://vitejs.dev/config/).
|
|
90
|
+
|
|
91
|
+
## 参考文档
|
|
92
|
+
|
|
93
|
+
- [百度Javascript API v3.0][]: 老版, [类参考][baidu_ref3]
|
|
94
|
+
- [百度Javascript API GL][]: 新的基于WebGL的实现, [类参考][baidu_ref]
|
|
95
|
+
- [Google Maps Javascript API][]: Google地图, [类参考][google_ref]
|
|
96
|
+
- [maptalks][]: 自绘地图, [类参考][maptalks_ref]
|
|
97
|
+
|
|
98
|
+
[Google Maps Javascript API]: https://developers.google.com/maps/documentation/javascript
|
|
99
|
+
[google_ref]: https://developers.google.com/maps/documentation/javascript/reference
|
|
100
|
+
[百度Javascript API v3.0]: https://lbsyun.baidu.com/index.php?title=jspopular3.0
|
|
101
|
+
[baidu_ref3]: https://mapopen-pub-jsapi.bj.bcebos.com/jsapi/reference/jsapi_reference_3_0.html
|
|
102
|
+
[百度Javascript API GL]: https://lbsyun.baidu.com/index.php?title=jspopularGL
|
|
103
|
+
[baidu_ref]: https://mapopen-pub-jsapi.bj.bcebos.com/jsapi/reference/jsapi_webgl_1_0.html
|
|
104
|
+
[maptalks]: https://maptalks.org/
|
|
105
|
+
[maptalks_ref]: https://maptalks.org/maptalks.js/api/1.x/Map.html
|
|
@@ -24,9 +24,11 @@ declare const TgMarkerClusterer: import("vue").DefineComponent<import("vue").Ext
|
|
|
24
24
|
}>, {
|
|
25
25
|
clusterer: MarkerClusterer;
|
|
26
26
|
markers: MarkerOverlay[];
|
|
27
|
+
pendingMarkers: MarkerOverlay[];
|
|
27
28
|
}, {}, {}, {
|
|
28
29
|
/** TgMarker有可能在该组件未初始化之前调用, 需要通过该方法判断 */
|
|
29
30
|
isInitiated(): boolean;
|
|
31
|
+
performAddMarkers(): void;
|
|
30
32
|
onAddMarker(marker: MarkerOverlay): void;
|
|
31
33
|
onRemoveMarker(marker: MarkerOverlay): void;
|
|
32
34
|
}, import("vue").DefineComponent<{}, {}, {}, {}, {
|
package/dist/tg-map.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const h=require("tg-commons"),s=require("tg-map-core"),r=require("vue");require("tg-map-core/dist/tg-map-core.css");function c(e,t){return{type:String,default:t,validator:i=>Object.values(e).includes(i)}}function I(e,t){return{type:String,default:t,validator:i=>e.includes(i)}}function m(e){return{type:e,required:!0}}function o(e,t){return{type:e,default:t}}function N(e){const t={};return Object.entries(e).forEach(([i,n])=>{const a=`__${i}`;t[i]={get(){const l=this[a];return l===void 0?n:l},set(l){this[a]=l}}}),t}const b={enumerable:!0,configurable:!0,get:h.noop,set:h.noop};function E(e){return Object.keys(e).forEach(t=>{const i=e[t];let n=!1;typeof i=="function"?(b.get=i,b.set=h.noop,n=!0):typeof i=="object"&&typeof i.get=="function"&&(b.get=i.get,b.set=i.set,n=!0),n&&(e[t]=Object.defineProperty(e,t,b))}),e}function x(e){return E(e)}function $(){return r.createCommentVNode()}function C(e,t){const i=e.$options[t];if(i)for(const n of i)n.call(e)}function z(e,t){for(const i of e)if(i.$options.name===t.name)return i}function D(e,t){if(!e.default)return;const i=e.default();for(const n of i)if((n==null?void 0:n.type).name===t.name)return n}function M(e,t){const i={},n={},a={};return Object.keys(e).forEach(l=>{l.startsWith("on")?i[s.Strings.pascal2kebab(l.substring(2))]=e[l]:n[l]=e[l]}),t&&Object.keys(t).forEach(l=>{l.startsWith("on")&&(a[s.Strings.pascal2kebab(l.substring(2))]=t[l])}),{binds:n,listeners:i,listenerProps:a}}function u(e,t){return r.computed(()=>M(e,t))}function d(){return Function}const V=()=>{let e,t;function i(a){console.log(a),e=a&&a.type,t=Date.now()}function n(a){((a&&a.type)!==e||Date.now()-(t??0)>1e3)&&i(a)}return{eventLog:i,eventLogLess:n}};function k(e,t){return(e==null?void 0:e.$options.name)===t.name}function w(e,t){return k(e,t)?e:void 0}function P(e,t,i){let n=t;for(;n;){if(k(n,e))return n;if(i&&k(n,i))return;n=n.$parent}}const T="$map",v="onCreate",g="onDestroy",p=r.defineComponent({inject:[T],mounted(){C(this,v)},beforeUnmount(){C(this,g)},methods:{recreate(){C(this,g),C(this,v)}},render(){return $()}}),W={type:c(s.TgMapType,s.TgMapType.google),center:m(s.LatLng),centerSyncDelay:o(Number,300),currentCenter:o(s.LatLng),lastCenter:o(s.LatLng),zoom:m(Number),infoWindowMode:I(s.InfoWindowModeValues),gestureHandling:c(s.GestureHandlingOptions),fractionalZoom:o(Boolean),minZoom:o(Number),maxZoom:o(Number),mapStyle:o(Object),mapTypeId:c(s.BuildInMapTypeId),mapType:o(Object),hideLogo:o(Boolean),onLoad:d(),"onUpdate:center":d(),"onUpdate:current-center":d(),"onUpdate:last-center":d(),"onUpdate:map-type":d(),"onUpdate:map-type-id":d(),"onUpdate:zoom":d(),onError:d()},R=r.defineComponent({name:"tg-map",provide(){return{[T]:r.computed(()=>this.map)}},inheritAttrs:!1,props:W,emits:void 0,setup(e,{attrs:t}){return{attrs:u(t,e),centerSyncTimeoutId:void 0}},data(){return{map:h.typed(),isDestroyed:!1}},computed:{propsJson(){return s.Objects.toJsonSafely(this.$props)}},watch:{gestureHandling(e){var t;e&&((t=this.map)==null||t.setGestureHandling(s.unwrapStringEnumValue(e,s.GestureHandlingOptions)))},minZoom(e){var t;(t=this.map)==null||t.setMinZoom(e)},maxZoom(e){var t;(t=this.map)==null||t.setMaxZoom(e)},mapStyle(e){var t;(t=this.map)==null||t.setMapStyle(e)},mapTypeId(e){var t;e&&((t=this.map)==null||t.setBuildInMapTypeId(s.unwrapStringEnumValue(e,s.BuildInMapTypeId)))},mapType(e){var t;(t=this.map)==null||t.setMapType(e??s.MapType.NORMAL)},hideLogo(e){var t;(t=this.map)==null||t.setHideLogo(e??!1)},fractionalZoom(e){var t;(t=this.map)==null||t.setFractionalZoom(e??!1)}},async mounted(){const e=s.unwrapStringEnumValue(this.type,s.TgMapType);try{await s.loadCachedMap(e)}catch(a){this.$emit("error",a);return}if(this.isDestroyed){console.warn(`tg-map(type=${e})已销毁, 不需要继续执行`);return}const t=s.TgMapFactory.createMap(e,this.$refs.map,{center:this.center,zoom:this.zoom,infoWindowMode:this.infoWindowMode,gestureHandling:s.unwrapStringEnumValue(this.gestureHandling,s.GestureHandlingOptions),minZoom:this.minZoom,maxZoom:this.maxZoom,mapStyle:this.mapStyle,buildInMapTypeId:s.unwrapStringEnumValue(this.mapTypeId,s.BuildInMapTypeId),hideLogo:this.hideLogo,fractionalZoom:this.fractionalZoom});if(this.map=r.markRaw(t),this.mapType&&t.setMapType(this.mapType),"ready"in this.attrs.listeners&&console.error("地图载入完成的事件已经从ready改为了load, 请手动修改"),s.bindEvents(this.attrs.listeners,t,["load"]),this.$emit("load",t),r.watch([()=>this.zoom,()=>this.center],([a,l],[y,A])=>{a!==y&&t.setZoom(a),l!==A&&(t.getCenter().equals(l)||t.setCenter(l))}),this.attrs.listenerProps["update:center"]){const a=()=>this.$emit("update:center",t.getCenter());t.addEventListener("center-changed",()=>{this.centerSyncDelay>0?(clearTimeout(this.centerSyncTimeoutId),this.centerSyncTimeoutId=setTimeout(a,this.centerSyncDelay)):a()})}this.attrs.listenerProps["update:current-center"]&&(this.$emit("update:current-center",this.center),t.addEventListener("center-changed",()=>{this.$emit("update:current-center",t.getCenter())})),this.attrs.listenerProps["update:zoom"]&&t.addEventListener("zoom-changed",()=>{this.$emit("update:zoom",t.getZoom())});const i=this.attrs.listenerProps["update:map-type"],n=this.attrs.listenerProps["update:map-type-id"];(i||n)&&t.addEventListener("map-type-changed",()=>{const a=t.getMapType();i&&this.$emit("update:map-type",a),n&&this.$emit("update:map-type-id",a.id)})},unmounted(){this.isDestroyed=!0,this.map&&(this.attrs.listenerProps["update:last-center"]&&this.$emit("update:last-center",this.map.getCenter()),this.attrs.listenerProps["update:center"]&&(clearTimeout(this.centerSyncTimeoutId),this.$emit("update:center",this.map.getCenter())))},methods:{}}),f=(e,t)=>{const i=e.__vccOpts||e;for(const[n,a]of t)i[n]=a;return i};function Z(e,t,i,n,a,l){return r.openBlock(),r.createElementBlock("div",r.mergeProps({class:"tg-map"},e.attrs.binds),[r.createElementVNode("div",{ref:"map",class:r.normalizeClass({"tg-map__map":!0,[`tg-map__map--hide-logo-${e.type}`]:e.hideLogo})},null,2),r.createCommentVNode("",!0),e.map?r.renderSlot(e.$slots,"default",{key:1}):r.createCommentVNode("",!0),r.renderSlot(e.$slots,"overlay")],16)}const _=f(R,[["render",Z]]),U=r.defineComponent({name:"tg-map-widget",props:{left:{type:[Number,String],default:null},top:{type:[Number,String],default:null},right:{type:[Number,String],default:null},bottom:{type:[Number,String],default:null}},computed:{topValue(){return this.top==null&&this.bottom==null?0:this.top}},methods:{dimen:s.dimen}});function j(e,t,i,n,a,l){return r.openBlock(),r.createElementBlock("div",{class:r.normalizeClass(e.$options.name),style:r.normalizeStyle({left:e.dimen(e.left),top:e.dimen(e.topValue),right:e.dimen(e.right),bottom:e.dimen(e.bottom)})},[r.renderSlot(e.$slots,"default")],6)}const H=f(U,[["render",j]]),F=r.defineComponent({name:"tg-custom-control",mixins:[p],props:{position:c(s.ControlPosition,s.ControlPosition.RIGHT_BOTTOM)},setup(){return{control:h.lateinit()}},watch:{position(){this.recreate()}},onCreate(){w(this.$parent,_)||console.warn("请将tg-custom-control放到tg-map中");const{$el:e}=this,t=class extends s.CustomControl{onCreateElement(){return e}};this.control=new t(s.unwrapStringEnumValue(this.position,s.ControlPosition)),this.$map.addCustomControl(this.control)},onDestroy(){this.$map.removeCustomControl(this.control)}});function q(e,t,i,n,a,l){return r.openBlock(),r.createElementBlock("div",{class:r.normalizeClass(e.$options.name)},[r.renderSlot(e.$slots,"default")],2)}const G=f(F,[["render",q]]),X=r.defineComponent({name:"tg-map-type-control",mixins:[p],props:{position:c(s.ControlPosition,s.ControlPosition.TOP_LEFT),type:c(s.MapTypeControlType),mapTypes:o(Array)},setup(){return{control:h.lateinit()}},watch:{position(e){this.control.setPosition(e)},type(){this.recreate()},mapTypes:{handler(){this.recreate()},deep:!0}},onCreate(){this.control=this.$map.createMapTypeControl(s.unwrapStringEnumValue(this)),this.$map.addControl(this.control)},onDestroy(){this.$map.removeControl(this.control)}}),K=r.defineComponent({name:"tg-scale-control",mixins:[p],props:{position:c(s.ControlPosition,s.ControlPosition.BOTTOM_RIGHT)},setup(){return{control:h.lateinit()}},watch:{position(e){this.control.setPosition(e)}},onCreate(){this.control=this.$map.createScaleControl(s.unwrapStringEnumValue(this)),this.$map.addControl(this.control)},onDestroy(){this.$map.removeControl(this.control)}});function B(){var i;const e=(i=r.getCurrentInstance())==null?void 0:i.type;let t=(e==null?void 0:e.name)??(e==null?void 0:e.__name);if(!t){const n=e==null?void 0:e.__file;n&&(t=h.path.basename(n,".vue"))}return t}function O(){const e=r.inject(T);let t,i;return e==null&&h.throwError(`<${B()||"unknown"}>必须作为<tg-map>的子代组件`),{mapRef:e,get map(){return e.value??h.throwError("map尚未初始化")},[v](n){r.onMounted(n),t&&h.throwError(`${v}只能调用一次`),t=n},[g](n){r.onBeforeUnmount(n),i&&h.throwError(`${g}只能调用一次`),i=n},recreate(){i==null||i(),t==null||t()}}}const J=r.defineComponent({name:"tg-street-view-control",props:{position:c(s.ControlPosition,s.ControlPosition.RIGHT_BOTTOM)},setup(e){let t=h.lateinit();const{map:i,onCreate:n,onDestroy:a}=O();return n(()=>{t=i.createStreetViewControl(s.unwrapStringEnumValue(e)),i.addControl(t)}),a(()=>{i.removeControl(t)}),r.watch(()=>e.position,l=>{t.setPosition(s.unwrapStringEnumValue(l,s.ControlPosition))}),$}}),Y=r.defineComponent({name:"tg-zoom-control",props:{position:c(s.ControlPosition,s.ControlPosition.RIGHT_BOTTOM),showZoomLevel:o(Boolean)},setup(e){let t=h.lateinit();const{map:i,onCreate:n,onDestroy:a}=O();return n(()=>{t=i.createZoomControl(s.unwrapStringEnumValue(e)),i.addControl(t)}),a(()=>{i.removeControl(t)}),r.watch(()=>e.position,l=>{t.setPosition(s.unwrapStringEnumValue(l,s.ControlPosition))}),r.watch(()=>e.showZoomLevel,l=>{t.setShowZoomLevel(l??!0)}),$}}),Q=r.defineComponent({name:"tg-heatmap",props:{maxIntensity:o(Number),gradient:o(Object),opacity:o(Number),radius:o(Number),data:m(Array)},setup(e){const{map:t,onCreate:i,onDestroy:n}=O();let a=h.lateinit();return i(()=>{a=t.createHeatmap(e)}),n(()=>{a.remove()}),r.watch(()=>e.data,l=>a.setData(l)),r.watch([()=>e.maxIntensity,()=>e.gradient,()=>e.opacity,()=>e.radius],()=>a.setOptions(e)),$}}),ee=r.defineComponent({name:"tg-marker-clusterer",mixins:[p],props:{gridSize:o(Number),maxZoom:o(Number),minClusterSize:o(Number),averageCenter:o(Boolean),styles:o(Array),stylesIndexCalculator:o(Function),zIndex:o(Number)},setup(){return{clusterer:h.lateinit(),markers:h.typed([])}},watch:{gridSize(){this.recreate()},maxZoom(){this.recreate()},minClusterSize(){this.recreate()},averageCenter(){this.recreate()},styles:{handler(){this.recreate()},deep:!0},stylesIndexCalculator(){this.recreate()},zIndex(){this.recreate()}},onCreate(){this.clusterer=this.$map.createMarkerClusterer(this)},onDestroy(){this.clusterer.clearMarkers(!0)},methods:{isInitiated(){return this.clusterer!=null},onAddMarker(e){this.markers.push(e),this.isInitiated()&&this.clusterer.addMarker(e)},onRemoveMarker(e){this.isInitiated()&&this.clusterer.removeMarker(e),h.Arrays.remove(this.markers,e)}}});function te(e,t,i,n,a,l){return r.openBlock(),r.createElementBlock("div",{class:r.normalizeClass(e.$options.name)},[r.renderSlot(e.$slots,"default")],2)}const L=f(ee,[["render",te]]),oe=r.defineComponent({name:"tg-traffic-layer",mixins:[p],setup(){return{layer:h.lateinit()}},watch:{},onCreate(){this.layer=new s.TrafficLayer,this.$map.addLayer(this.layer)},onDestroy(){this.$map.removeLayer(this.layer)}}),re=r.defineComponent({name:"tg-circle",mixins:[p],inheritAttrs:!1,props:{center:m(s.LatLng),radius:m(Number),clickable:o(Boolean),editable:o(Boolean),strokeColor:o(String),strokeOpacity:o(Number),strokeWeight:o(Number),visible:o(Boolean),zIndex:o(Number),fillColor:o(String),fillOpacity:o(Number),"onUpdate:center":d(),"onUpdate:radius":d()},emits:void 0,setup(e,{attrs:t}){return{attrs:u(t,e),overlay:h.lateinit(),emittedRadius:void 0,emittedCenter:void 0}},watch:{center(e){if(this.emittedCenter!=null){const t=this.emittedCenter;if(this.emittedCenter=void 0,t===r.toRaw(e))return}this.overlay.setCenter(e)},radius(e){if(this.emittedRadius!=null){const t=this.emittedRadius;if(this.emittedRadius=void 0,t===e)return}this.overlay.setRadius(e)},clickable(){this.recreate()},editable(e){this.overlay.setEditable(e)},strokeColor(e){this.overlay.setStrokeColor(e)},strokeOpacity(e){this.overlay.setStrokeOpacity(e)},strokeWeight(e){this.overlay.setStrokeWeight(e)},fillColor(e){this.overlay.setFillColor(e)},fillOpacity(e){this.overlay.setFillOpacity(e)},visible(e){this.overlay.setVisible(e)},zIndex(e){this.overlay.setZIndex(e)}},onCreate(){this.overlay=this.$map.createCircle(this),this.$map.addOverlay(this.overlay),s.bindEvents(this.attrs.listeners,this.overlay),this.attrs.listenerProps["update:center"]&&this.overlay.addEventListener("center-changed",()=>{this.$emit("update:center",this.emittedCenter=this.overlay.getCenter())}),this.attrs.listenerProps["update:radius"]&&this.overlay.addEventListener("radius-changed",()=>{this.$emit("update:radius",this.emittedRadius=this.overlay.getRadius())})},onDestroy(){this.$map.removeOverlay(this.overlay)}});class ie extends s.ElementOverlay{constructor(t,i,n,a){super(t,i),this.content=n,this.position=a}onCreate(){return this.content}onDraw(t){const i=t.fromLatLngToOverlayPoint(this.position);this.content.style.left=i.x+"px",this.content.style.top=i.y+"px"}setPosition(t){this.position=t,this.draw()}}const se=r.defineComponent({name:"tg-element-overlay",mixins:[p],props:{mapPane:c(s.MapPane,s.MapPane.overlayMouseTarget),position:m(s.LatLng)},setup(){return{overlay:h.lateinit()}},watch:{position(e){this.overlay.setPosition(e)},mapPane(){this.recreate()}},methods:{content(){return this.$el}},onCreate(){this.overlay=new ie(this.$map,s.unwrapStringEnumValue(this),this.content(),this.position),this.$map.addElementOverlay(this.overlay)},onDestroy(){this.$map.removeElementOverlay(this.overlay)}});function ne(e,t,i,n,a,l){return r.openBlock(),r.createElementBlock("div",r.mergeProps({class:e.$options.name},e.$attrs),[r.renderSlot(e.$slots,"default")],16)}const ae=f(se,[["render",ne]]),le={position:m(s.LatLng),title:o(String),label:o(Object),icon:o(Object),clickable:o(Boolean),draggable:o(Boolean),crossOnDrag:o(Boolean),cursor:o(String),zIndex:o(Number),visible:o(Boolean),normalizePositionForBaidu:o(Boolean),autoAddToClusterer:o(Boolean,!0),"onUpdate:position":d()},he=r.defineComponent({name:"tg-marker",mixins:[p],inheritAttrs:!1,props:le,emits:void 0,setup(e,{attrs:t}){return{attrs:u(t,e),marker:h.lateinit(),labelOverlay:h.typed(),info:h.typed(),emittedPosition:void 0,autoAddToClustererWhenCreate:e.autoAddToClusterer}},watch:{position(e){if(this.emittedPosition!=null){const t=this.emittedPosition;if(this.emittedPosition=void 0,t===r.toRaw(e))return}this.marker.setPosition(e)},title(e){this.marker.setTitle(e)},label(e,t){h.deepEqual(e,t)||(e?this.marker.setLabel(e):this.recreate())},icon(e){e?this.marker.setIcon(e):this.recreate()},clickable(e){this.marker instanceof s.BaiduMarker?this.recreate():this.marker.setClickable(e)},draggable(e){this.marker.setDraggable(e)},crossOnDrag(){this.recreate()},cursor(){this.recreate()},zIndex(e){this.marker instanceof s.BaiduMarker?this.recreate():this.marker.setZIndex(e)},visible(e){this.marker.setVisible(e)},normalizePositionForBaidu(){this.recreate()},autoAddToClusterer(){this.recreate()}},onCreate(){this.marker=this.$map.createMarker(this),this.labelOverlay&&this.marker.attachLabelOverlay(this.labelOverlay.overlay),this.$clusterer()&&this.autoAddToClusterer?this.$clusterer().onAddMarker(this.marker):this.$map.addOverlay(this.marker),this.autoAddToClustererWhenCreate=this.autoAddToClusterer,this.info&&this.info.show&&this.info.overlay.open(this.marker),s.bindEvents(this.attrs.listeners,this.marker),this.attrs.listenerProps["update:position"]&&this.marker.addEventListener("dragend",e=>{this.$emit("update:position",this.emittedPosition=e.position)})},onDestroy(){this.$clusterer()&&this.autoAddToClustererWhenCreate?this.$clusterer().onRemoveMarker(this.marker):this.$map.removeOverlay(this.marker)},methods:{$clusterer(){return w(this.$parent,L)},onAddLabel(e){this.labelOverlay=e,this.marker&&this.marker.attachLabelOverlay(e.overlay)},onRemoveLabel(e){this.marker.attachLabelOverlay(void 0),this.labelOverlay=void 0},onAddInfo(e){this.info=e,this.marker&&e.show&&e.overlay.open(this.marker)},onRemoveInfo(e){e.overlay.close(),this.info=void 0},onInfoShowChanged(e,t){t?e.overlay.open(this.marker):e.overlay.close()}}});function de(e,t,i,n,a,l){return r.renderSlot(e.$slots,"default")}const S=f(he,[["render",de]]),pe=r.defineComponent({name:"tg-info-box",mixins:[p],inheritAttrs:!1,props:{show:m(Boolean),position:o(s.LatLng),offset:o(Object),maxWidth:o(Number),borderClass:o(String),zIndex:o(Number),disableAutoPan:o(Boolean),"onUpdate:show":d()},emits:void 0,setup(e,{attrs:t}){return{attrs:u(t,e),overlay:h.lateinit()}},watch:{show(e){this.$marker()?this.$marker().onInfoShowChanged(this,e):e?this.overlay.open():this.overlay.close()},position(e){this.overlay.setPosition(e)},offset(){this.recreate()},maxWidth(e){this.overlay.setMaxWidth(e)},borderClass(){this.recreate()},zIndex(e){this.overlay.setZIndex(e)},disableAutoPan(){this.recreate()}},onCreate(){this.overlay=this.$map.createInfoBox(this.getOptions()),this.$marker()?this.$marker().onAddInfo(this):this.show&&this.overlay.open(),this.attrs.listenerProps["update:show"]&&this.overlay.addEventListener("closeclick",()=>{this.$emit("update:show",!1)}),s.bindEvents(this.attrs.listeners,this.overlay)},onDestroy(){this.$marker()?this.$marker().onRemoveInfo(this):this.overlay.close()},methods:{getOptions(){return{content:this.content(),position:this.position,offset:this.offset,zIndex:this.zIndex,maxWidth:this.maxWidth,borderClass:this.borderClass,disableAutoPan:this.disableAutoPan}},content(){return this.$el},$marker(){return P(S,this.$parent,_)},open(e){this.overlay.open(e)},close(){this.overlay.close()}}});function me(e,t,i,n,a,l){return r.openBlock(),r.createElementBlock("div",r.mergeProps({class:e.$options.name},e.attrs.binds),[r.renderSlot(e.$slots,"default")],16)}const ce=f(pe,[["render",me]]),ue=r.defineComponent({name:"tg-info-window",mixins:[p],inheritAttrs:!1,props:{show:m(Boolean),position:o(s.LatLng),maxWidth:o(Number),offset:o(Object),disableAutoPan:o(Boolean),"onUpdate:show":d()},emits:void 0,setup(e,{attrs:t}){return{attrs:u(t,e),overlay:h.lateinit()}},watch:{show(e){this.$marker()?this.$marker().onInfoShowChanged(this,e):e?this.overlay.open():this.overlay.close()},position(e){this.overlay.setPosition(e)},maxWidth(){this.recreate()},offset(){this.recreate()},disableAutoPan(){this.recreate()}},methods:{content(){return this.$el},$marker(){return P(S,this.$parent,_)},getOptions(){return{content:this.content(),position:this.position,maxWidth:this.maxWidth,offset:this.offset,disableAutoPan:this.disableAutoPan}}},onCreate(){this.overlay=this.$map.createInfoWindow(this.getOptions()),this.$marker()?this.$marker().onAddInfo(this):this.show&&this.overlay.open(),this.overlay.addEventListener("open",()=>{this.$emit("update:show",!0)}),this.overlay.addEventListener("close",()=>{this.$emit("update:show",!1)}),s.bindEvents(this.attrs.listeners,this.overlay)},onDestroy(){this.$marker()?this.$marker().onRemoveInfo(this):this.overlay.close()}});function fe(e,t,i,n,a,l){return r.withDirectives((r.openBlock(),r.createElementBlock("div",r.mergeProps({class:e.$options.name},e.attrs.binds),[r.renderSlot(e.$slots,"default")],16)),[[r.vShow,e.show]])}const ye=f(ue,[["render",fe]]),ve=r.defineComponent({name:"tg-label",mixins:[p],inheritAttrs:!1,props:{position:o(s.LatLng),offset:o(Object),zIndex:o(Number),mapPane:c(s.MapPane)},emits:void 0,setup(e,{attrs:t}){return{attrs:u(t),overlay:h.lateinit()}},watch:{position(e){this.overlay.setPosition(e)},offset(e){this.overlay.setOffset(e)},zIndex(e){this.overlay.setZIndex(e)},visible(e){this.overlay.setVisible(e)},mapPane(){this.recreate()}},methods:{content(){return this.$el},marker(){var e;return(e=this.$marker())==null?void 0:e.marker},$marker(){return P(S,this.$parent,_)},getOptions(){return{content:this.content(),position:this.position,offset:this.offset,zIndex:this.zIndex,mapPane:s.unwrapStringEnumValue(this.mapPane,s.MapPane)}}},onCreate(){this.overlay=this.$map.createLabel(this.getOptions()),this.$marker()?this.$marker().onAddLabel(this):this.$map.addOverlay(this.overlay),s.bindEvents(this.attrs.listeners,this.overlay)},onDestroy(){this.$marker()?this.$marker().onRemoveLabel(this):this.$map.removeOverlay(this.overlay)}});function ge(e,t,i,n,a,l){return r.openBlock(),r.createElementBlock("div",r.mergeProps({class:e.$options.name},e.attrs.binds),[r.renderSlot(e.$slots,"default")],16)}const be=f(ve,[["render",ge]]),Ce={paths:m(Array),clickable:o(Boolean),editable:o(Boolean),strokeColor:o(String),strokeOpacity:o(Number),strokeWeight:o(Number),visible:o(Boolean),zIndex:o(Number),fillColor:o(String),fillOpacity:o(Number),"onUpdate:paths":d()},$e=r.defineComponent({name:"tg-polygon",mixins:[p],inheritAttrs:!1,props:Ce,emits:void 0,setup(e,{attrs:t}){return{attrs:u(t,e),overlay:h.lateinit(),emittedPaths:void 0}},watch:{paths:{handler(e){if(this.emittedPaths!=null){const t=this.emittedPaths;if(this.emittedPaths=void 0,t.length===e.length&&t.every((i,n)=>i===r.toRaw(e[n])))return}this.overlay.setPaths(e)},deep:!0},clickable(){this.recreate()},editable(e){this.overlay.setEditable(e)},strokeColor(e){this.overlay.setStrokeColor(e)},strokeOpacity(e){this.overlay.setStrokeOpacity(e)},strokeWeight(e){this.overlay.setStrokeWeight(e)},fillColor(e){this.overlay.setFillColor(e)},fillOpacity(e){this.overlay.setFillOpacity(e)},visible(e){this.overlay.setVisible(e)},zIndex(e){this.overlay.setZIndex(e)}},onCreate(){this.overlay=this.$map.createPolygon(this),this.$map.addOverlay(this.overlay),s.bindEvents(this.attrs.listeners,this.overlay),this.attrs.listenerProps["update:paths"]&&this.overlay.addEventListener("paths-edited",()=>{this.$emit("update:paths",this.emittedPaths=this.overlay.getPaths())})},onDestroy(){this.$map.removeOverlay(this.overlay)}}),_e=r.defineComponent({name:"tg-polyline",mixins:[p],inheritAttrs:!1,props:{path:m(Array),icons:o(Array),clickable:o(Boolean),editable:o(Boolean),strokeColor:o(String),strokeOpacity:o(Number),strokeWeight:o(Number),visible:o(Boolean),zIndex:o(Number),"onUpdate:path":d()},emits:void 0,setup(e,{attrs:t}){return{attrs:u(t,e),overlay:h.lateinit(),emittedPath:void 0}},watch:{path:{handler(e){if(this.emittedPath!=null){const t=this.emittedPath;if(this.emittedPath=void 0,t===r.toRaw(e))return}this.overlay.setPath(e)},deep:!0},icons:{handler(){this.recreate()},deep:!0},clickable(){this.recreate()},editable(e){this.overlay.setEditable(e)},strokeColor(e){this.overlay.setStrokeColor(e)},strokeOpacity(e){this.overlay.setStrokeOpacity(e)},strokeWeight(e){this.overlay.setStrokeWeight(e)},visible(e){this.overlay.setVisible(e)},zIndex(e){this.overlay.setZIndex(e)}},onCreate(){this.overlay=this.$map.createPolyline(this),this.$map.addOverlay(this.overlay),s.bindEvents(this.attrs.listeners,this.overlay),this.attrs.listenerProps["update:path"]&&this.overlay.addEventListener("path-edited",()=>{this.$emit("update:path",this.emittedPath=this.overlay.getPath())})},onDestroy(){this.overlay.remove()}}),ke=r.defineComponent({name:"tg-rectangle",mixins:[p],inheritAttrs:!1,props:{bounds:m(Object),clickable:o(Boolean),editable:o(Boolean),strokeColor:o(String),strokeOpacity:o(Number),strokeWeight:o(Number),visible:o(Boolean),zIndex:o(Number),fillColor:o(String),fillOpacity:o(Number),"onUpdate:bounds":d()},emits:void 0,setup(e,{attrs:t}){return{attrs:u(t,e),overlay:h.lateinit(),emittedBounds:void 0}},watch:{bounds(e){if(this.emittedBounds!=null){const t=this.emittedBounds;if(this.emittedBounds=void 0,t.equals(e))return}this.overlay.setBounds(e)},clickable(){this.recreate()},editable(e){this.overlay.setEditable(e)},strokeColor(e){this.overlay.setStrokeColor(e)},strokeOpacity(e){this.overlay.setStrokeOpacity(e)},strokeWeight(e){this.overlay.setStrokeWeight(e)},fillColor(e){this.overlay.setFillColor(e)},fillOpacity(e){this.overlay.setFillOpacity(e)},visible(e){this.overlay.setVisible(e)},zIndex(e){this.overlay.setZIndex(e)}},onCreate(){this.overlay=this.$map.createRectangle(this),this.$map.addOverlay(this.overlay),s.bindEvents(this.attrs.listeners,this.overlay),this.attrs.listenerProps["update:bounds"]&&this.overlay.addEventListener("bounds-changed",()=>{this.$emit("update:bounds",this.emittedBounds=this.overlay.getBounds())})},onDestroy(){this.$map.removeOverlay(this.overlay)}}),Pe=["beforeUpdate","updated"],Te={install(e,t={}){if(t.enable!==!1){const i=r.defineComponent({beforeCreate(){const n=B()??"",l=(t.nameRegex||/^[A-Z]/).test(n)?y=>{t.hookNames?t.hookNames.includes(y)&&console.debug("[lifecycle]",n,y):Pe.includes(y)||console.debug("[lifecycle]",n,y)}:h.noop;l("beforeCreate"),this.__life_impl=l},created(){this.__life("created")},beforeMount(){this.__life("beforeMount")},mounted(){this.__life("mounted")},beforeUpdate(){this.__life("beforeUpdate")},updated(){this.__life("updated")},beforeUnmount(){this.__life("beforeUnmount")},unmounted(){this.__life("unmounted")},methods:{__life(n){this.__life_impl(n)}},onCreate(){this.__life("onCreate")},onDestroy(){this.__life("onDestroy")}});e.mixin(i)}}},Oe={install(e,t){s.setTgMapConfig(t);const i=e.config.optionMergeStrategies;i[v]=i[g]=(n,a)=>n?[...new Set([].concat(n,a))]:Array.isArray(a)?a:[a]}};exports.LifecycleLogPlugin=Te;exports.MIXIN_HOOK_CREATE=v;exports.MIXIN_HOOK_DESTROY=g;exports.MIXIN_MAP_NAME=T;exports.MapMixin=p;exports.TgCircle=re;exports.TgCustomControl=G;exports.TgElementOverlay=ae;exports.TgHeatmap=Q;exports.TgInfoBox=ce;exports.TgInfoWindow=ye;exports.TgLabel=be;exports.TgMap=_;exports.TgMapTypeControl=X;exports.TgMapWidget=H;exports.TgMarker=S;exports.TgMarkerClusterer=L;exports.TgPolygon=$e;exports.TgPolyline=_e;exports.TgRectangle=ke;exports.TgScaleControl=K;exports.TgStreetViewControl=J;exports.TgTrafficLayer=oe;exports.TgZoomControl=Y;exports.callHook=C;exports.computedSaveOnThis=N;exports.createEmptyVNode=$;exports.createPropertyObject=E;exports.createPropertyObjectTyped=x;exports.default=Oe;exports.eventProp=d;exports.extractVNodeFromSlotsByComponent=D;exports.findAncestorComponentByType=P;exports.findByComponentType=z;exports.isComponentByType=k;exports.optionalProp=o;exports.requiredProp=m;exports.safeAsComponent=w;exports.splitAttrs=M;exports.stringEnumProp=c;exports.stringUnionPropFromValues=I;exports.useEventLogMethods=V;exports.useSplittedAttrs=u;exports.useTgMapInner=O;Object.keys(s).forEach(e=>{e!=="default"&&!Object.prototype.hasOwnProperty.call(exports,e)&&Object.defineProperty(exports,e,{enumerable:!0,get:()=>s[e]})});
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const h=require("tg-commons"),s=require("tg-map-core"),r=require("vue");require("tg-map-core/dist/tg-map-core.css");function c(e,t){return{type:String,default:t,validator:i=>Object.values(e).includes(i)}}function w(e,t){return{type:String,default:t,validator:i=>e.includes(i)}}function m(e){return{type:e,required:!0}}function o(e,t){return{type:e,default:t}}function N(e){const t={};return Object.entries(e).forEach(([i,n])=>{const a=`__${i}`;t[i]={get(){const l=this[a];return l===void 0?n:l},set(l){this[a]=l}}}),t}const b={enumerable:!0,configurable:!0,get:h.noop,set:h.noop};function I(e){return Object.keys(e).forEach(t=>{const i=e[t];let n=!1;typeof i=="function"?(b.get=i,b.set=h.noop,n=!0):typeof i=="object"&&typeof i.get=="function"&&(b.get=i.get,b.set=i.set,n=!0),n&&(e[t]=Object.defineProperty(e,t,b))}),e}function x(e){return I(e)}function $(){return r.createCommentVNode()}function C(e,t){const i=e.$options[t];if(i)for(const n of i)n.call(e)}function z(e,t){for(const i of e)if(i.$options.name===t.name)return i}function D(e,t){if(!e.default)return;const i=e.default();for(const n of i)if((n==null?void 0:n.type).name===t.name)return n}function E(e,t){const i={},n={},a={};return Object.keys(e).forEach(l=>{l.startsWith("on")?i[s.Strings.pascal2kebab(l.substring(2))]=e[l]:n[l]=e[l]}),t&&Object.keys(t).forEach(l=>{l.startsWith("on")&&(a[s.Strings.pascal2kebab(l.substring(2))]=t[l])}),{binds:n,listeners:i,listenerProps:a}}function u(e,t){return r.computed(()=>E(e,t))}function d(){return Function}const V=()=>{let e,t;function i(a){console.log(a),e=a&&a.type,t=Date.now()}function n(a){((a&&a.type)!==e||Date.now()-(t??0)>1e3)&&i(a)}return{eventLog:i,eventLogLess:n}};function _(e,t){return(e==null?void 0:e.$options.name)===t.name}function S(e,t){return _(e,t)?e:void 0}function P(e,t,i){let n=t;for(;n;){if(_(n,e))return n;if(i&&_(n,i))return;n=n.$parent}}const T="$map",v="onCreate",g="onDestroy",p=r.defineComponent({inject:[T],mounted(){C(this,v)},beforeUnmount(){C(this,g)},methods:{recreate(){C(this,g),C(this,v)}},render(){return $()}}),W={type:c(s.TgMapType,s.TgMapType.google),center:m(s.LatLng),centerSyncDelay:o(Number,300),currentCenter:o(s.LatLng),lastCenter:o(s.LatLng),zoom:m(Number),infoWindowMode:w(s.InfoWindowModeValues),gestureHandling:c(s.GestureHandlingOptions),fractionalZoom:o(Boolean),minZoom:o(Number),maxZoom:o(Number),mapStyle:o(Object),mapTypeId:c(s.BuildInMapTypeId),mapType:o(Object),hideLogo:o(Boolean),onLoad:d(),"onUpdate:center":d(),"onUpdate:current-center":d(),"onUpdate:last-center":d(),"onUpdate:map-type":d(),"onUpdate:map-type-id":d(),"onUpdate:zoom":d(),onError:d()},R=r.defineComponent({name:"tg-map",provide(){return{[T]:r.computed(()=>this.map)}},inheritAttrs:!1,props:W,emits:void 0,setup(e,{attrs:t}){return{attrs:u(t,e),centerSyncTimeoutId:void 0}},data(){return{map:h.typed(),isDestroyed:!1}},computed:{propsJson(){return s.Objects.toJsonSafely(this.$props)}},watch:{gestureHandling(e){var t;e&&((t=this.map)==null||t.setGestureHandling(s.unwrapStringEnumValue(e,s.GestureHandlingOptions)))},minZoom(e){var t;(t=this.map)==null||t.setMinZoom(e)},maxZoom(e){var t;(t=this.map)==null||t.setMaxZoom(e)},mapStyle(e){var t;(t=this.map)==null||t.setMapStyle(e)},mapTypeId(e){var t;e&&((t=this.map)==null||t.setBuildInMapTypeId(s.unwrapStringEnumValue(e,s.BuildInMapTypeId)))},mapType(e){var t;(t=this.map)==null||t.setMapType(e??s.MapType.NORMAL)},hideLogo(e){var t;(t=this.map)==null||t.setHideLogo(e??!1)},fractionalZoom(e){var t;(t=this.map)==null||t.setFractionalZoom(e??!1)}},async mounted(){const e=s.unwrapStringEnumValue(this.type,s.TgMapType);try{await s.loadCachedMap(e)}catch(a){this.$emit("error",a);return}if(this.isDestroyed){console.warn(`tg-map(type=${e})已销毁, 不需要继续执行`);return}const t=s.TgMapFactory.createMap(e,this.$refs.map,{center:this.center,zoom:this.zoom,infoWindowMode:this.infoWindowMode,gestureHandling:s.unwrapStringEnumValue(this.gestureHandling,s.GestureHandlingOptions),minZoom:this.minZoom,maxZoom:this.maxZoom,mapStyle:this.mapStyle,buildInMapTypeId:s.unwrapStringEnumValue(this.mapTypeId,s.BuildInMapTypeId),hideLogo:this.hideLogo,fractionalZoom:this.fractionalZoom});if(this.map=r.markRaw(t),this.mapType&&t.setMapType(this.mapType),"ready"in this.attrs.listeners&&console.error("地图载入完成的事件已经从ready改为了load, 请手动修改"),s.bindEvents(this.attrs.listeners,t,["load"]),this.$emit("load",t),r.watch([()=>this.zoom,()=>this.center],([a,l],[y,A])=>{a!==y&&t.setZoom(a),l!==A&&(t.getCenter().equals(l)||t.setCenter(l))}),this.attrs.listenerProps["update:center"]){const a=()=>this.$emit("update:center",t.getCenter());t.addEventListener("center-changed",()=>{this.centerSyncDelay>0?(clearTimeout(this.centerSyncTimeoutId),this.centerSyncTimeoutId=setTimeout(a,this.centerSyncDelay)):a()})}this.attrs.listenerProps["update:current-center"]&&(this.$emit("update:current-center",this.center),t.addEventListener("center-changed",()=>{this.$emit("update:current-center",t.getCenter())})),this.attrs.listenerProps["update:zoom"]&&t.addEventListener("zoom-changed",()=>{this.$emit("update:zoom",t.getZoom())});const i=this.attrs.listenerProps["update:map-type"],n=this.attrs.listenerProps["update:map-type-id"];(i||n)&&t.addEventListener("map-type-changed",()=>{const a=t.getMapType();i&&this.$emit("update:map-type",a),n&&this.$emit("update:map-type-id",a.id)})},unmounted(){this.isDestroyed=!0,this.map&&(this.attrs.listenerProps["update:last-center"]&&this.$emit("update:last-center",this.map.getCenter()),this.attrs.listenerProps["update:center"]&&(clearTimeout(this.centerSyncTimeoutId),this.$emit("update:center",this.map.getCenter())))},methods:{}}),f=(e,t)=>{const i=e.__vccOpts||e;for(const[n,a]of t)i[n]=a;return i};function Z(e,t,i,n,a,l){return r.openBlock(),r.createElementBlock("div",r.mergeProps({class:"tg-map"},e.attrs.binds),[r.createElementVNode("div",{ref:"map",class:r.normalizeClass({"tg-map__map":!0,[`tg-map__map--hide-logo-${e.type}`]:e.hideLogo})},null,2),r.createCommentVNode("",!0),e.map?r.renderSlot(e.$slots,"default",{key:1}):r.createCommentVNode("",!0),r.renderSlot(e.$slots,"overlay")],16)}const k=f(R,[["render",Z]]),U=r.defineComponent({name:"tg-map-widget",props:{left:{type:[Number,String],default:null},top:{type:[Number,String],default:null},right:{type:[Number,String],default:null},bottom:{type:[Number,String],default:null}},computed:{topValue(){return this.top==null&&this.bottom==null?0:this.top}},methods:{dimen:s.dimen}});function j(e,t,i,n,a,l){return r.openBlock(),r.createElementBlock("div",{class:r.normalizeClass(e.$options.name),style:r.normalizeStyle({left:e.dimen(e.left),top:e.dimen(e.topValue),right:e.dimen(e.right),bottom:e.dimen(e.bottom)})},[r.renderSlot(e.$slots,"default")],6)}const H=f(U,[["render",j]]),F=r.defineComponent({name:"tg-custom-control",mixins:[p],props:{position:c(s.ControlPosition,s.ControlPosition.RIGHT_BOTTOM)},setup(){return{control:h.lateinit()}},watch:{position(){this.recreate()}},onCreate(){S(this.$parent,k)||console.warn("请将tg-custom-control放到tg-map中");const{$el:e}=this,t=class extends s.CustomControl{onCreateElement(){return e}};this.control=new t(s.unwrapStringEnumValue(this.position,s.ControlPosition)),this.$map.addCustomControl(this.control)},onDestroy(){this.$map.removeCustomControl(this.control)}});function q(e,t,i,n,a,l){return r.openBlock(),r.createElementBlock("div",{class:r.normalizeClass(e.$options.name)},[r.renderSlot(e.$slots,"default")],2)}const G=f(F,[["render",q]]),X=r.defineComponent({name:"tg-map-type-control",mixins:[p],props:{position:c(s.ControlPosition,s.ControlPosition.TOP_LEFT),type:c(s.MapTypeControlType),mapTypes:o(Array)},setup(){return{control:h.lateinit()}},watch:{position(e){this.control.setPosition(e)},type(){this.recreate()},mapTypes:{handler(){this.recreate()},deep:!0}},onCreate(){this.control=this.$map.createMapTypeControl(s.unwrapStringEnumValue(this)),this.$map.addControl(this.control)},onDestroy(){this.$map.removeControl(this.control)}}),K=r.defineComponent({name:"tg-scale-control",mixins:[p],props:{position:c(s.ControlPosition,s.ControlPosition.BOTTOM_RIGHT)},setup(){return{control:h.lateinit()}},watch:{position(e){this.control.setPosition(e)}},onCreate(){this.control=this.$map.createScaleControl(s.unwrapStringEnumValue(this)),this.$map.addControl(this.control)},onDestroy(){this.$map.removeControl(this.control)}});function B(){var i;const e=(i=r.getCurrentInstance())==null?void 0:i.type;let t=(e==null?void 0:e.name)??(e==null?void 0:e.__name);if(!t){const n=e==null?void 0:e.__file;n&&(t=h.path.basename(n,".vue"))}return t}function O(){const e=r.inject(T);let t,i;return e==null&&h.throwError(`<${B()||"unknown"}>必须作为<tg-map>的子代组件`),{mapRef:e,get map(){return e.value??h.throwError("map尚未初始化")},[v](n){r.onMounted(n),t&&h.throwError(`${v}只能调用一次`),t=n},[g](n){r.onBeforeUnmount(n),i&&h.throwError(`${g}只能调用一次`),i=n},recreate(){i==null||i(),t==null||t()}}}const J=r.defineComponent({name:"tg-street-view-control",props:{position:c(s.ControlPosition,s.ControlPosition.RIGHT_BOTTOM)},setup(e){let t=h.lateinit();const{map:i,onCreate:n,onDestroy:a}=O();return n(()=>{t=i.createStreetViewControl(s.unwrapStringEnumValue(e)),i.addControl(t)}),a(()=>{i.removeControl(t)}),r.watch(()=>e.position,l=>{t.setPosition(s.unwrapStringEnumValue(l,s.ControlPosition))}),$}}),Y=r.defineComponent({name:"tg-zoom-control",props:{position:c(s.ControlPosition,s.ControlPosition.RIGHT_BOTTOM),showZoomLevel:o(Boolean)},setup(e){let t=h.lateinit();const{map:i,onCreate:n,onDestroy:a}=O();return n(()=>{t=i.createZoomControl(s.unwrapStringEnumValue(e)),i.addControl(t)}),a(()=>{i.removeControl(t)}),r.watch(()=>e.position,l=>{t.setPosition(s.unwrapStringEnumValue(l,s.ControlPosition))}),r.watch(()=>e.showZoomLevel,l=>{t.setShowZoomLevel(l??!0)}),$}}),Q=r.defineComponent({name:"tg-heatmap",props:{maxIntensity:o(Number),gradient:o(Object),opacity:o(Number),radius:o(Number),data:m(Array)},setup(e){const{map:t,onCreate:i,onDestroy:n}=O();let a=h.lateinit();return i(()=>{a=t.createHeatmap(e)}),n(()=>{a.remove()}),r.watch(()=>e.data,l=>a.setData(l)),r.watch([()=>e.maxIntensity,()=>e.gradient,()=>e.opacity,()=>e.radius],()=>a.setOptions(e)),$}}),ee=r.defineComponent({name:"tg-marker-clusterer",mixins:[p],props:{gridSize:o(Number),maxZoom:o(Number),minClusterSize:o(Number),averageCenter:o(Boolean),styles:o(Array),stylesIndexCalculator:o(Function),zIndex:o(Number)},setup(){return{clusterer:h.lateinit(),markers:h.typed([]),pendingMarkers:h.typed([])}},watch:{gridSize(){this.recreate()},maxZoom(){this.recreate()},minClusterSize(){this.recreate()},averageCenter(){this.recreate()},styles:{handler(){this.recreate()},deep:!0},stylesIndexCalculator(){this.recreate()},zIndex(){this.recreate()}},onCreate(){this.clusterer=this.$map.createMarkerClusterer(this)},onDestroy(){this.clusterer.clearMarkers(!0),this.pendingMarkers=[]},methods:{isInitiated(){return this.clusterer!=null},performAddMarkers(){this.clusterer.addMarkers(this.pendingMarkers),this.pendingMarkers=[]},onAddMarker(e){this.markers.push(e),this.isInitiated()&&(this.pendingMarkers.length||this.$nextTick(this.performAddMarkers),this.pendingMarkers.push(e))},onRemoveMarker(e){this.isInitiated()&&(h.Arrays.remove(this.pendingMarkers,e)||this.clusterer.removeMarker(e)),h.Arrays.remove(this.markers,e)}}});function te(e,t,i,n,a,l){return r.openBlock(),r.createElementBlock("div",{class:r.normalizeClass(e.$options.name)},[r.renderSlot(e.$slots,"default")],2)}const L=f(ee,[["render",te]]),oe=r.defineComponent({name:"tg-traffic-layer",mixins:[p],setup(){return{layer:h.lateinit()}},watch:{},onCreate(){this.layer=new s.TrafficLayer,this.$map.addLayer(this.layer)},onDestroy(){this.$map.removeLayer(this.layer)}}),re=r.defineComponent({name:"tg-circle",mixins:[p],inheritAttrs:!1,props:{center:m(s.LatLng),radius:m(Number),clickable:o(Boolean),editable:o(Boolean),strokeColor:o(String),strokeOpacity:o(Number),strokeWeight:o(Number),visible:o(Boolean),zIndex:o(Number),fillColor:o(String),fillOpacity:o(Number),"onUpdate:center":d(),"onUpdate:radius":d()},emits:void 0,setup(e,{attrs:t}){return{attrs:u(t,e),overlay:h.lateinit(),emittedRadius:void 0,emittedCenter:void 0}},watch:{center(e){if(this.emittedCenter!=null){const t=this.emittedCenter;if(this.emittedCenter=void 0,t===r.toRaw(e))return}this.overlay.setCenter(e)},radius(e){if(this.emittedRadius!=null){const t=this.emittedRadius;if(this.emittedRadius=void 0,t===e)return}this.overlay.setRadius(e)},clickable(){this.recreate()},editable(e){this.overlay.setEditable(e)},strokeColor(e){this.overlay.setStrokeColor(e)},strokeOpacity(e){this.overlay.setStrokeOpacity(e)},strokeWeight(e){this.overlay.setStrokeWeight(e)},fillColor(e){this.overlay.setFillColor(e)},fillOpacity(e){this.overlay.setFillOpacity(e)},visible(e){this.overlay.setVisible(e)},zIndex(e){this.overlay.setZIndex(e)}},onCreate(){this.overlay=this.$map.createCircle(this),this.$map.addOverlay(this.overlay),s.bindEvents(this.attrs.listeners,this.overlay),this.attrs.listenerProps["update:center"]&&this.overlay.addEventListener("center-changed",()=>{this.$emit("update:center",this.emittedCenter=this.overlay.getCenter())}),this.attrs.listenerProps["update:radius"]&&this.overlay.addEventListener("radius-changed",()=>{this.$emit("update:radius",this.emittedRadius=this.overlay.getRadius())})},onDestroy(){this.$map.removeOverlay(this.overlay)}});class ie extends s.ElementOverlay{constructor(t,i,n,a){super(t,i),this.content=n,this.position=a}onCreate(){return this.content}onDraw(t){const i=t.fromLatLngToOverlayPoint(this.position);this.content.style.left=i.x+"px",this.content.style.top=i.y+"px"}setPosition(t){this.position=t,this.draw()}}const se=r.defineComponent({name:"tg-element-overlay",mixins:[p],props:{mapPane:c(s.MapPane,s.MapPane.overlayMouseTarget),position:m(s.LatLng)},setup(){return{overlay:h.lateinit()}},watch:{position(e){this.overlay.setPosition(e)},mapPane(){this.recreate()}},methods:{content(){return this.$el}},onCreate(){this.overlay=new ie(this.$map,s.unwrapStringEnumValue(this),this.content(),this.position),this.$map.addElementOverlay(this.overlay)},onDestroy(){this.$map.removeElementOverlay(this.overlay)}});function ne(e,t,i,n,a,l){return r.openBlock(),r.createElementBlock("div",r.mergeProps({class:e.$options.name},e.$attrs),[r.renderSlot(e.$slots,"default")],16)}const ae=f(se,[["render",ne]]),le={position:m(s.LatLng),title:o(String),label:o(Object),icon:o(Object),clickable:o(Boolean),draggable:o(Boolean),crossOnDrag:o(Boolean),cursor:o(String),zIndex:o(Number),visible:o(Boolean),normalizePositionForBaidu:o(Boolean),autoAddToClusterer:o(Boolean,!0),"onUpdate:position":d()},he=r.defineComponent({name:"tg-marker",mixins:[p],inheritAttrs:!1,props:le,emits:void 0,setup(e,{attrs:t}){return{attrs:u(t,e),marker:h.lateinit(),labelOverlay:h.typed(),info:h.typed(),emittedPosition:void 0,autoAddToClustererWhenCreate:e.autoAddToClusterer}},watch:{position(e){if(this.emittedPosition!=null){const t=this.emittedPosition;if(this.emittedPosition=void 0,t===r.toRaw(e))return}this.marker.setPosition(e)},title(e){this.marker.setTitle(e)},label(e,t){h.deepEqual(e,t)||(e?this.marker.setLabel(e):this.recreate())},icon(e){e?this.marker.setIcon(e):this.recreate()},clickable(e){this.marker instanceof s.BaiduMarker?this.recreate():this.marker.setClickable(e)},draggable(e){this.marker.setDraggable(e)},crossOnDrag(){this.recreate()},cursor(){this.recreate()},zIndex(e){this.marker instanceof s.BaiduMarker?this.recreate():this.marker.setZIndex(e)},visible(e){this.marker.setVisible(e)},normalizePositionForBaidu(){this.recreate()},autoAddToClusterer(){this.recreate()}},onCreate(){this.marker=this.$map.createMarker(this),this.labelOverlay&&this.marker.attachLabelOverlay(this.labelOverlay.overlay),this.$clusterer()&&this.autoAddToClusterer?this.$clusterer().onAddMarker(this.marker):this.$map.addOverlay(this.marker),this.autoAddToClustererWhenCreate=this.autoAddToClusterer,this.info&&this.info.show&&this.info.overlay.open(this.marker),s.bindEvents(this.attrs.listeners,this.marker),this.attrs.listenerProps["update:position"]&&this.marker.addEventListener("dragend",e=>{this.$emit("update:position",this.emittedPosition=e.position)})},onDestroy(){this.$clusterer()&&this.autoAddToClustererWhenCreate?this.$clusterer().onRemoveMarker(this.marker):this.$map.removeOverlay(this.marker)},methods:{$clusterer(){return S(this.$parent,L)},onAddLabel(e){this.labelOverlay=e,this.marker&&this.marker.attachLabelOverlay(e.overlay)},onRemoveLabel(e){this.marker.attachLabelOverlay(void 0),this.labelOverlay=void 0},onAddInfo(e){this.info=e,this.marker&&e.show&&e.overlay.open(this.marker)},onRemoveInfo(e){e.overlay.close(),this.info=void 0},onInfoShowChanged(e,t){t?e.overlay.open(this.marker):e.overlay.close()}}});function de(e,t,i,n,a,l){return r.renderSlot(e.$slots,"default")}const M=f(he,[["render",de]]),pe=r.defineComponent({name:"tg-info-box",mixins:[p],inheritAttrs:!1,props:{show:m(Boolean),position:o(s.LatLng),offset:o(Object),maxWidth:o(Number),borderClass:o(String),zIndex:o(Number),disableAutoPan:o(Boolean),"onUpdate:show":d()},emits:void 0,setup(e,{attrs:t}){return{attrs:u(t,e),overlay:h.lateinit()}},watch:{show(e){this.$marker()?this.$marker().onInfoShowChanged(this,e):e?this.overlay.open():this.overlay.close()},position(e){this.overlay.setPosition(e)},offset(){this.recreate()},maxWidth(e){this.overlay.setMaxWidth(e)},borderClass(){this.recreate()},zIndex(e){this.overlay.setZIndex(e)},disableAutoPan(){this.recreate()}},onCreate(){this.overlay=this.$map.createInfoBox(this.getOptions()),this.$marker()?this.$marker().onAddInfo(this):this.show&&this.overlay.open(),this.attrs.listenerProps["update:show"]&&this.overlay.addEventListener("closeclick",()=>{this.$emit("update:show",!1)}),s.bindEvents(this.attrs.listeners,this.overlay)},onDestroy(){this.$marker()?this.$marker().onRemoveInfo(this):this.overlay.close()},methods:{getOptions(){return{content:this.content(),position:this.position,offset:this.offset,zIndex:this.zIndex,maxWidth:this.maxWidth,borderClass:this.borderClass,disableAutoPan:this.disableAutoPan}},content(){return this.$el},$marker(){return P(M,this.$parent,k)},open(e){this.overlay.open(e)},close(){this.overlay.close()}}});function me(e,t,i,n,a,l){return r.openBlock(),r.createElementBlock("div",r.mergeProps({class:e.$options.name},e.attrs.binds),[r.renderSlot(e.$slots,"default")],16)}const ce=f(pe,[["render",me]]),ue=r.defineComponent({name:"tg-info-window",mixins:[p],inheritAttrs:!1,props:{show:m(Boolean),position:o(s.LatLng),maxWidth:o(Number),offset:o(Object),disableAutoPan:o(Boolean),"onUpdate:show":d()},emits:void 0,setup(e,{attrs:t}){return{attrs:u(t,e),overlay:h.lateinit()}},watch:{show(e){this.$marker()?this.$marker().onInfoShowChanged(this,e):e?this.overlay.open():this.overlay.close()},position(e){this.overlay.setPosition(e)},maxWidth(){this.recreate()},offset(){this.recreate()},disableAutoPan(){this.recreate()}},methods:{content(){return this.$el},$marker(){return P(M,this.$parent,k)},getOptions(){return{content:this.content(),position:this.position,maxWidth:this.maxWidth,offset:this.offset,disableAutoPan:this.disableAutoPan}}},onCreate(){this.overlay=this.$map.createInfoWindow(this.getOptions()),this.$marker()?this.$marker().onAddInfo(this):this.show&&this.overlay.open(),this.overlay.addEventListener("open",()=>{this.$emit("update:show",!0)}),this.overlay.addEventListener("close",()=>{this.$emit("update:show",!1)}),s.bindEvents(this.attrs.listeners,this.overlay)},onDestroy(){this.$marker()?this.$marker().onRemoveInfo(this):this.overlay.close()}});function fe(e,t,i,n,a,l){return r.withDirectives((r.openBlock(),r.createElementBlock("div",r.mergeProps({class:e.$options.name},e.attrs.binds),[r.renderSlot(e.$slots,"default")],16)),[[r.vShow,e.show]])}const ye=f(ue,[["render",fe]]),ve=r.defineComponent({name:"tg-label",mixins:[p],inheritAttrs:!1,props:{position:o(s.LatLng),offset:o(Object),zIndex:o(Number),mapPane:c(s.MapPane)},emits:void 0,setup(e,{attrs:t}){return{attrs:u(t),overlay:h.lateinit()}},watch:{position(e){this.overlay.setPosition(e)},offset(e){this.overlay.setOffset(e)},zIndex(e){this.overlay.setZIndex(e)},visible(e){this.overlay.setVisible(e)},mapPane(){this.recreate()}},methods:{content(){return this.$el},marker(){var e;return(e=this.$marker())==null?void 0:e.marker},$marker(){return P(M,this.$parent,k)},getOptions(){return{content:this.content(),position:this.position,offset:this.offset,zIndex:this.zIndex,mapPane:s.unwrapStringEnumValue(this.mapPane,s.MapPane)}}},onCreate(){this.overlay=this.$map.createLabel(this.getOptions()),this.$marker()?this.$marker().onAddLabel(this):this.$map.addOverlay(this.overlay),s.bindEvents(this.attrs.listeners,this.overlay)},onDestroy(){this.$marker()?this.$marker().onRemoveLabel(this):this.$map.removeOverlay(this.overlay)}});function ge(e,t,i,n,a,l){return r.openBlock(),r.createElementBlock("div",r.mergeProps({class:e.$options.name},e.attrs.binds),[r.renderSlot(e.$slots,"default")],16)}const be=f(ve,[["render",ge]]),Ce={paths:m(Array),clickable:o(Boolean),editable:o(Boolean),strokeColor:o(String),strokeOpacity:o(Number),strokeWeight:o(Number),visible:o(Boolean),zIndex:o(Number),fillColor:o(String),fillOpacity:o(Number),"onUpdate:paths":d()},$e=r.defineComponent({name:"tg-polygon",mixins:[p],inheritAttrs:!1,props:Ce,emits:void 0,setup(e,{attrs:t}){return{attrs:u(t,e),overlay:h.lateinit(),emittedPaths:void 0}},watch:{paths:{handler(e){if(this.emittedPaths!=null){const t=this.emittedPaths;if(this.emittedPaths=void 0,t.length===e.length&&t.every((i,n)=>i===r.toRaw(e[n])))return}this.overlay.setPaths(e)},deep:!0},clickable(){this.recreate()},editable(e){this.overlay.setEditable(e)},strokeColor(e){this.overlay.setStrokeColor(e)},strokeOpacity(e){this.overlay.setStrokeOpacity(e)},strokeWeight(e){this.overlay.setStrokeWeight(e)},fillColor(e){this.overlay.setFillColor(e)},fillOpacity(e){this.overlay.setFillOpacity(e)},visible(e){this.overlay.setVisible(e)},zIndex(e){this.overlay.setZIndex(e)}},onCreate(){this.overlay=this.$map.createPolygon(this),this.$map.addOverlay(this.overlay),s.bindEvents(this.attrs.listeners,this.overlay),this.attrs.listenerProps["update:paths"]&&this.overlay.addEventListener("paths-edited",()=>{this.$emit("update:paths",this.emittedPaths=this.overlay.getPaths())})},onDestroy(){this.$map.removeOverlay(this.overlay)}}),ke=r.defineComponent({name:"tg-polyline",mixins:[p],inheritAttrs:!1,props:{path:m(Array),icons:o(Array),clickable:o(Boolean),editable:o(Boolean),strokeColor:o(String),strokeOpacity:o(Number),strokeWeight:o(Number),visible:o(Boolean),zIndex:o(Number),"onUpdate:path":d()},emits:void 0,setup(e,{attrs:t}){return{attrs:u(t,e),overlay:h.lateinit(),emittedPath:void 0}},watch:{path:{handler(e){if(this.emittedPath!=null){const t=this.emittedPath;if(this.emittedPath=void 0,t===r.toRaw(e))return}this.overlay.setPath(e)},deep:!0},icons:{handler(){this.recreate()},deep:!0},clickable(){this.recreate()},editable(e){this.overlay.setEditable(e)},strokeColor(e){this.overlay.setStrokeColor(e)},strokeOpacity(e){this.overlay.setStrokeOpacity(e)},strokeWeight(e){this.overlay.setStrokeWeight(e)},visible(e){this.overlay.setVisible(e)},zIndex(e){this.overlay.setZIndex(e)}},onCreate(){this.overlay=this.$map.createPolyline(this),this.$map.addOverlay(this.overlay),s.bindEvents(this.attrs.listeners,this.overlay),this.attrs.listenerProps["update:path"]&&this.overlay.addEventListener("path-edited",()=>{this.$emit("update:path",this.emittedPath=this.overlay.getPath())})},onDestroy(){this.overlay.remove()}}),_e=r.defineComponent({name:"tg-rectangle",mixins:[p],inheritAttrs:!1,props:{bounds:m(Object),clickable:o(Boolean),editable:o(Boolean),strokeColor:o(String),strokeOpacity:o(Number),strokeWeight:o(Number),visible:o(Boolean),zIndex:o(Number),fillColor:o(String),fillOpacity:o(Number),"onUpdate:bounds":d()},emits:void 0,setup(e,{attrs:t}){return{attrs:u(t,e),overlay:h.lateinit(),emittedBounds:void 0}},watch:{bounds(e){if(this.emittedBounds!=null){const t=this.emittedBounds;if(this.emittedBounds=void 0,t.equals(e))return}this.overlay.setBounds(e)},clickable(){this.recreate()},editable(e){this.overlay.setEditable(e)},strokeColor(e){this.overlay.setStrokeColor(e)},strokeOpacity(e){this.overlay.setStrokeOpacity(e)},strokeWeight(e){this.overlay.setStrokeWeight(e)},fillColor(e){this.overlay.setFillColor(e)},fillOpacity(e){this.overlay.setFillOpacity(e)},visible(e){this.overlay.setVisible(e)},zIndex(e){this.overlay.setZIndex(e)}},onCreate(){this.overlay=this.$map.createRectangle(this),this.$map.addOverlay(this.overlay),s.bindEvents(this.attrs.listeners,this.overlay),this.attrs.listenerProps["update:bounds"]&&this.overlay.addEventListener("bounds-changed",()=>{this.$emit("update:bounds",this.emittedBounds=this.overlay.getBounds())})},onDestroy(){this.$map.removeOverlay(this.overlay)}}),Pe=["beforeUpdate","updated"],Te={install(e,t={}){if(t.enable!==!1){const i=r.defineComponent({beforeCreate(){const n=B()??"",l=(t.nameRegex||/^[A-Z]/).test(n)?y=>{t.hookNames?t.hookNames.includes(y)&&console.debug("[lifecycle]",n,y):Pe.includes(y)||console.debug("[lifecycle]",n,y)}:h.noop;l("beforeCreate"),this.__life_impl=l},created(){this.__life("created")},beforeMount(){this.__life("beforeMount")},mounted(){this.__life("mounted")},beforeUpdate(){this.__life("beforeUpdate")},updated(){this.__life("updated")},beforeUnmount(){this.__life("beforeUnmount")},unmounted(){this.__life("unmounted")},methods:{__life(n){this.__life_impl(n)}},onCreate(){this.__life("onCreate")},onDestroy(){this.__life("onDestroy")}});e.mixin(i)}}},Oe={install(e,t){s.setTgMapConfig(t);const i=e.config.optionMergeStrategies;i[v]=i[g]=(n,a)=>n?[...new Set([].concat(n,a))]:Array.isArray(a)?a:[a]}};exports.LifecycleLogPlugin=Te;exports.MIXIN_HOOK_CREATE=v;exports.MIXIN_HOOK_DESTROY=g;exports.MIXIN_MAP_NAME=T;exports.MapMixin=p;exports.TgCircle=re;exports.TgCustomControl=G;exports.TgElementOverlay=ae;exports.TgHeatmap=Q;exports.TgInfoBox=ce;exports.TgInfoWindow=ye;exports.TgLabel=be;exports.TgMap=k;exports.TgMapTypeControl=X;exports.TgMapWidget=H;exports.TgMarker=M;exports.TgMarkerClusterer=L;exports.TgPolygon=$e;exports.TgPolyline=ke;exports.TgRectangle=_e;exports.TgScaleControl=K;exports.TgStreetViewControl=J;exports.TgTrafficLayer=oe;exports.TgZoomControl=Y;exports.callHook=C;exports.computedSaveOnThis=N;exports.createEmptyVNode=$;exports.createPropertyObject=I;exports.createPropertyObjectTyped=x;exports.default=Oe;exports.eventProp=d;exports.extractVNodeFromSlotsByComponent=D;exports.findAncestorComponentByType=P;exports.findByComponentType=z;exports.isComponentByType=_;exports.optionalProp=o;exports.requiredProp=m;exports.safeAsComponent=S;exports.splitAttrs=E;exports.stringEnumProp=c;exports.stringUnionPropFromValues=w;exports.useEventLogMethods=V;exports.useSplittedAttrs=u;exports.useTgMapInner=O;Object.keys(s).forEach(e=>{e!=="default"&&!Object.prototype.hasOwnProperty.call(exports,e)&&Object.defineProperty(exports,e,{enumerable:!0,get:()=>s[e]})});
|
|
2
2
|
//# sourceMappingURL=tg-map.cjs.map
|