@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.
- package/lib/index.js +5376 -0
- package/lib/style.css +1 -0
- package/lib/vae-amap/favicon.ico +0 -0
- package/lib/vae-amap/images/game.png +0 -0
- package/lib/vae-amap/images/grid.png +0 -0
- package/lib/vae-amap/images/marker.png +0 -0
- package/lib/vae-amap/index.js +209 -0
- package/lib/vae-amap/style.css +1 -0
- package/lib/vae-cloudmap/favicon.ico +0 -0
- package/lib/vae-cloudmap/images/game.png +0 -0
- package/lib/vae-cloudmap/images/grid.png +0 -0
- package/lib/vae-cloudmap/images/marker.png +0 -0
- package/lib/vae-cloudmap/index.html +30 -0
- package/lib/vae-cloudmap/index.js +4085 -0
- package/lib/vae-cloudmap/style.css +1 -0
- package/lib/vae-map/favicon.ico +0 -0
- package/lib/vae-map/images/game.png +0 -0
- package/lib/vae-map/images/grid.png +0 -0
- package/lib/vae-map/images/marker.png +0 -0
- package/lib/vae-map/index.html +30 -0
- package/lib/vae-map/index.js +4322 -0
- package/lib/vae-map/style.css +1 -0
- package/package.json +1 -1
- package/plugins/L.AnimatedMarker/favicon.ico +0 -0
- package/plugins/L.AnimatedMarker/images/game.png +0 -0
- package/plugins/L.AnimatedMarker/images/grid.png +0 -0
- package/plugins/L.AnimatedMarker/images/marker.png +0 -0
- package/plugins/L.AnimatedMarker/index.html +30 -0
- package/plugins/L.AnimatedMarker/index.js +83 -0
- package/plugins/L.EchartsLayer/favicon.ico +0 -0
- package/plugins/L.EchartsLayer/images/game.png +0 -0
- package/plugins/L.EchartsLayer/images/grid.png +0 -0
- package/plugins/L.EchartsLayer/images/marker.png +0 -0
- package/plugins/L.EchartsLayer/index.html +30 -0
- package/plugins/L.EchartsLayer/index.js +176 -0
- package/plugins/L.FootageCalculator.Area/favicon.ico +0 -0
- package/plugins/L.FootageCalculator.Area/images/game.png +0 -0
- package/plugins/L.FootageCalculator.Area/images/grid.png +0 -0
- package/plugins/L.FootageCalculator.Area/images/marker.png +0 -0
- package/plugins/L.FootageCalculator.Area/index.html +30 -0
- package/plugins/L.FootageCalculator.Area/index.js +418 -0
- package/plugins/L.FootageCalculator.Line/favicon.ico +0 -0
- package/plugins/L.FootageCalculator.Line/images/game.png +0 -0
- package/plugins/L.FootageCalculator.Line/images/grid.png +0 -0
- package/plugins/L.FootageCalculator.Line/images/marker.png +0 -0
- package/plugins/L.FootageCalculator.Line/index.html +30 -0
- package/plugins/L.FootageCalculator.Line/index.js +416 -0
- package/plugins/L.GeoUtil/favicon.ico +0 -0
- package/plugins/L.GeoUtil/images/game.png +0 -0
- package/plugins/L.GeoUtil/images/grid.png +0 -0
- package/plugins/L.GeoUtil/images/marker.png +0 -0
- package/plugins/L.GeoUtil/index.html +30 -0
- package/plugins/L.GeoUtil/index.js +279 -0
- package/plugins/L.Glyphicon/favicon.ico +0 -0
- package/plugins/L.Glyphicon/images/game.png +0 -0
- package/plugins/L.Glyphicon/images/grid.png +0 -0
- package/plugins/L.Glyphicon/images/marker.png +0 -0
- package/plugins/L.Glyphicon/index.html +30 -0
- package/plugins/L.Glyphicon/index.js +57 -0
- package/plugins/L.Glyphicon/style.css +1 -0
- package/plugins/L.MarkerClusterX/favicon.ico +0 -0
- package/plugins/L.MarkerClusterX/images/game.png +0 -0
- package/plugins/L.MarkerClusterX/images/grid.png +0 -0
- package/plugins/L.MarkerClusterX/images/marker.png +0 -0
- package/plugins/L.MarkerClusterX/index.html +30 -0
- package/plugins/L.MarkerClusterX/index.js +33 -0
- package/plugins/L.MarkerClusterX/style.css +1 -0
- package/plugins/L.SafeDivOverlay/favicon.ico +0 -0
- package/plugins/L.SafeDivOverlay/images/game.png +0 -0
- package/plugins/L.SafeDivOverlay/images/grid.png +0 -0
- package/plugins/L.SafeDivOverlay/images/marker.png +0 -0
- package/plugins/L.SafeDivOverlay/index.html +30 -0
- package/plugins/L.SafeDivOverlay/index.js +26 -0
- package/plugins/L.TileLayer.ChinaProvider/favicon.ico +0 -0
- package/plugins/L.TileLayer.ChinaProvider/images/game.png +0 -0
- package/plugins/L.TileLayer.ChinaProvider/images/grid.png +0 -0
- package/plugins/L.TileLayer.ChinaProvider/images/marker.png +0 -0
- package/plugins/L.TileLayer.ChinaProvider/index.html +30 -0
- package/plugins/L.TileLayer.ChinaProvider/index.js +91 -0
- package/plugins/L.VuePopup/favicon.ico +0 -0
- package/plugins/L.VuePopup/images/game.png +0 -0
- package/plugins/L.VuePopup/images/grid.png +0 -0
- package/plugins/L.VuePopup/images/marker.png +0 -0
- package/plugins/L.VuePopup/index.html +30 -0
- package/plugins/L.VuePopup/index.js +68 -0
- package/plugins/L.VueTooltip/favicon.ico +0 -0
- package/plugins/L.VueTooltip/images/game.png +0 -0
- package/plugins/L.VueTooltip/images/grid.png +0 -0
- package/plugins/L.VueTooltip/images/marker.png +0 -0
- package/plugins/L.VueTooltip/index.html +30 -0
- package/plugins/L.VueTooltip/index.js +68 -0
- package/plugins/Mixin.Map.Measure/favicon.ico +0 -0
- package/plugins/Mixin.Map.Measure/images/game.png +0 -0
- package/plugins/Mixin.Map.Measure/images/grid.png +0 -0
- package/plugins/Mixin.Map.Measure/images/marker.png +0 -0
- package/plugins/Mixin.Map.Measure/index.html +30 -0
- package/plugins/Mixin.Map.Measure/index.js +84 -0
- package/plugins/globals/favicon.ico +0 -0
- package/plugins/globals/images/game.png +0 -0
- package/plugins/globals/images/grid.png +0 -0
- package/plugins/globals/images/marker.png +0 -0
- package/plugins/globals/index.html +30 -0
- package/plugins/globals/index.js +4 -0
- package/build/index.mjs +0 -113
- package/examples/App.vue +0 -18
- package/examples/index.js +0 -13
- package/examples/router/index.js +0 -35
- package/examples/views/amap.vue +0 -29
- package/examples/views/amarker.vue +0 -58
- package/examples/views/buffer.vue +0 -66
- package/examples/views/cluster.vue +0 -74
- package/examples/views/cover.vue +0 -85
- package/examples/views/draw-line.vue +0 -49
- package/examples/views/draw.vue +0 -54
- package/examples/views/echarts.vue +0 -142
- package/examples/views/emarker.vue +0 -39
- package/examples/views/image.vue +0 -182
- package/examples/views/index.vue +0 -61
- package/examples/views/lrmap.vue +0 -108
- package/examples/views/map.vue +0 -82
- package/examples/views/measure.vue +0 -86
- package/examples/views/parts/popup.vue +0 -39
- package/examples/views/parts/tooltip.vue +0 -39
- package/examples/views/push-area.vue +0 -52
- package/examples/views/push-line.vue +0 -84
- package/examples/views/trace.vue +0 -49
- package/jsconfig.json +0 -17
- package/src/components/resize-listener/component.jsx +0 -30
- package/src/components/resize-listener/index.js +0 -3
- package/src/composables/useAutoMessage.js +0 -41
- package/src/composables/useContextMenu.js +0 -99
- package/src/composables/useMapMeasure.js +0 -191
- package/src/composables/useResizeObserver.js +0 -81
- package/src/mixins/message.js +0 -1
- package/src/packages/index.js +0 -16
- package/src/packages/vae-amap/index.js +0 -8
- package/src/packages/vae-amap/style.less +0 -9
- package/src/packages/vae-amap/vae-amap.jsx +0 -98
- package/src/packages/vae-cloudmap/ctrl-context-menu/index.vue +0 -74
- package/src/packages/vae-cloudmap/ctrl-draw/index.vue +0 -499
- package/src/packages/vae-cloudmap/ctrl-draw-line/index.vue +0 -161
- package/src/packages/vae-cloudmap/index.js +0 -57
- package/src/packages/vae-cloudmap/scripts/L.MarkerCluster/index.js +0 -2690
- package/src/packages/vae-cloudmap/scripts/L.MarkerCluster/style.css +0 -14
- package/src/packages/vae-cloudmap/scripts/L.Vae.CRS/index.js +0 -212
- package/src/packages/vae-cloudmap/scripts/L.Vae.Client/index.js +0 -780
- package/src/packages/vae-cloudmap/scripts/Mixin.ContextMenu/index.js +0 -101
- package/src/packages/vae-cloudmap/style.less +0 -163
- package/src/packages/vae-cloudmap/vae-cloudmap.jsx +0 -272
- package/src/packages/vae-map/ctrl-context-menu/index.vue +0 -74
- package/src/packages/vae-map/ctrl-draw/index.vue +0 -498
- package/src/packages/vae-map/ctrl-draw-line/index.vue +0 -128
- package/src/packages/vae-map/index.js +0 -59
- package/src/packages/vae-map/scripts/L.MarkerCluster/index.js +0 -2690
- package/src/packages/vae-map/scripts/L.MarkerCluster/style.css +0 -14
- package/src/packages/vae-map/scripts/L.Vae.CRS/index.js +0 -114
- package/src/packages/vae-map/scripts/L.Vae.Client/index.js +0 -548
- package/src/packages/vae-map/scripts/Mixin.ContextMenu/index.js +0 -1
- package/src/packages/vae-map/style.less +0 -161
- package/src/packages/vae-map/vae-lrmap.jsx +0 -237
- package/src/packages/vae-map/vae-map.jsx +0 -135
- package/src/plugins/L.AnimatedMarker/index.js +0 -158
- package/src/plugins/L.EchartsLayer/index.js +0 -339
- package/src/plugins/L.ElasticMarker/index.js +0 -162
- package/src/plugins/L.FootageCalculator.Area/index.js +0 -263
- package/src/plugins/L.FootageCalculator.Line/index.js +0 -273
- package/src/plugins/L.GeoUtil/buffer.js +0 -67
- package/src/plugins/L.GeoUtil/index.js +0 -284
- package/src/plugins/L.Glyphicon/index.js +0 -91
- package/src/plugins/L.Glyphicon/style.less +0 -37
- package/src/plugins/L.MarkerClusterX/index.js +0 -93
- package/src/plugins/L.MarkerClusterX/style.less +0 -162
- package/src/plugins/L.SafeDivOverlay/index.js +0 -55
- package/src/plugins/L.TileLayer.ChinaProvider/index.js +0 -108
- package/src/plugins/L.VuePopup/index.js +0 -67
- package/src/plugins/L.VueTooltip/index.js +0 -63
- package/src/plugins/Mixin.Map.Measure/index.js +0 -248
- package/src/plugins/globals/index.js +0 -7
- package/src/utils/index.js +0 -36
- package/src/utils/resize-event.js +0 -45
- /package/{public → lib}/favicon.ico +0 -0
- /package/{public → lib}/images/game.png +0 -0
- /package/{public → lib}/images/grid.png +0 -0
- /package/{public → lib}/images/marker.png +0 -0
- /package/{public → lib/vae-amap}/index.html +0 -0
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
import g from "@turf/buffer";
|
|
2
|
+
function c(t, e, n = {}) {
|
|
3
|
+
const r = { type: "Feature" };
|
|
4
|
+
return (n.id === 0 || n.id) && (r.id = n.id), n.bbox && (r.bbox = n.bbox), r.properties = {}, r.geometry = t, r;
|
|
5
|
+
}
|
|
6
|
+
function P(t, e, n = {}) {
|
|
7
|
+
if (!t)
|
|
8
|
+
throw new Error("coordinates is required");
|
|
9
|
+
if (!Array.isArray(t))
|
|
10
|
+
throw new Error("coordinates must be an Array");
|
|
11
|
+
if (t.length < 2)
|
|
12
|
+
throw new Error("coordinates must be at least 2 numbers long");
|
|
13
|
+
if (!d(t[0]) || !d(t[1]))
|
|
14
|
+
throw new Error("coordinates must contain numbers");
|
|
15
|
+
return c({
|
|
16
|
+
type: "Point",
|
|
17
|
+
coordinates: t
|
|
18
|
+
}, e, n);
|
|
19
|
+
}
|
|
20
|
+
function w(t, e, n = {}) {
|
|
21
|
+
for (const o of t) {
|
|
22
|
+
if (o.length < 4)
|
|
23
|
+
throw new Error(
|
|
24
|
+
"Each LinearRing of a Polygon must have 4 or more Positions."
|
|
25
|
+
);
|
|
26
|
+
if (o[o.length - 1].length !== o[0].length)
|
|
27
|
+
throw new Error("First and last Position are not equivalent.");
|
|
28
|
+
for (let i = 0; i < o[o.length - 1].length; i++)
|
|
29
|
+
if (o[o.length - 1][i] !== o[0][i])
|
|
30
|
+
throw new Error("First and last Position are not equivalent.");
|
|
31
|
+
}
|
|
32
|
+
return c({
|
|
33
|
+
type: "Polygon",
|
|
34
|
+
coordinates: t
|
|
35
|
+
}, e, n);
|
|
36
|
+
}
|
|
37
|
+
function A(t, e, n = {}) {
|
|
38
|
+
if (t.length < 2)
|
|
39
|
+
throw new Error("coordinates must be an array of two or more positions");
|
|
40
|
+
return c({
|
|
41
|
+
type: "LineString",
|
|
42
|
+
coordinates: t
|
|
43
|
+
}, e, n);
|
|
44
|
+
}
|
|
45
|
+
function d(t) {
|
|
46
|
+
return !isNaN(t) && t !== null && !Array.isArray(t);
|
|
47
|
+
}
|
|
48
|
+
const x = (t) => {
|
|
49
|
+
let e = [];
|
|
50
|
+
return t.geometry.coordinates.forEach((r) => {
|
|
51
|
+
e.push(r.map((o) => ({
|
|
52
|
+
lat: o[1],
|
|
53
|
+
lng: o[0]
|
|
54
|
+
})));
|
|
55
|
+
}), e;
|
|
56
|
+
}, S = {
|
|
57
|
+
/**
|
|
58
|
+
* 点缓冲分析
|
|
59
|
+
* @param {L.LatLng} center 中心点
|
|
60
|
+
* @param {Number} distance 缓冲距离
|
|
61
|
+
* @param {String} units 单位
|
|
62
|
+
* @returns {Array<Array<L.LatLng>>} 缓冲区经纬度序列
|
|
63
|
+
*/
|
|
64
|
+
bufferPoint(t, e, n = "meters") {
|
|
65
|
+
const r = [t.lng, t.lat], o = g(P(r), e, { units: n });
|
|
66
|
+
return x(o);
|
|
67
|
+
},
|
|
68
|
+
/**
|
|
69
|
+
* 路径缓冲分析
|
|
70
|
+
* @param {Array<L.LatLng>} latLngs 路径经纬度序列
|
|
71
|
+
* @param {Number} distance 缓冲距离
|
|
72
|
+
* @param {String} units 单位
|
|
73
|
+
* @returns {Array<Array<L.LatLng>>} 缓冲区经纬度序列
|
|
74
|
+
*/
|
|
75
|
+
bufferLine(t, e, n = "meters") {
|
|
76
|
+
const r = t.map((i) => [i.lng, i.lat]), o = g(A(r), e, { units: n });
|
|
77
|
+
return x(o);
|
|
78
|
+
},
|
|
79
|
+
/**
|
|
80
|
+
* 区域缓冲分析
|
|
81
|
+
* @param {Array<L.LatLng>} latLngs 区域经纬度序列
|
|
82
|
+
* @param {Number} distance 缓冲距离
|
|
83
|
+
* @param {String} units 单位
|
|
84
|
+
* @returns {Array<Array<L.LatLng>>} 缓冲区经纬度序列
|
|
85
|
+
*/
|
|
86
|
+
bufferArea(t, e, n = "meters") {
|
|
87
|
+
let r = t.map((i) => [i.lng, i.lat]);
|
|
88
|
+
r.push(r[0]);
|
|
89
|
+
const o = g(w([r]), e, { units: n });
|
|
90
|
+
return x(o);
|
|
91
|
+
}
|
|
92
|
+
}, b = {
|
|
93
|
+
/**
|
|
94
|
+
* 角度转弧度
|
|
95
|
+
* @param {角度} angle
|
|
96
|
+
*/
|
|
97
|
+
angleToRad(t) {
|
|
98
|
+
return t * Math.PI / 180;
|
|
99
|
+
},
|
|
100
|
+
/**
|
|
101
|
+
* 弧度转角度
|
|
102
|
+
* @param {弧度} rad
|
|
103
|
+
*/
|
|
104
|
+
radToAngle(t) {
|
|
105
|
+
return t * 180 / Math.PI;
|
|
106
|
+
},
|
|
107
|
+
/**
|
|
108
|
+
* 水平角度转顺时针角
|
|
109
|
+
* @param {角度} angle
|
|
110
|
+
*/
|
|
111
|
+
toClockwiseAngle(t) {
|
|
112
|
+
let e = 90 - t;
|
|
113
|
+
return e < 0 && (e += 360), e;
|
|
114
|
+
},
|
|
115
|
+
/**
|
|
116
|
+
* 求两点水平弧度
|
|
117
|
+
* @param {L.Point} a 起点
|
|
118
|
+
* @param {L.Point} b 终点
|
|
119
|
+
*/
|
|
120
|
+
computeRad(t, e) {
|
|
121
|
+
return Math.atan2(e.y - t.y, e.x - t.x);
|
|
122
|
+
},
|
|
123
|
+
/**
|
|
124
|
+
* 求两点水平角度
|
|
125
|
+
* @param {L.Point} a 起点
|
|
126
|
+
* @param {L.Point} b 终点
|
|
127
|
+
*/
|
|
128
|
+
computeAngle(t, e) {
|
|
129
|
+
return this.radToAngle(this.computeRad(t, e));
|
|
130
|
+
},
|
|
131
|
+
/**
|
|
132
|
+
* 获取线段夹角弧度
|
|
133
|
+
* @param {L.Point} a 交点
|
|
134
|
+
* @param {L.Point} b 终点一
|
|
135
|
+
* @param {L.Point} c 终点二
|
|
136
|
+
*/
|
|
137
|
+
segmentsRad(t, e, n) {
|
|
138
|
+
const r = e.x - t.x, o = e.y - t.y, i = n.x - t.x, l = n.y - t.y, a = r * i + o * l, s = r * l - o * i;
|
|
139
|
+
return Math.atan2(s, a);
|
|
140
|
+
},
|
|
141
|
+
/**
|
|
142
|
+
* 获取点到线段所在直线的垂足
|
|
143
|
+
* @param {L.Point} a 点
|
|
144
|
+
* @param {L.Point} m 线段起点
|
|
145
|
+
* @param {L.Point} n 线段终点
|
|
146
|
+
*/
|
|
147
|
+
footPointOnLine(t, e, n) {
|
|
148
|
+
const r = (e.x - n.x) * (e.x - n.x) + (e.y - n.y) * (e.y - n.y), i = ((t.x - e.x) * (n.x - e.x) + (t.y - e.y) * (n.y - e.y)) / r, l = e.x + i * (n.x - e.x), a = e.y + i * (n.y - e.y);
|
|
149
|
+
return L.point(l, a);
|
|
150
|
+
},
|
|
151
|
+
/**
|
|
152
|
+
* 两线段所在直线的交点坐标,平行或共线时不返回
|
|
153
|
+
* @param {L.Point} a 线段一起点
|
|
154
|
+
* @param {L.Point} b 线段一终点
|
|
155
|
+
* @param {L.Point} c 线段二起点
|
|
156
|
+
* @param {L.Point} d 线段二终点
|
|
157
|
+
*/
|
|
158
|
+
linesIntersection(t, e, n, r) {
|
|
159
|
+
const o = (e.y - t.y) * (r.x - n.x) - (t.x - e.x) * (n.y - r.y);
|
|
160
|
+
if (o) {
|
|
161
|
+
const i = ((e.x - t.x) * (r.x - n.x) * (n.y - t.y) + (e.y - t.y) * (r.x - n.x) * t.x - (r.y - n.y) * (e.x - t.x) * n.x) / o, l = -((e.y - t.y) * (r.y - n.y) * (n.x - t.x) + (e.x - t.x) * (r.y - n.y) * t.y - (r.x - n.x) * (e.y - t.y) * n.y) / o;
|
|
162
|
+
return L.point(i, l);
|
|
163
|
+
}
|
|
164
|
+
},
|
|
165
|
+
/**
|
|
166
|
+
* 根据经纬度计算累计距离,单位米
|
|
167
|
+
* @param {Array<L.LatLng>} latLngs
|
|
168
|
+
* @param {L.CRS} 坐标系,默认使用L.CRS.EPSG3857
|
|
169
|
+
*/
|
|
170
|
+
distanceByLatLngs(t, e = L.CRS.EPSG3857) {
|
|
171
|
+
typeof e.distance != "function" && (e = L.CRS.EPSG3857);
|
|
172
|
+
let n = 0;
|
|
173
|
+
if (Array.isArray(t) && t.length > 1)
|
|
174
|
+
for (let r = 0; r < t.length - 1; r++)
|
|
175
|
+
n += e.distance(t[r], t[r + 1]);
|
|
176
|
+
return n;
|
|
177
|
+
},
|
|
178
|
+
/**
|
|
179
|
+
* 根据经纬度计算面积,单位平方米
|
|
180
|
+
* @param {Array<L.LatLng>} latLngs
|
|
181
|
+
*/
|
|
182
|
+
areaByLatLngs(t) {
|
|
183
|
+
let e = t.length, n = 0, r = Math.PI / 180, o, i;
|
|
184
|
+
if (e > 2) {
|
|
185
|
+
for (let l = 0; l < e; l++)
|
|
186
|
+
o = t[l], i = t[(l + 1) % e], n += (i.lng - o.lng) * r * (2 + Math.sin(o.lat * r) + Math.sin(i.lat * r));
|
|
187
|
+
n = n * 6378137 * 6378137 / 2;
|
|
188
|
+
}
|
|
189
|
+
return Math.abs(n);
|
|
190
|
+
},
|
|
191
|
+
/**
|
|
192
|
+
* 根据坐标点计算面积
|
|
193
|
+
* @param {Array<L.Point>} points
|
|
194
|
+
*/
|
|
195
|
+
areaByPoints(t) {
|
|
196
|
+
let e = 0;
|
|
197
|
+
if (Array.isArray(t) && t.length > 2) {
|
|
198
|
+
let n = 0;
|
|
199
|
+
for (let r = 0; r < t.length; r++)
|
|
200
|
+
r + 1 == t.length ? n += t[r].x * t[0].y - t[0].x * t[r].y : n += t[r].x * t[r + 1].y - t[r + 1].x * t[r].y;
|
|
201
|
+
e = 1 / 2 * Math.abs(n);
|
|
202
|
+
}
|
|
203
|
+
return e;
|
|
204
|
+
},
|
|
205
|
+
/**
|
|
206
|
+
* 转换面积,增加单位
|
|
207
|
+
* @param {number} area 面积数字,单位平方米
|
|
208
|
+
*/
|
|
209
|
+
readableArea(t) {
|
|
210
|
+
let e = 0;
|
|
211
|
+
return t > 1e3 * 1e3 ? e = (t / (1e3 * 1e3)).toFixed(2) + " km²" : e = Math.ceil(t) + " m²", e;
|
|
212
|
+
},
|
|
213
|
+
/**
|
|
214
|
+
* 点是否在多边形内,射线法
|
|
215
|
+
* @param {L.Point} point 给定点
|
|
216
|
+
* @param {Array<L.Point>} points 多边形坐标
|
|
217
|
+
* @returns {Boolean} 是否置于多边形内或边界上
|
|
218
|
+
*/
|
|
219
|
+
isPointInPoly(t, e) {
|
|
220
|
+
const n = t.x, r = t.y;
|
|
221
|
+
let o = !1, i = !1;
|
|
222
|
+
const l = e.length;
|
|
223
|
+
for (let a = 0, s = l - 1; a < l; s = a, a++) {
|
|
224
|
+
const y = e[a].x, u = e[a].y, h = e[s].x, f = e[s].y;
|
|
225
|
+
if ((y === n && u === r || h === n && f === r) && (i = !0), u < r && f >= r || u >= r && f < r) {
|
|
226
|
+
const m = y + (r - u) * (h - y) / (f - u);
|
|
227
|
+
i = m === n, m > n && (o = !o);
|
|
228
|
+
}
|
|
229
|
+
if (i)
|
|
230
|
+
break;
|
|
231
|
+
}
|
|
232
|
+
return i || o;
|
|
233
|
+
},
|
|
234
|
+
/**
|
|
235
|
+
* 点到面的距离,在内部视为0
|
|
236
|
+
* @param {L.Point} point 给定点
|
|
237
|
+
* @param {Array<L.Point>} points 多边形坐标
|
|
238
|
+
* @param {L.CRS} crs 地图CRS
|
|
239
|
+
* @returns {Boolean} 距离数值,若CRS可用,单位为米
|
|
240
|
+
*/
|
|
241
|
+
distanceToPoly(t, e, n) {
|
|
242
|
+
let r = 0;
|
|
243
|
+
if (!this.isPointInPoly(t, e)) {
|
|
244
|
+
let o = [], i = [];
|
|
245
|
+
const l = e.length;
|
|
246
|
+
for (let y = 0, u = l - 1; y < l; u = y, y++)
|
|
247
|
+
o.push(L.LineUtil.pointToSegmentDistance(t, e[y], e[u])), i.push(L.LineUtil.closestPointOnSegment(t, e[y], e[u]));
|
|
248
|
+
r = _.min(o);
|
|
249
|
+
const a = _.indexOf(o, r), s = i[a];
|
|
250
|
+
if (n && n.unproject) {
|
|
251
|
+
const y = n.unproject(t), u = n.unproject(s);
|
|
252
|
+
r = n.distance(y, u);
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
return r;
|
|
256
|
+
},
|
|
257
|
+
/**
|
|
258
|
+
* 点到折线的距离
|
|
259
|
+
* @param {L.Point} point 给定点
|
|
260
|
+
* @param {Array<L.Point>} points 折线坐标
|
|
261
|
+
* @param {L.CRS} crs 地图CRS
|
|
262
|
+
* @param {Boolean} 距离数值,若CRS可用,单位为米
|
|
263
|
+
*/
|
|
264
|
+
distanceToLine(t, e, n) {
|
|
265
|
+
let r = 0, o = [], i = [];
|
|
266
|
+
if (Array.isArray(e) && e.length > 1) {
|
|
267
|
+
for (let s = 0; s < e.length - 1; s++)
|
|
268
|
+
o.push(L.LineUtil.pointToSegmentDistance(t, e[s], e[s + 1])), i.push(L.LineUtil.closestPointOnSegment(t, e[s], e[s + 1]));
|
|
269
|
+
r = _.min(o);
|
|
270
|
+
const l = _.indexOf(o, r), a = i[l];
|
|
271
|
+
if (n && n.unproject) {
|
|
272
|
+
const s = n.unproject(t), y = n.unproject(a);
|
|
273
|
+
r = n.distance(s, y);
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
return r;
|
|
277
|
+
}
|
|
278
|
+
};
|
|
279
|
+
L.GeoUtil = L.extend(L.GeoUtil || {}, _.assign(b, S));
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
|
|
4
|
+
<head>
|
|
5
|
+
<meta charset="utf-8">
|
|
6
|
+
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
7
|
+
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
|
8
|
+
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
|
|
9
|
+
<style type="text/css">
|
|
10
|
+
html {
|
|
11
|
+
width: 100%;
|
|
12
|
+
height: 100%;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
body {
|
|
16
|
+
width: 100%;
|
|
17
|
+
height: 100%;
|
|
18
|
+
margin: 0;
|
|
19
|
+
padding: 0;
|
|
20
|
+
overflow: hidden;
|
|
21
|
+
}
|
|
22
|
+
</style>
|
|
23
|
+
<title>...</title>
|
|
24
|
+
</head>
|
|
25
|
+
|
|
26
|
+
<body>
|
|
27
|
+
<div id="app"></div>
|
|
28
|
+
</body>
|
|
29
|
+
|
|
30
|
+
</html>
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
L.Glyphicon = L.DivIcon.extend({
|
|
2
|
+
options: {
|
|
3
|
+
icon: "fas fa-leaf",
|
|
4
|
+
size: 32,
|
|
5
|
+
fontSize: null,
|
|
6
|
+
background: "white",
|
|
7
|
+
color: "#4d90fe",
|
|
8
|
+
borderRadius: null,
|
|
9
|
+
borderWidth: 2,
|
|
10
|
+
borderColor: null,
|
|
11
|
+
boxShadow: !0,
|
|
12
|
+
additionalCSS: "",
|
|
13
|
+
className: "",
|
|
14
|
+
effect: {
|
|
15
|
+
type: null,
|
|
16
|
+
size: null,
|
|
17
|
+
color: null,
|
|
18
|
+
interval: null
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
initialize(r = {}) {
|
|
22
|
+
L.setOptions(this, r);
|
|
23
|
+
let e = this.options, l = document.createElement("div");
|
|
24
|
+
L.DomUtil.addClass(l, "vae-glyphicon");
|
|
25
|
+
let t = [];
|
|
26
|
+
t.push(`height:${e.size - e.borderWidth * 2}px`), t.push(`width:${e.size - e.borderWidth * 2}px`), t.push(`color:${e.color}`);
|
|
27
|
+
let p = _.isNil(e.fontSize) ? e.size / 2 : e.fontSize;
|
|
28
|
+
t.push(`font-size:${p}px`);
|
|
29
|
+
let h = _.isNil(e.borderRadius) ? e.size : e.borderRadius;
|
|
30
|
+
t.push(`border-radius:${h}px`), t.push(`border-width:${e.borderWidth}px`), t.push(`border-color:${e.borderColor || e.color}`), t.push("border-style:solid"), t.push(`background-color:${e.background}`), e.boxShadow && t.push("box-shadow:0 2px 6px 0 rgba(0, 0, 0, 0.2)"), t.push(e.additionalCSS);
|
|
31
|
+
let d = document.createAttribute("style");
|
|
32
|
+
d.value = t.join(";");
|
|
33
|
+
let a = document.createElement("div");
|
|
34
|
+
L.DomUtil.addClass(a, e.icon), l.setAttributeNode(d), l.appendChild(a);
|
|
35
|
+
let o = e.effect;
|
|
36
|
+
if (o && o.type) {
|
|
37
|
+
let n = document.createElement("div"), c = o.type;
|
|
38
|
+
if (c === "halo") {
|
|
39
|
+
let u = document.createAttribute("style"), i = [];
|
|
40
|
+
L.DomUtil.addClass(n, "halo");
|
|
41
|
+
let s = o.size || e.size * 3;
|
|
42
|
+
i.push(`height:${s}px`), i.push(`width:${s}px`);
|
|
43
|
+
let f = o.color || e.color;
|
|
44
|
+
i.push(`background-color:${f}`), i.push(`top:-${(s - e.size) / 2}px`), i.push(`left:-${(s - e.size) / 2}px`), i.push(`animation:vae-effect-${c} ${o.interval || 2}s 0s infinite ease-in`), u.value = i.join(";"), n.setAttributeNode(u);
|
|
45
|
+
}
|
|
46
|
+
l.appendChild(n);
|
|
47
|
+
}
|
|
48
|
+
L.DivIcon.prototype.initialize.call(this, {
|
|
49
|
+
html: l.outerHTML,
|
|
50
|
+
iconSize: [e.size, e.size],
|
|
51
|
+
className: e.className
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
L.glyphicon = function(r) {
|
|
56
|
+
return new L.Glyphicon(r);
|
|
57
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.vae-glyphicon{display:flex;align-items:center;justify-content:center}.vae-glyphicon .halo{border-radius:50%;position:absolute;pointer-events:none;z-index:-1}@keyframes vae-effect-halo{0%{transform:scale(.2);opacity:0}65%{opacity:.75}75%{opacity:.75}85%{opacity:.2}to{transform:scale(1);opacity:0}}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
|
|
4
|
+
<head>
|
|
5
|
+
<meta charset="utf-8">
|
|
6
|
+
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
7
|
+
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
|
8
|
+
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
|
|
9
|
+
<style type="text/css">
|
|
10
|
+
html {
|
|
11
|
+
width: 100%;
|
|
12
|
+
height: 100%;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
body {
|
|
16
|
+
width: 100%;
|
|
17
|
+
height: 100%;
|
|
18
|
+
margin: 0;
|
|
19
|
+
padding: 0;
|
|
20
|
+
overflow: hidden;
|
|
21
|
+
}
|
|
22
|
+
</style>
|
|
23
|
+
<title>...</title>
|
|
24
|
+
</head>
|
|
25
|
+
|
|
26
|
+
<body>
|
|
27
|
+
<div id="app"></div>
|
|
28
|
+
</body>
|
|
29
|
+
|
|
30
|
+
</html>
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
function c(l) {
|
|
2
|
+
let e = 1, i = 30, r = 6;
|
|
3
|
+
const t = l.getChildCount();
|
|
4
|
+
t > 0 && t <= 9 ? (e = 1, i = 30, r = 6) : t > 9 && t <= 49 ? (e = 2, i = 38, r = 8) : t > 49 && t <= 99 ? (e = 3, i = 46, r = 8) : t > 99 && t <= 499 ? (e = 4, i = 54, r = 10) : t > 499 && t < 999 ? (e = 5, i = 62, r = 10) : (e = 6, i = 70, r = 12);
|
|
5
|
+
const s = `vae-markercluster--icon style--${this.iconStyle || "blue"} level--${e}`, n = i - r, o = `border-radius:${i / 2}px;`, a = `height:${n}px;width:${n}px;border-radius:${n / 2}px;`;
|
|
6
|
+
return L.divIcon({
|
|
7
|
+
html: `<div class="outer center" style="${o}"><div class="inner center" style="${a}">${t}</div></div>`,
|
|
8
|
+
className: s,
|
|
9
|
+
iconSize: [i, i]
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
L.MarkerClusterGroupX = L.MarkerClusterGroup.extend({
|
|
13
|
+
options: {
|
|
14
|
+
iconStyle: "blue",
|
|
15
|
+
showCoverageOnHover: !1,
|
|
16
|
+
maxClusterRadius: 60,
|
|
17
|
+
spiderLegPolylineOptions: {
|
|
18
|
+
weight: 2,
|
|
19
|
+
dashArray: [5, 5],
|
|
20
|
+
interactive: !1,
|
|
21
|
+
opacity: 0.8
|
|
22
|
+
},
|
|
23
|
+
iconCreateFunction: c
|
|
24
|
+
},
|
|
25
|
+
initialize(l = {}) {
|
|
26
|
+
L.setOptions(this, l);
|
|
27
|
+
const e = this.options.iconStyle || "blue";
|
|
28
|
+
this.options.spiderLegPolylineOptions.color = e == "red" ? "hsl(354, 70%, 54%)" : e == "blue" ? "hsl(211, 100%, 45%)" : e == "green" ? "hsl(134, 61%, 41%)" : e == "gray" ? "#606266" : e == "yellow" ? "#f9c31f" : e == "orange" ? "#fd7e14" : e == "cyan" ? "#17a2b8" : e == "purple" ? "#5c11d4" : e == "pink" ? "#e83e8c" : e == "transparent" ? "rgba(0,0,0,0.6)" : null, L.MarkerClusterGroup.prototype.initialize.call(this, this.options);
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
L.markerClusterGroupX = function(l) {
|
|
32
|
+
return new L.MarkerClusterGroupX(l);
|
|
33
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.vae-markercluster--icon .outer{height:100%;width:100%;font-size:12px}.vae-markercluster--icon .outer .inner{color:#fff;font-weight:700}.vae-markercluster--icon .center{display:flex;align-items:center;justify-content:center}.vae-markercluster--icon.style--red.level--1 .outer{background:#ff7548}.vae-markercluster--icon.style--red.level--1 .outer .inner{background:#da2b3c}.vae-markercluster--icon.style--red.level--2 .outer{background:#ff6e3e}.vae-markercluster--icon.style--red.level--2 .outer .inner{background:#d02536}.vae-markercluster--icon.style--red.level--3 .outer{background:#f63}.vae-markercluster--icon.style--red.level--3 .outer .inner{background:#c32232}.vae-markercluster--icon.style--red.level--4 .outer{background:#ff5e29}.vae-markercluster--icon.style--red.level--4 .outer .inner{background:#b6202f}.vae-markercluster--icon.style--red.level--5 .outer{background:#ff571f}.vae-markercluster--icon.style--red.level--5 .outer .inner{background:#a91e2c}.vae-markercluster--icon.style--red.level--6 .outer{background:#ff4f15}.vae-markercluster--icon.style--red.level--6 .outer .inner{background:#9c1c28}.vae-markercluster--icon.style--orange.level--1 .outer{background:#f9c21a}.vae-markercluster--icon.style--orange.level--1 .outer .inner{background:#fd780a}.vae-markercluster--icon.style--orange.level--2 .outer{background:#f9c015}.vae-markercluster--icon.style--orange.level--2 .outer .inner{background:#fa7302}.vae-markercluster--icon.style--orange.level--3 .outer{background:#f9bf10}.vae-markercluster--icon.style--orange.level--3 .outer .inner{background:#f06e02}.vae-markercluster--icon.style--orange.level--4 .outer{background:#f8be0b}.vae-markercluster--icon.style--orange.level--4 .outer .inner{background:#e66a02}.vae-markercluster--icon.style--orange.level--5 .outer{background:#f8bc07}.vae-markercluster--icon.style--orange.level--5 .outer .inner{background:#dc6502}.vae-markercluster--icon.style--orange.level--6 .outer{background:#f3b807}.vae-markercluster--icon.style--orange.level--6 .outer .inner{background:#d26102}.vae-markercluster--icon.style--yellow.level--1 .outer{background:#fdfd6d}.vae-markercluster--icon.style--yellow.level--1 .outer .inner{background:#f9bf10}.vae-markercluster--icon.style--yellow.level--2 .outer{background:#fdfd63}.vae-markercluster--icon.style--yellow.level--2 .outer .inner{background:#f3b807}.vae-markercluster--icon.style--yellow.level--3 .outer{background:#fdfd59}.vae-markercluster--icon.style--yellow.level--3 .outer .inner{background:#e4ad06}.vae-markercluster--icon.style--yellow.level--4 .outer{background:#fcfc4f}.vae-markercluster--icon.style--yellow.level--4 .outer .inner{background:#d5a206}.vae-markercluster--icon.style--yellow.level--5 .outer{background:#fcfc45}.vae-markercluster--icon.style--yellow.level--5 .outer .inner{background:#c69605}.vae-markercluster--icon.style--yellow.level--6 .outer{background:#fcfc3b}.vae-markercluster--icon.style--yellow.level--6 .outer .inner{background:#b78b05}.vae-markercluster--icon.style--blue.level--1 .outer{background:#4dc3ff}.vae-markercluster--icon.style--blue.level--1 .outer .inner{background:#0068d6}.vae-markercluster--icon.style--blue.level--2 .outer{background:#42c0ff}.vae-markercluster--icon.style--blue.level--2 .outer .inner{background:#0060c7}.vae-markercluster--icon.style--blue.level--3 .outer{background:#38bdff}.vae-markercluster--icon.style--blue.level--3 .outer .inner{background:#0059b8}.vae-markercluster--icon.style--blue.level--4 .outer{background:#2eb9ff}.vae-markercluster--icon.style--blue.level--4 .outer .inner{background:#0051a8}.vae-markercluster--icon.style--blue.level--5 .outer{background:#24b6ff}.vae-markercluster--icon.style--blue.level--5 .outer .inner{background:#004a99}.vae-markercluster--icon.style--blue.level--6 .outer{background:#1ab2ff}.vae-markercluster--icon.style--blue.level--6 .outer .inner{background:#00438a}.vae-markercluster--icon.style--green.level--1 .outer{background:#7bcb52}.vae-markercluster--icon.style--green.level--1 .outer .inner{background:#269c41}.vae-markercluster--icon.style--green.level--2 .outer{background:#75c94a}.vae-markercluster--icon.style--green.level--2 .outer .inner{background:#23903c}.vae-markercluster--icon.style--green.level--3 .outer{background:#6fc743}.vae-markercluster--icon.style--green.level--3 .outer .inner{background:#208337}.vae-markercluster--icon.style--green.level--4 .outer{background:#69c43b}.vae-markercluster--icon.style--green.level--4 .outer .inner{background:#1d7732}.vae-markercluster--icon.style--green.level--5 .outer{background:#64bc38}.vae-markercluster--icon.style--green.level--5 .outer .inner{background:#1a6b2d}.vae-markercluster--icon.style--green.level--6 .outer{background:#60b536}.vae-markercluster--icon.style--green.level--6 .outer .inner{background:#175e28}.vae-markercluster--icon.style--cyan.level--1 .outer{background:#00fafa}.vae-markercluster--icon.style--cyan.level--1 .outer .inner{background:#169aaf}.vae-markercluster--icon.style--cyan.level--2 .outer{background:#00f5f5}.vae-markercluster--icon.style--cyan.level--2 .outer .inner{background:#1592a6}.vae-markercluster--icon.style--cyan.level--3 .outer{background:#00f0f0}.vae-markercluster--icon.style--cyan.level--3 .outer .inner{background:#148a9d}.vae-markercluster--icon.style--cyan.level--4 .outer{background:#00ebeb}.vae-markercluster--icon.style--cyan.level--4 .outer .inner{background:#128294}.vae-markercluster--icon.style--cyan.level--5 .outer{background:#00e5e6}.vae-markercluster--icon.style--cyan.level--5 .outer .inner{background:#117a8b}.vae-markercluster--icon.style--cyan.level--6 .outer{background:#00e0e0}.vae-markercluster--icon.style--cyan.level--6 .outer .inner{background:#107282}.vae-markercluster--icon.style--purple.level--1 .outer{background:#64abf7}.vae-markercluster--icon.style--purple.level--1 .outer .inner{background:#5610c6}.vae-markercluster--icon.style--purple.level--2 .outer{background:#5aa6f6}.vae-markercluster--icon.style--purple.level--2 .outer .inner{background:#500fb8}.vae-markercluster--icon.style--purple.level--3 .outer{background:#51a0f6}.vae-markercluster--icon.style--purple.level--3 .outer .inner{background:#4a0eaa}.vae-markercluster--icon.style--purple.level--4 .outer{background:#479bf5}.vae-markercluster--icon.style--purple.level--4 .outer .inner{background:#430c9b}.vae-markercluster--icon.style--purple.level--5 .outer{background:#3d96f5}.vae-markercluster--icon.style--purple.level--5 .outer .inner{background:#3d0b8d}.vae-markercluster--icon.style--purple.level--6 .outer{background:#3491f4}.vae-markercluster--icon.style--purple.level--6 .outer .inner{background:#370a7f}.vae-markercluster--icon.style--pink.level--1 .outer{background:#f6b1c2}.vae-markercluster--icon.style--pink.level--1 .outer .inner{background:#e63084}.vae-markercluster--icon.style--pink.level--2 .outer{background:#f5a8bb}.vae-markercluster--icon.style--pink.level--2 .outer .inner{background:#e5237c}.vae-markercluster--icon.style--pink.level--3 .outer{background:#f49fb4}.vae-markercluster--icon.style--pink.level--3 .outer .inner{background:#de1a74}.vae-markercluster--icon.style--pink.level--4 .outer{background:#f395ac}.vae-markercluster--icon.style--pink.level--4 .outer .inner{background:#d0196d}.vae-markercluster--icon.style--pink.level--5 .outer{background:#f28ca5}.vae-markercluster--icon.style--pink.level--5 .outer .inner{background:#c21766}.vae-markercluster--icon.style--pink.level--6 .outer{background:#f1839e}.vae-markercluster--icon.style--pink.level--6 .outer .inner{background:#b5165f}.vae-markercluster--icon.style--gray.level--1 .outer{background:#babfc7}.vae-markercluster--icon.style--gray.level--1 .outer .inner{background:#595a5e}.vae-markercluster--icon.style--gray.level--2 .outer{background:#b5b9c3}.vae-markercluster--icon.style--gray.level--2 .outer .inner{background:#515356}.vae-markercluster--icon.style--gray.level--3 .outer{background:#afb4be}.vae-markercluster--icon.style--gray.level--3 .outer .inner{background:#4a4b4e}.vae-markercluster--icon.style--gray.level--4 .outer{background:#a9afba}.vae-markercluster--icon.style--gray.level--4 .outer .inner{background:#424446}.vae-markercluster--icon.style--gray.level--5 .outer{background:#a4aab5}.vae-markercluster--icon.style--gray.level--5 .outer .inner{background:#3b3c3f}.vae-markercluster--icon.style--gray.level--6 .outer{background:#9ea4b1}.vae-markercluster--icon.style--gray.level--6 .outer .inner{background:#333537}.vae-markercluster--icon.style--transparent.level--1 .outer{background:#0003}.vae-markercluster--icon.style--transparent.level--1 .outer .inner{background:#0009}.vae-markercluster--icon.style--transparent.level--2 .outer{background:#0003}.vae-markercluster--icon.style--transparent.level--2 .outer .inner{background:#0009}.vae-markercluster--icon.style--transparent.level--3 .outer{background:#0003}.vae-markercluster--icon.style--transparent.level--3 .outer .inner{background:#0009}.vae-markercluster--icon.style--transparent.level--4 .outer{background:#0003}.vae-markercluster--icon.style--transparent.level--4 .outer .inner{background:#0009}.vae-markercluster--icon.style--transparent.level--5 .outer{background:#0003}.vae-markercluster--icon.style--transparent.level--5 .outer .inner{background:#0009}.vae-markercluster--icon.style--transparent.level--6 .outer{background:#0003}.vae-markercluster--icon.style--transparent.level--6 .outer .inner{background:#0009}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
|
|
4
|
+
<head>
|
|
5
|
+
<meta charset="utf-8">
|
|
6
|
+
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
7
|
+
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
|
8
|
+
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
|
|
9
|
+
<style type="text/css">
|
|
10
|
+
html {
|
|
11
|
+
width: 100%;
|
|
12
|
+
height: 100%;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
body {
|
|
16
|
+
width: 100%;
|
|
17
|
+
height: 100%;
|
|
18
|
+
margin: 0;
|
|
19
|
+
padding: 0;
|
|
20
|
+
overflow: hidden;
|
|
21
|
+
}
|
|
22
|
+
</style>
|
|
23
|
+
<title>...</title>
|
|
24
|
+
</head>
|
|
25
|
+
|
|
26
|
+
<body>
|
|
27
|
+
<div id="app"></div>
|
|
28
|
+
</body>
|
|
29
|
+
|
|
30
|
+
</html>
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import r from "leaflet";
|
|
2
|
+
const p = "_safeDivOverlayPatched";
|
|
3
|
+
function s(n) {
|
|
4
|
+
return !!(n && n._map && n._latlng && n._container);
|
|
5
|
+
}
|
|
6
|
+
function i(n, o) {
|
|
7
|
+
var u;
|
|
8
|
+
if (!((u = n == null ? void 0 : n.prototype) != null && u[o]))
|
|
9
|
+
return;
|
|
10
|
+
const t = `${p}_${o}`;
|
|
11
|
+
if (n.prototype[t])
|
|
12
|
+
return;
|
|
13
|
+
const d = n.prototype[o];
|
|
14
|
+
n.include({
|
|
15
|
+
[t]: !0,
|
|
16
|
+
[o](..._) {
|
|
17
|
+
if (s(this))
|
|
18
|
+
return d.apply(this, _);
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
function c(n) {
|
|
23
|
+
!n || n[p] || (i(n.Tooltip, "_animateZoom"), i(n.Tooltip, "_updatePosition"), i(n.Popup, "_animateZoom"), i(n.Popup, "_updatePosition"), n[p] = !0);
|
|
24
|
+
}
|
|
25
|
+
c(r);
|
|
26
|
+
typeof window < "u" && window.L && window.L !== r && c(window.L);
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
|
|
4
|
+
<head>
|
|
5
|
+
<meta charset="utf-8">
|
|
6
|
+
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
7
|
+
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
|
8
|
+
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
|
|
9
|
+
<style type="text/css">
|
|
10
|
+
html {
|
|
11
|
+
width: 100%;
|
|
12
|
+
height: 100%;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
body {
|
|
16
|
+
width: 100%;
|
|
17
|
+
height: 100%;
|
|
18
|
+
margin: 0;
|
|
19
|
+
padding: 0;
|
|
20
|
+
overflow: hidden;
|
|
21
|
+
}
|
|
22
|
+
</style>
|
|
23
|
+
<title>...</title>
|
|
24
|
+
</head>
|
|
25
|
+
|
|
26
|
+
<body>
|
|
27
|
+
<div id="app"></div>
|
|
28
|
+
</body>
|
|
29
|
+
|
|
30
|
+
</html>
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
const m = {
|
|
2
|
+
TianDiTu: {
|
|
3
|
+
Normal: {
|
|
4
|
+
Map: "https://t{s}.tianditu.gov.cn/DataServer?T=vec_w&X={x}&Y={y}&L={z}&tk={key}",
|
|
5
|
+
Annotion: "https://t{s}.tianditu.gov.cn/DataServer?T=cva_w&X={x}&Y={y}&L={z}&tk={key}"
|
|
6
|
+
},
|
|
7
|
+
Satellite: {
|
|
8
|
+
Map: "https://t{s}.tianditu.gov.cn/DataServer?T=img_w&X={x}&Y={y}&L={z}&tk={key}",
|
|
9
|
+
Annotion: "https://t{s}.tianditu.gov.cn/DataServer?T=cia_w&X={x}&Y={y}&L={z}&tk={key}"
|
|
10
|
+
},
|
|
11
|
+
Terrain: {
|
|
12
|
+
Map: "https://t{s}.tianditu.gov.cn/DataServer?T=ter_w&X={x}&Y={y}&L={z}&tk={key}",
|
|
13
|
+
Annotion: "https://t{s}.tianditu.gov.cn/DataServer?T=cta_w&X={x}&Y={y}&L={z}&tk={key}"
|
|
14
|
+
},
|
|
15
|
+
Subdomains: ["0", "1", "2", "3", "4", "5", "6", "7"],
|
|
16
|
+
key: "1a346e3ea95a3227a097cabf11a901b7"
|
|
17
|
+
},
|
|
18
|
+
GaoDe: {
|
|
19
|
+
Normal: {
|
|
20
|
+
Map: "https://webrd0{s}.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=8&x={x}&y={y}&z={z}"
|
|
21
|
+
},
|
|
22
|
+
Satellite: {
|
|
23
|
+
Map: "https://webst0{s}.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}",
|
|
24
|
+
Annotion: "https://webst0{s}.is.autonavi.com/appmaptile?style=8&x={x}&y={y}&z={z}"
|
|
25
|
+
},
|
|
26
|
+
Subdomains: ["1", "2", "3", "4"]
|
|
27
|
+
},
|
|
28
|
+
GaoDe_Mobile: {
|
|
29
|
+
Normal: {
|
|
30
|
+
Map: "https://wprd0{s}.is.autonavi.com/appmaptile?x={x}&y={y}&z={z}&lang=zh_cn&size=1&scl=1&style=7"
|
|
31
|
+
},
|
|
32
|
+
Satellite: {
|
|
33
|
+
Map: "https://wprd0{s}.is.autonavi.com/appmaptile?x={x}&y={y}&z={z}&lang=zh_cn&size=1&scl=1&style=6",
|
|
34
|
+
Annotion: "https://wprd0{s}.is.autonavi.com/appmaptile?x={x}&y={y}&z={z}&lang=zh_cn&size=1&scl=2&style=8"
|
|
35
|
+
},
|
|
36
|
+
Subdomains: ["1", "2", "3", "4"]
|
|
37
|
+
},
|
|
38
|
+
Google: {
|
|
39
|
+
Normal: {
|
|
40
|
+
Map: "https://www.google.cn/maps/vt?lyrs=m&gl=cn&x={x}&y={y}&z={z}"
|
|
41
|
+
},
|
|
42
|
+
Satellite: {
|
|
43
|
+
Map: "https://www.google.cn/maps/vt?lyrs=s&gl=cn&x={x}&y={y}&z={z}",
|
|
44
|
+
Annotion: "https://www.google.cn/maps/vt?lyrs=h&gl=cn&x={x}&y={y}&z={z}"
|
|
45
|
+
},
|
|
46
|
+
Subdomains: []
|
|
47
|
+
},
|
|
48
|
+
Geoq: {
|
|
49
|
+
Normal: {
|
|
50
|
+
Map: "https://map.geoq.cn/ArcGIS/rest/services/ChinaOnlineCommunity/MapServer/tile/{z}/{y}/{x}",
|
|
51
|
+
PurplishBlue: "https://map.geoq.cn/ArcGIS/rest/services/ChinaOnlineStreetPurplishBlue/MapServer/tile/{z}/{y}/{x}",
|
|
52
|
+
Gray: "https://map.geoq.cn/ArcGIS/rest/services/ChinaOnlineStreetGray/MapServer/tile/{z}/{y}/{x}",
|
|
53
|
+
Warm: "https://map.geoq.cn/ArcGIS/rest/services/ChinaOnlineStreetWarm/MapServer/tile/{z}/{y}/{x}"
|
|
54
|
+
},
|
|
55
|
+
Theme: {
|
|
56
|
+
Hydro: "https://thematic.geoq.cn/arcgis/rest/services/ThematicMaps/WorldHydroMap/MapServer/tile/{z}/{y}/{x}",
|
|
57
|
+
Division: "https://thematic.geoq.cn/arcgis/rest/services/ThematicMaps/administrative_division_boundaryandlabel/MapServer/tile/{z}/{y}/{x}"
|
|
58
|
+
},
|
|
59
|
+
Subdomains: []
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
L.TileLayer.ChinaProvider = L.TileLayer.extend({
|
|
63
|
+
initialize(e, i = {}) {
|
|
64
|
+
var n;
|
|
65
|
+
const [p, s] = e.split("@"), a = p.split(".");
|
|
66
|
+
if (a[0] && a.length == 3) {
|
|
67
|
+
const r = a[0], l = a[1], c = a[2], t = m[r];
|
|
68
|
+
if (t) {
|
|
69
|
+
const o = (n = t == null ? void 0 : t[l]) == null ? void 0 : n[c];
|
|
70
|
+
if (o)
|
|
71
|
+
if (t.hasOwnProperty("key") && !s)
|
|
72
|
+
console.error(`provider '${r}' need a key`);
|
|
73
|
+
else {
|
|
74
|
+
const y = {
|
|
75
|
+
maxZoom: 24,
|
|
76
|
+
subdomains: t.Subdomains,
|
|
77
|
+
key: s
|
|
78
|
+
};
|
|
79
|
+
L.TileLayer.prototype.initialize.call(this, o, L.extend(y, i));
|
|
80
|
+
}
|
|
81
|
+
else
|
|
82
|
+
console.error(`provider not found '${e}'`);
|
|
83
|
+
} else
|
|
84
|
+
console.error(`provider not found '${e}'`);
|
|
85
|
+
} else
|
|
86
|
+
console.error(`provider not found '${e}'`);
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
L.tileLayer.chinaProvider = function(e, i) {
|
|
90
|
+
return new L.TileLayer.ChinaProvider(e, i);
|
|
91
|
+
};
|