@sword916/vae-map-plus 1.0.0 → 1.0.1

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 (185) hide show
  1. package/lib/index.js +5376 -0
  2. package/lib/style.css +1 -0
  3. package/lib/vae-amap/favicon.ico +0 -0
  4. package/lib/vae-amap/images/game.png +0 -0
  5. package/lib/vae-amap/images/grid.png +0 -0
  6. package/lib/vae-amap/images/marker.png +0 -0
  7. package/lib/vae-amap/index.js +209 -0
  8. package/lib/vae-amap/style.css +1 -0
  9. package/lib/vae-cloudmap/favicon.ico +0 -0
  10. package/lib/vae-cloudmap/images/game.png +0 -0
  11. package/lib/vae-cloudmap/images/grid.png +0 -0
  12. package/lib/vae-cloudmap/images/marker.png +0 -0
  13. package/lib/vae-cloudmap/index.html +30 -0
  14. package/lib/vae-cloudmap/index.js +4085 -0
  15. package/lib/vae-cloudmap/style.css +1 -0
  16. package/lib/vae-map/favicon.ico +0 -0
  17. package/lib/vae-map/images/game.png +0 -0
  18. package/lib/vae-map/images/grid.png +0 -0
  19. package/lib/vae-map/images/marker.png +0 -0
  20. package/lib/vae-map/index.html +30 -0
  21. package/lib/vae-map/index.js +4322 -0
  22. package/lib/vae-map/style.css +1 -0
  23. package/package.json +1 -1
  24. package/plugins/L.AnimatedMarker/favicon.ico +0 -0
  25. package/plugins/L.AnimatedMarker/images/game.png +0 -0
  26. package/plugins/L.AnimatedMarker/images/grid.png +0 -0
  27. package/plugins/L.AnimatedMarker/images/marker.png +0 -0
  28. package/plugins/L.AnimatedMarker/index.html +30 -0
  29. package/plugins/L.AnimatedMarker/index.js +83 -0
  30. package/plugins/L.EchartsLayer/favicon.ico +0 -0
  31. package/plugins/L.EchartsLayer/images/game.png +0 -0
  32. package/plugins/L.EchartsLayer/images/grid.png +0 -0
  33. package/plugins/L.EchartsLayer/images/marker.png +0 -0
  34. package/plugins/L.EchartsLayer/index.html +30 -0
  35. package/plugins/L.EchartsLayer/index.js +176 -0
  36. package/plugins/L.FootageCalculator.Area/favicon.ico +0 -0
  37. package/plugins/L.FootageCalculator.Area/images/game.png +0 -0
  38. package/plugins/L.FootageCalculator.Area/images/grid.png +0 -0
  39. package/plugins/L.FootageCalculator.Area/images/marker.png +0 -0
  40. package/plugins/L.FootageCalculator.Area/index.html +30 -0
  41. package/plugins/L.FootageCalculator.Area/index.js +418 -0
  42. package/plugins/L.FootageCalculator.Line/favicon.ico +0 -0
  43. package/plugins/L.FootageCalculator.Line/images/game.png +0 -0
  44. package/plugins/L.FootageCalculator.Line/images/grid.png +0 -0
  45. package/plugins/L.FootageCalculator.Line/images/marker.png +0 -0
  46. package/plugins/L.FootageCalculator.Line/index.html +30 -0
  47. package/plugins/L.FootageCalculator.Line/index.js +416 -0
  48. package/plugins/L.GeoUtil/favicon.ico +0 -0
  49. package/plugins/L.GeoUtil/images/game.png +0 -0
  50. package/plugins/L.GeoUtil/images/grid.png +0 -0
  51. package/plugins/L.GeoUtil/images/marker.png +0 -0
  52. package/plugins/L.GeoUtil/index.html +30 -0
  53. package/plugins/L.GeoUtil/index.js +279 -0
  54. package/plugins/L.Glyphicon/favicon.ico +0 -0
  55. package/plugins/L.Glyphicon/images/game.png +0 -0
  56. package/plugins/L.Glyphicon/images/grid.png +0 -0
  57. package/plugins/L.Glyphicon/images/marker.png +0 -0
  58. package/plugins/L.Glyphicon/index.html +30 -0
  59. package/plugins/L.Glyphicon/index.js +57 -0
  60. package/plugins/L.Glyphicon/style.css +1 -0
  61. package/plugins/L.MarkerClusterX/favicon.ico +0 -0
  62. package/plugins/L.MarkerClusterX/images/game.png +0 -0
  63. package/plugins/L.MarkerClusterX/images/grid.png +0 -0
  64. package/plugins/L.MarkerClusterX/images/marker.png +0 -0
  65. package/plugins/L.MarkerClusterX/index.html +30 -0
  66. package/plugins/L.MarkerClusterX/index.js +33 -0
  67. package/plugins/L.MarkerClusterX/style.css +1 -0
  68. package/plugins/L.SafeDivOverlay/favicon.ico +0 -0
  69. package/plugins/L.SafeDivOverlay/images/game.png +0 -0
  70. package/plugins/L.SafeDivOverlay/images/grid.png +0 -0
  71. package/plugins/L.SafeDivOverlay/images/marker.png +0 -0
  72. package/plugins/L.SafeDivOverlay/index.html +30 -0
  73. package/plugins/L.SafeDivOverlay/index.js +26 -0
  74. package/plugins/L.TileLayer.ChinaProvider/favicon.ico +0 -0
  75. package/plugins/L.TileLayer.ChinaProvider/images/game.png +0 -0
  76. package/plugins/L.TileLayer.ChinaProvider/images/grid.png +0 -0
  77. package/plugins/L.TileLayer.ChinaProvider/images/marker.png +0 -0
  78. package/plugins/L.TileLayer.ChinaProvider/index.html +30 -0
  79. package/plugins/L.TileLayer.ChinaProvider/index.js +91 -0
  80. package/plugins/L.VuePopup/favicon.ico +0 -0
  81. package/plugins/L.VuePopup/images/game.png +0 -0
  82. package/plugins/L.VuePopup/images/grid.png +0 -0
  83. package/plugins/L.VuePopup/images/marker.png +0 -0
  84. package/plugins/L.VuePopup/index.html +30 -0
  85. package/plugins/L.VuePopup/index.js +68 -0
  86. package/plugins/L.VueTooltip/favicon.ico +0 -0
  87. package/plugins/L.VueTooltip/images/game.png +0 -0
  88. package/plugins/L.VueTooltip/images/grid.png +0 -0
  89. package/plugins/L.VueTooltip/images/marker.png +0 -0
  90. package/plugins/L.VueTooltip/index.html +30 -0
  91. package/plugins/L.VueTooltip/index.js +68 -0
  92. package/plugins/Mixin.Map.Measure/favicon.ico +0 -0
  93. package/plugins/Mixin.Map.Measure/images/game.png +0 -0
  94. package/plugins/Mixin.Map.Measure/images/grid.png +0 -0
  95. package/plugins/Mixin.Map.Measure/images/marker.png +0 -0
  96. package/plugins/Mixin.Map.Measure/index.html +30 -0
  97. package/plugins/Mixin.Map.Measure/index.js +84 -0
  98. package/plugins/globals/favicon.ico +0 -0
  99. package/plugins/globals/images/game.png +0 -0
  100. package/plugins/globals/images/grid.png +0 -0
  101. package/plugins/globals/images/marker.png +0 -0
  102. package/plugins/globals/index.html +30 -0
  103. package/plugins/globals/index.js +4 -0
  104. package/build/index.mjs +0 -113
  105. package/examples/App.vue +0 -18
  106. package/examples/index.js +0 -13
  107. package/examples/router/index.js +0 -35
  108. package/examples/views/amap.vue +0 -29
  109. package/examples/views/amarker.vue +0 -58
  110. package/examples/views/buffer.vue +0 -66
  111. package/examples/views/cluster.vue +0 -74
  112. package/examples/views/cover.vue +0 -85
  113. package/examples/views/draw-line.vue +0 -49
  114. package/examples/views/draw.vue +0 -54
  115. package/examples/views/echarts.vue +0 -142
  116. package/examples/views/emarker.vue +0 -39
  117. package/examples/views/image.vue +0 -182
  118. package/examples/views/index.vue +0 -61
  119. package/examples/views/lrmap.vue +0 -108
  120. package/examples/views/map.vue +0 -82
  121. package/examples/views/measure.vue +0 -86
  122. package/examples/views/parts/popup.vue +0 -39
  123. package/examples/views/parts/tooltip.vue +0 -39
  124. package/examples/views/push-area.vue +0 -52
  125. package/examples/views/push-line.vue +0 -84
  126. package/examples/views/trace.vue +0 -49
  127. package/jsconfig.json +0 -17
  128. package/src/components/resize-listener/component.jsx +0 -30
  129. package/src/components/resize-listener/index.js +0 -3
  130. package/src/composables/useAutoMessage.js +0 -41
  131. package/src/composables/useContextMenu.js +0 -99
  132. package/src/composables/useMapMeasure.js +0 -191
  133. package/src/composables/useResizeObserver.js +0 -81
  134. package/src/mixins/message.js +0 -1
  135. package/src/packages/index.js +0 -16
  136. package/src/packages/vae-amap/index.js +0 -8
  137. package/src/packages/vae-amap/style.less +0 -9
  138. package/src/packages/vae-amap/vae-amap.jsx +0 -98
  139. package/src/packages/vae-cloudmap/ctrl-context-menu/index.vue +0 -74
  140. package/src/packages/vae-cloudmap/ctrl-draw/index.vue +0 -499
  141. package/src/packages/vae-cloudmap/ctrl-draw-line/index.vue +0 -161
  142. package/src/packages/vae-cloudmap/index.js +0 -57
  143. package/src/packages/vae-cloudmap/scripts/L.MarkerCluster/index.js +0 -2690
  144. package/src/packages/vae-cloudmap/scripts/L.MarkerCluster/style.css +0 -14
  145. package/src/packages/vae-cloudmap/scripts/L.Vae.CRS/index.js +0 -212
  146. package/src/packages/vae-cloudmap/scripts/L.Vae.Client/index.js +0 -780
  147. package/src/packages/vae-cloudmap/scripts/Mixin.ContextMenu/index.js +0 -101
  148. package/src/packages/vae-cloudmap/style.less +0 -163
  149. package/src/packages/vae-cloudmap/vae-cloudmap.jsx +0 -272
  150. package/src/packages/vae-map/ctrl-context-menu/index.vue +0 -74
  151. package/src/packages/vae-map/ctrl-draw/index.vue +0 -498
  152. package/src/packages/vae-map/ctrl-draw-line/index.vue +0 -128
  153. package/src/packages/vae-map/index.js +0 -59
  154. package/src/packages/vae-map/scripts/L.MarkerCluster/index.js +0 -2690
  155. package/src/packages/vae-map/scripts/L.MarkerCluster/style.css +0 -14
  156. package/src/packages/vae-map/scripts/L.Vae.CRS/index.js +0 -114
  157. package/src/packages/vae-map/scripts/L.Vae.Client/index.js +0 -548
  158. package/src/packages/vae-map/scripts/Mixin.ContextMenu/index.js +0 -1
  159. package/src/packages/vae-map/style.less +0 -161
  160. package/src/packages/vae-map/vae-lrmap.jsx +0 -237
  161. package/src/packages/vae-map/vae-map.jsx +0 -135
  162. package/src/plugins/L.AnimatedMarker/index.js +0 -158
  163. package/src/plugins/L.EchartsLayer/index.js +0 -339
  164. package/src/plugins/L.ElasticMarker/index.js +0 -162
  165. package/src/plugins/L.FootageCalculator.Area/index.js +0 -263
  166. package/src/plugins/L.FootageCalculator.Line/index.js +0 -273
  167. package/src/plugins/L.GeoUtil/buffer.js +0 -67
  168. package/src/plugins/L.GeoUtil/index.js +0 -284
  169. package/src/plugins/L.Glyphicon/index.js +0 -91
  170. package/src/plugins/L.Glyphicon/style.less +0 -37
  171. package/src/plugins/L.MarkerClusterX/index.js +0 -93
  172. package/src/plugins/L.MarkerClusterX/style.less +0 -162
  173. package/src/plugins/L.SafeDivOverlay/index.js +0 -55
  174. package/src/plugins/L.TileLayer.ChinaProvider/index.js +0 -108
  175. package/src/plugins/L.VuePopup/index.js +0 -67
  176. package/src/plugins/L.VueTooltip/index.js +0 -63
  177. package/src/plugins/Mixin.Map.Measure/index.js +0 -248
  178. package/src/plugins/globals/index.js +0 -7
  179. package/src/utils/index.js +0 -36
  180. package/src/utils/resize-event.js +0 -45
  181. /package/{public → lib}/favicon.ico +0 -0
  182. /package/{public → lib}/images/game.png +0 -0
  183. /package/{public → lib}/images/grid.png +0 -0
  184. /package/{public → lib}/images/marker.png +0 -0
  185. /package/{public → lib/vae-amap}/index.html +0 -0
@@ -1,66 +0,0 @@
1
- <template>
2
- <vae-map base-layers="GaoDe.Normal.Map" @init-map="initMap" />
3
- </template>
4
-
5
- <script setup>
6
- const lineLatLngs = [
7
- { lat: 34.31614748988616, lng: 117.32368469238283 },
8
- { lat: 34.293104769231974, lng: 117.31870651245119 },
9
- { lat: 34.29367205056199, lng: 117.32385635375978 },
10
- { lat: 34.29672112208355, lng: 117.32248306274415 },
11
- { lat: 34.297572006012544, lng: 117.32591629028322 },
12
- { lat: 34.30062093597998, lng: 117.32419967651369 },
13
- { lat: 34.302322616209494, lng: 117.32909202575685 },
14
- { lat: 34.30437876715258, lng: 117.32643127441408 },
15
- { lat: 34.305513173709706, lng: 117.31441497802736 },
16
- { lat: 34.29728837899387, lng: 117.31184005737306 }
17
- ]
18
-
19
- const areaLatLngs = [
20
- { lat: 34.308136430179374, lng: 117.34376907348634 },
21
- { lat: 34.30189719938442, lng: 117.34196662902833 },
22
- { lat: 34.30033731925641, lng: 117.3494338989258 },
23
- { lat: 34.30714385628804, lng: 117.35355377197267 },
24
- { lat: 34.31118497662593, lng: 117.34848976135255 }
25
- ]
26
-
27
- const pointLatLng = { lat: 34.29587022953563, lng: 117.33552932739259 }
28
- const baseLayers = L.layerGroup()
29
- const bufferLayers = L.layerGroup()
30
-
31
- const bufferLine = () => {
32
- L.polyline(lineLatLngs).addTo(baseLayers)
33
- const bufferLatLngs = L.GeoUtil.bufferLine(lineLatLngs, 100)
34
- L.polygon(bufferLatLngs, { weight: 0, color: 'violet' }).addTo(bufferLayers)
35
- }
36
-
37
- const bufferArea = () => {
38
- L.polygon(areaLatLngs).addTo(baseLayers)
39
- const bufferLatLngs = L.GeoUtil.bufferArea(areaLatLngs, 100)
40
- L.polygon(bufferLatLngs, { weight: 0, color: 'DarkTurquoise' }).addTo(bufferLayers)
41
- }
42
-
43
- const bufferPoint = () => {
44
- L.circleMarker(pointLatLng).addTo(baseLayers)
45
- const bufferLatLngs = L.GeoUtil.bufferPoint(pointLatLng, 500)
46
- L.polygon(bufferLatLngs, { weight: 0, color: 'greenyellow' }).addTo(bufferLayers)
47
- }
48
-
49
- const initMap = (map) => {
50
- map.addLayer(baseLayers)
51
- map.addLayer(bufferLayers)
52
- map.on('click', (event) => {
53
- console.log(event.latlng)
54
- })
55
-
56
- baseLayers.clearLayers()
57
- bufferLayers.clearLayers()
58
- bufferLine()
59
- bufferArea()
60
- bufferPoint()
61
-
62
- _.delay(() => {
63
- map.fitBounds(L.latLngBounds([...lineLatLngs, ...areaLatLngs, pointLatLng]))
64
- }, 250)
65
- }
66
- </script>
@@ -1,74 +0,0 @@
1
- <template>
2
- <div class="map-container">
3
- <vae-map :base-layers="['GaoDe.Normal.Map']" @init-map="initMap" />
4
- <div class="tools">
5
- <el-button size="small" @click="setIconStyle('blue')">蓝色</el-button>
6
- <el-button size="small" @click="setIconStyle('red')">红色</el-button>
7
- <el-button size="small" @click="setIconStyle('yellow')">黄色</el-button>
8
- <el-button size="small" @click="setIconStyle('orange')">橙色</el-button>
9
- <el-button size="small" @click="setIconStyle('gray')">灰色</el-button>
10
- <el-button size="small" @click="setIconStyle('cyan')">青绿</el-button>
11
- <el-button size="small" @click="setIconStyle('purple')">紫色</el-button>
12
- <el-button size="small" @click="setIconStyle('pink')">粉色</el-button>
13
- <el-button size="small" @click="setIconStyle('transparent')">透明</el-button>
14
- </div>
15
- </div>
16
- </template>
17
-
18
- <script setup>
19
- import { ref } from 'vue'
20
-
21
- const map = ref(null)
22
- const baseLayers = ref(new L.MarkerClusterGroupX())
23
-
24
- const getRandomLatLng = () => {
25
- const bounds = L.latLngBounds([
26
- { lat: 35.097439809364204, lng: 115.25756835937501 },
27
- { lat: 33.8247936182649, lng: 114.74670410156251 },
28
- { lat: 33.50475906922609, lng: 118.27331542968751 },
29
- { lat: 34.800272350556824, lng: 118.6358642578125 }
30
- ])
31
- const north = bounds.getNorth()
32
- const south = bounds.getSouth()
33
- const east = bounds.getEast()
34
- const west = bounds.getWest()
35
- const lat = (north - south) * Math.random() + south
36
- const lng = (east - west) * Math.random() + west
37
- return L.latLng(lat, lng)
38
- }
39
-
40
- const addMarkers = () => {
41
- for (let i = 0; i < 200; i += 1) {
42
- const latLng = getRandomLatLng()
43
- L.marker(latLng).addTo(baseLayers.value)
44
- L.marker(latLng).addTo(baseLayers.value)
45
- }
46
- }
47
-
48
- const setIconStyle = (color) => {
49
- baseLayers.value.clearLayers()
50
- baseLayers.value = new L.MarkerClusterGroupX({
51
- iconStyle: color
52
- }).addTo(map.value)
53
- addMarkers()
54
- }
55
-
56
- const initMap = (value) => {
57
- map.value = value
58
- setIconStyle()
59
- }
60
- </script>
61
-
62
- <style lang="less" scoped>
63
- .map-container {
64
- height: 100%;
65
- position: relative;
66
-
67
- .tools {
68
- position: absolute;
69
- right: 10px;
70
- top: 10px;
71
- z-index: 2000;
72
- }
73
- }
74
- </style>
@@ -1,85 +0,0 @@
1
- <template>
2
- <div class="map-container">
3
- <vae-lrmap :options="options" @init-map="initMap" @reload-map="hdReloadMap" />
4
- <div class="tools">
5
- <el-button size="small" @click="reloadBJ54">BJ54</el-button>
6
- <el-button size="small" @click="reloadEPSG3857">L.CRS.EPSG3857</el-button>
7
- <el-button size="small" @click="addNewMap">puzzle</el-button>
8
- </div>
9
- </div>
10
- </template>
11
-
12
- <script setup>
13
- import { computed, ref } from 'vue'
14
-
15
- const optionsBJ54 = {
16
- url: 'http://58.218.64.10:38500/',
17
- dsname: 'XS_MLGIS',
18
- crs: 'bj54',
19
- defaultLayerSets: ['矿井充水性图>8煤']
20
- }
21
-
22
- const optionsEPSG3857 = {
23
- url: 'http://58.218.64.10:38500/',
24
- dsname: 'XS_MLGIS',
25
- crs: L.CRS.EPSG3857,
26
- wmscrs: 'bj54',
27
- defaultLayerSets: ['矿井充水性图>8煤']
28
- }
29
-
30
- const map = ref(null)
31
- const options = ref(optionsBJ54)
32
- const tdtLayer = ref(null)
33
-
34
- const vae = computed(() => map.value?.vae)
35
-
36
- const initMap = (value) => {
37
- map.value = value
38
- tdtLayer.value = L.tileLayer.chinaProvider('TianDiTu.Satellite.Map@1a346e3ea95a3227a097cabf11a901b7')
39
- }
40
-
41
- const hdReloadMap = (value) => {
42
- map.value = value
43
- if (options.value === optionsBJ54) {
44
- map.value.removeLayer(tdtLayer.value)
45
- } else {
46
- tdtLayer.value.addTo(map.value).bringToBack()
47
- }
48
- }
49
-
50
- const reloadBJ54 = () => {
51
- options.value = optionsBJ54
52
- vae.value?.reloadMap()
53
- }
54
-
55
- const reloadEPSG3857 = () => {
56
- options.value = optionsEPSG3857
57
- vae.value?.reloadMap()
58
- }
59
-
60
- const addNewMap = () => {
61
- const client = new L.Vae.Client({
62
- dsname: 'XGKGIS',
63
- url: 'http://58.218.64.10:28406/',
64
- crs: 'bj54',
65
- defaultLayerSets: ['采掘工程平面图']
66
- })
67
- client.createTileLayer().then((layer) => {
68
- layer.addTo(map.value)
69
- })
70
- }
71
- </script>
72
-
73
- <style lang="less" scoped>
74
- .map-container {
75
- height: 100%;
76
- position: relative;
77
-
78
- .tools {
79
- position: absolute;
80
- right: 10px;
81
- top: 10px;
82
- z-index: 2000;
83
- }
84
- }
85
- </style>
@@ -1,49 +0,0 @@
1
- <template>
2
- <div class="map-container">
3
- <vae-lrmap :options="options" @init-map="initMap" />
4
- <vae-map-ctrl-draw-line ref="drawRef" @on-create="handleCreatePolyline" @on-save="saveItems" />
5
- </div>
6
- </template>
7
-
8
- <script setup>
9
- import { ref } from 'vue'
10
-
11
- const initData = {
12
- latLngs: [
13
- [4425993, 548012],
14
- [4425462, 548656]
15
- ]
16
- }
17
-
18
- const drawRef = ref(null)
19
- const map = ref(null)
20
- const options = {
21
- url: 'http://58.218.64.10:38500/',
22
- dsname: 'XS_MLGIS',
23
- crs: 'bj54',
24
- defaultLayerSets: ['采掘工程平面图>8煤']
25
- }
26
-
27
- const initMap = (value) => {
28
- map.value = value
29
- drawRef.value?.enable(map.value, initData)
30
- }
31
-
32
- const handleCreatePolyline = (polyline) => {
33
- polyline.bindTooltip('polyline', {
34
- permanent: true,
35
- direction: 'right'
36
- })
37
- }
38
-
39
- const saveItems = (data) => {
40
- console.log(data)
41
- }
42
- </script>
43
-
44
- <style lang="less" scoped>
45
- .map-container {
46
- height: 100%;
47
- position: relative;
48
- }
49
- </style>
@@ -1,54 +0,0 @@
1
- <template>
2
- <div class="map-container">
3
- <vae-lrmap :options="options" @init-map="initMap" />
4
- <vae-map-ctrl-draw ref="drawRef" @on-create="handleCreatePolygon" @on-save="saveItems" />
5
- </div>
6
- </template>
7
-
8
- <script setup>
9
- import { ref } from 'vue'
10
-
11
- const initData = {
12
- latLngs: [
13
- [37.83858083450778, 112.11063490845389],
14
- [37.82919941967444, 112.11496488333559],
15
- [37.83846349063635, 112.14989225592417],
16
- [37.846981386397296, 112.14555284783862]
17
- ],
18
- htIndex: [0, 1, 3, 2]
19
- }
20
-
21
- const drawRef = ref(null)
22
- const map = ref(null)
23
- const options = {
24
- url: 'http://58.218.64.10:38500/',
25
- dsname: 'XS_MLGIS',
26
- crs: 'bj54',
27
- defaultLayerSets: ['采掘工程平面图>8煤']
28
- }
29
-
30
- const initMap = (value) => {
31
- map.value = value
32
- drawRef.value?.enable(map.value, initData)
33
- }
34
-
35
- const handleCreatePolygon = (polygon) => {
36
- polygon.bindTooltip('polygon', {
37
- permanent: true,
38
- direction: 'right'
39
- })
40
- }
41
-
42
- const saveItems = (data) => {
43
- data.latLngs?.forEach((latLng) => {
44
- console.log(latLng.lat, latLng.lng)
45
- })
46
- }
47
- </script>
48
-
49
- <style lang="less" scoped>
50
- .map-container {
51
- height: 100%;
52
- position: relative;
53
- }
54
- </style>
@@ -1,142 +0,0 @@
1
- <template>
2
- <div class="map-container">
3
- <vae-map :options="options" :base-layers="baseLayers" @init-map="initMap" />
4
- <span class="actions">
5
- <el-button size="small" @click="switchLineLayers">迁徙图</el-button>
6
- <el-button size="small" @click="switchHeatLayers">热力图</el-button>
7
- </span>
8
- </div>
9
- </template>
10
-
11
- <script setup>
12
- import { ref } from 'vue'
13
-
14
- const latLngs = [
15
- [40.2539, 116.4551],
16
- [31.2891, 121.4648],
17
- [23.2196, 113.5107]
18
- ]
19
-
20
- const echartsLatLngs = latLngs.map((item) => [item[1], item[0]])
21
-
22
- const map = ref(null)
23
- const options = {
24
- zoom: 5
25
- }
26
- const baseLayers = ['Geoq.Normal.PurplishBlue']
27
- const lineLayers = L.layerGroup()
28
- const heatLayers = L.layerGroup()
29
-
30
- const addLineLayer = () => {
31
- const planePath = 'path://M1705.06,1318.313v-89.254l-319.9-221.799l0.073-208.063c0.521-84.662-26.629-121.796-63.961-121.491c-37.332-0.305-64.482,36.829-63.961,121.491l0.073,208.063l-319.9,221.799v89.254l330.343-157.288l12.238,241.308l-134.449,92.931l0.531,42.034l175.125-42.917l175.125,42.917l0.531-42.034l-134.449-92.931l12.238-241.308L1705.06,1318.313z'
32
- const series = [
33
- {
34
- coordinateSystem: 'leaflet',
35
- type: 'lines',
36
- zlevel: 1,
37
- polyline: true,
38
- effect: {
39
- show: true,
40
- period: 5,
41
- trailLength: 0.8,
42
- color: '#ffc107',
43
- symbolSize: 8
44
- },
45
- lineStyle: {
46
- color: '#0dcaf0',
47
- opacity: 0.1,
48
- width: 1
49
- },
50
- data: [{ coords: echartsLatLngs }]
51
- },
52
- {
53
- coordinateSystem: 'leaflet',
54
- type: 'lines',
55
- zlevel: 3,
56
- symbol: ['none', 'arrow'],
57
- symbolSize: 10,
58
- effect: {
59
- show: true,
60
- period: 5,
61
- trailLength: 0,
62
- symbol: planePath,
63
- symbolSize: 25
64
- },
65
- lineStyle: {
66
- width: 1,
67
- curveness: 0.2
68
- },
69
- data: [{ coords: [echartsLatLngs[0], echartsLatLngs[2]] }]
70
- },
71
- {
72
- coordinateSystem: 'leaflet',
73
- type: 'effectScatter',
74
- zlevel: 2,
75
- symbolSize: 10,
76
- rippleEffect: {
77
- brushType: 'stroke'
78
- },
79
- data: echartsLatLngs
80
- }
81
- ]
82
- L.echartsLayer({ series }).addTo(lineLayers)
83
- }
84
-
85
- const addHeatLayer = () => {
86
- const chartOptions = {
87
- visualMap: {
88
- show: false,
89
- seriesIndex: 0,
90
- inRange: {
91
- color: ['#313695', '#4575b4', '#74add1', '#abd9e9', '#e0f3f8', '#ffffbf', '#fee090', '#fdae61', '#f46d43', '#d73027', '#a50026']
92
- }
93
- },
94
- series: [{
95
- coordinateSystem: 'leaflet',
96
- type: 'heatmap',
97
- data: echartsLatLngs.map((item, index) => item.concat([(index + 1) * 50])),
98
- pointSize: 15,
99
- blurSize: 5
100
- }]
101
- }
102
- L.echartsLayer(chartOptions).addTo(heatLayers)
103
- }
104
-
105
- const initMap = (value) => {
106
- map.value = value
107
- lineLayers.addTo(map.value)
108
- heatLayers.addTo(map.value)
109
- addLineLayer()
110
- addHeatLayer()
111
- }
112
-
113
- const switchLineLayers = () => {
114
- if (map.value.hasLayer(lineLayers)) {
115
- map.value.removeLayer(lineLayers)
116
- } else {
117
- map.value.addLayer(lineLayers)
118
- }
119
- }
120
-
121
- const switchHeatLayers = () => {
122
- if (map.value.hasLayer(heatLayers)) {
123
- map.value.removeLayer(heatLayers)
124
- } else {
125
- map.value.addLayer(heatLayers)
126
- }
127
- }
128
- </script>
129
-
130
- <style lang="less" scoped>
131
- .map-container {
132
- height: 100%;
133
- position: relative;
134
-
135
- .actions {
136
- position: absolute;
137
- right: 10px;
138
- top: 10px;
139
- z-index: 1000;
140
- }
141
- }
142
- </style>
@@ -1,39 +0,0 @@
1
- <template>
2
- <div class="map-container">
3
- <vae-map :base-layers="baseLayers" @init-map="initMap" />
4
- </div>
5
- </template>
6
-
7
- <script setup>
8
- const baseLayers = ['GaoDe.Normal.Map']
9
-
10
- const initMap = (map) => {
11
- map.on('click', (event) => console.log(event))
12
-
13
- L.elasticMarker(map.getCenter()).setIcon(L.glyphicon({
14
- icon: 'fas fa-cat',
15
- size: 40,
16
- color: 'deeppink'
17
- })).addTo(map)
18
-
19
- L.elasticMarker({ lat: 34.30028857253559, lng: 117.39745616912843 }, {
20
- elasticOpacity: false
21
- }).addTo(map)
22
-
23
- L.elasticMarker({ lat: 34.2974745093329, lng: 117.38054215908052 }).setIcon(L.icon({
24
- iconUrl: '/images/marker.png',
25
- iconSize: [22, 32],
26
- iconAnchor: [11, 32]
27
- })).bindTooltip('elasticMarker', {
28
- permanent: true,
29
- direction: 'right'
30
- }).addTo(map)
31
- }
32
- </script>
33
-
34
- <style lang="less" scoped>
35
- .map-container {
36
- height: 100%;
37
- position: relative;
38
- }
39
- </style>
@@ -1,182 +0,0 @@
1
- <template>
2
- <div class="outer">
3
- <div class="inner">
4
- <vae-map :options="options" @init-map="initMap" />
5
- </div>
6
- <div class="actions">
7
- <div style="margin-top: 15px">
8
- <el-button size="small" type="success" @click="addGridOverlay">添加栅格图片</el-button>
9
- <el-button size="small" type="success" @click="addGameOverlay">添加游戏地图</el-button>
10
- </div>
11
- <el-input v-model="latlngValue" style="margin-top: 25px" />
12
- <div style="margin-top: 15px; text-align: right">
13
- <el-button size="small" @click="addDargonMarker">添加标注</el-button>
14
- <el-button size="small" type="danger" @click="clearDargonMarker">清理标注</el-button>
15
- </div>
16
- <div style="margin-top: 30px; text-align: right">
17
- <el-button size="small" @click="addFightMarker">添加动态标注</el-button>
18
- <el-button size="small" type="danger" @click="clearFightMarker">清理动态标注</el-button>
19
- </div>
20
- <div style="margin-top: 30px; text-align: right">
21
- <el-button size="small" type="primary" @click="resetMap">RESET</el-button>
22
- </div>
23
- </div>
24
- </div>
25
- </template>
26
-
27
- <script setup>
28
- import { ref } from 'vue'
29
-
30
- const fighterIcon = L.glyphicon({
31
- icon: 'fas fa-walking',
32
- size: 32,
33
- borderWidth: 2,
34
- background: 'FireBrick',
35
- color: 'white',
36
- boxShadow: false
37
- })
38
-
39
- const dargonIcon = L.glyphicon({
40
- icon: 'fas fa-dragon',
41
- size: 40,
42
- borderWidth: 2,
43
- background: 'Indigo',
44
- color: 'white'
45
- })
46
-
47
- const fighterLatLngs = [
48
- { lat: 290, lng: 261 }, { lat: 318, lng: 250 }, { lat: 330, lng: 233 }, { lat: 356, lng: 217 }, { lat: 380, lng: 218 }, { lat: 407, lng: 216 }, { lat: 425, lng: 219 }, { lat: 429, lng: 174 }, { lat: 428, lng: 120 }, { lat: 427, lng: 67 }, { lat: 428, lng: 28 }, { lat: 398, lng: 35 }, { lat: 368, lng: 54 }, { lat: 327, lng: 68 }, { lat: 258, lng: 70 }, { lat: 233, lng: 62 }, { lat: 192, lng: 56 }, { lat: 157, lng: 54 }, { lat: 131, lng: 53 }, { lat: 102, lng: 54 },
49
- { lat: 105, lng: 79 }, { lat: 122, lng: 113 }, { lat: 132, lng: 131 }, { lat: 149, lng: 147 }, { lat: 171, lng: 164 }, { lat: 192, lng: 174 }, { lat: 213, lng: 182 }, { lat: 224, lng: 194 }, { lat: 228, lng: 210 }, { lat: 224, lng: 233 }, { lat: 207, lng: 253 }, { lat: 186, lng: 255 }, { lat: 171, lng: 259 }, { lat: 178, lng: 280 }, { lat: 190, lng: 298 }, { lat: 194, lng: 318 }, { lat: 189, lng: 339 }, { lat: 183, lng: 364 }, { lat: 179, lng: 398 }, { lat: 188, lng: 417 },
50
- { lat: 182, lng: 449 }, { lat: 171, lng: 479 }, { lat: 172, lng: 503 }, { lat: 175, lng: 532 }, { lat: 182, lng: 553 }, { lat: 184, lng: 589 }, { lat: 199, lng: 610 }, { lat: 234, lng: 618 }, { lat: 260, lng: 620 }, { lat: 274, lng: 614 }, { lat: 278, lng: 584 }, { lat: 278, lng: 553 }, { lat: 278, lng: 531 }, { lat: 282, lng: 501 }, { lat: 287, lng: 491 }, { lat: 296, lng: 491 }, { lat: 313, lng: 496 }, { lat: 333, lng: 505 }, { lat: 348, lng: 508 }, { lat: 368, lng: 505 },
51
- { lat: 379, lng: 488 }, { lat: 391, lng: 476 }, { lat: 402, lng: 458 }, { lat: 408, lng: 448 }, { lat: 415, lng: 435 }, { lat: 421, lng: 418 }, { lat: 424, lng: 404 }, { lat: 432, lng: 380 }, { lat: 448, lng: 380 }, { lat: 448, lng: 431 }, { lat: 447, lng: 459 }, { lat: 446, lng: 491 }, { lat: 447, lng: 524 }, { lat: 449, lng: 569 }, { lat: 433, lng: 591 }, { lat: 419, lng: 592 }, { lat: 397, lng: 607 }, { lat: 376, lng: 608 }, { lat: 369, lng: 623 }, { lat: 372, lng: 658 }
52
- ]
53
-
54
- const mapBounds = [[0, 0], [500, 800]]
55
-
56
- const map = ref(null)
57
- const gridOverlay = ref(null)
58
- const gameOverlay = ref(null)
59
- const latlngValue = ref('')
60
- const dragonMarker = ref(null)
61
- const dragonLayers = L.layerGroup()
62
- const fightLayers = L.layerGroup()
63
- const options = {
64
- zoom: 0,
65
- maxZoom: 1,
66
- minZoom: -1,
67
- crs: L.CRS.Simple
68
- }
69
-
70
- const initMap = (value) => {
71
- map.value = value
72
- dragonLayers.addTo(map.value)
73
- fightLayers.addTo(map.value)
74
- map.value.fitBounds(mapBounds)
75
- }
76
-
77
- const resetMap = () => {
78
- map.value.setView([250, 400], 0)
79
- }
80
-
81
- const addGridOverlay = () => {
82
- if (gridOverlay.value) {
83
- map.value.removeLayer(gridOverlay.value)
84
- }
85
- gridOverlay.value = L.imageOverlay('/images/grid.png', mapBounds).addTo(map.value)
86
- }
87
-
88
- const addGameOverlay = () => {
89
- if (gameOverlay.value) {
90
- map.value.removeLayer(gameOverlay.value)
91
- }
92
- gameOverlay.value = L.imageOverlay('/images/game.png', mapBounds).bringToBack().addTo(map.value)
93
- }
94
-
95
- const addDargonMarker = () => {
96
- const latlng = latlngValue.value.split(',')
97
- if (latlng.length === 2) {
98
- dragonMarker.value = L.marker(latlng).setIcon(dargonIcon).bindTooltip(latlngValue.value, {
99
- permanent: true,
100
- direction: 'right',
101
- offset: [15, 0]
102
- }).addTo(dragonLayers)
103
- }
104
- }
105
-
106
- const clearDargonMarker = () => {
107
- dragonMarker.value = null
108
- dragonLayers.clearLayers()
109
- }
110
-
111
- const showDialog = () => {
112
- const list = [
113
- '我来了',
114
- '是的,我看到了',
115
- '我走了三天三夜',
116
- `你走过了${fighterLatLngs.length}个地方`,
117
- '今天的勇者找恶龙就分享到这里',
118
- '感谢大家观看'
119
- ]
120
-
121
- const showText = (index = 0) => {
122
- const currentLatLng = index % 2 === 0 ? _.last(fighterLatLngs) : dragonMarker.value.getLatLng()
123
- if (!list[index]) {
124
- return
125
- }
126
- L.popup({ offset: [0, -10] }).setContent(
127
- `<div style='font-size:13px;'>${list[index]}</div>`
128
- ).setLatLng(currentLatLng).openOn(map.value)
129
- _.delay(() => {
130
- showText(index + 1)
131
- }, 2000)
132
- }
133
-
134
- showText(0)
135
- }
136
-
137
- const addFightMarker = () => {
138
- const amarker = L.animatedMarker({
139
- latLngs: fighterLatLngs,
140
- duration: 1000 * 15
141
- }).setIcon(fighterIcon).addTo(fightLayers)
142
-
143
- amarker.on('stopmove', () => {
144
- if (dragonMarker.value) {
145
- showDialog()
146
- }
147
- })
148
-
149
- _.delay(() => {
150
- amarker.startMove()
151
- }, 500)
152
- }
153
-
154
- const clearFightMarker = () => {
155
- fightLayers.clearLayers()
156
- }
157
- </script>
158
-
159
- <style lang="less" scoped>
160
- .outer {
161
- height: 100%;
162
- width: 100%;
163
- display: flex;
164
- align-items: center;
165
- justify-content: center;
166
- background: #010101;
167
-
168
- .inner {
169
- height: 550px;
170
- width: 850px;
171
- background: #880000;
172
- }
173
-
174
- .actions {
175
- height: 780px;
176
- width: 400px;
177
- margin-left: 150px;
178
- background: #eee;
179
- padding: 10px 20px;
180
- }
181
- }
182
- </style>