gis-map-szdp 0.0.9 → 0.1.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/dist/a.js +110 -0
- package/dist/gismap.es.js +3525 -2822
- package/dist/gismap.umd.js +12 -12
- package/dist/index.css +1 -1
- package/dist/serviceAreaNormal.png +0 -0
- package/dist/serviceAreaUnNormal.png +0 -0
- package/package.json +2 -2
package/dist/a.js
ADDED
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GCJ-02坐标转WGS-84坐标
|
|
3
|
+
* 支持单个点坐标转换和线坐标串转换
|
|
4
|
+
* @param {Array} coords - 点坐标[经度,纬度]或线坐标串[[经度,纬度],[经度,纬度],...]
|
|
5
|
+
* @returns {Array} 转换后的WGS-84坐标
|
|
6
|
+
*/
|
|
7
|
+
gcj02towgs84(coords) {
|
|
8
|
+
// 参数验证
|
|
9
|
+
if (!Array.isArray(coords) || coords.length === 0) {
|
|
10
|
+
throw new Error("Invalid coordinates: must be a non-empty array");
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
// 判断是否为单个点坐标 [经度,纬度]
|
|
14
|
+
if (typeof coords[0] === "number" && typeof coords[1] === "number") {
|
|
15
|
+
const [lng, lat] = coords;
|
|
16
|
+
|
|
17
|
+
// 常量定义
|
|
18
|
+
const pi = 3.14159265358979324;
|
|
19
|
+
const a = 6378245.0;
|
|
20
|
+
const ee = 0.00669342162296594323;
|
|
21
|
+
|
|
22
|
+
// 判断坐标是否在中国范围外
|
|
23
|
+
const out_of_china = (lng, lat) => {
|
|
24
|
+
return !(lng > 73.66 && lng < 135.05 && lat > 3.86 && lat < 53.55);
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
// 纬度变换函数
|
|
28
|
+
const transformlat = (lng, lat) => {
|
|
29
|
+
let ret =
|
|
30
|
+
-100.0 +
|
|
31
|
+
2.0 * lng +
|
|
32
|
+
3.0 * lat +
|
|
33
|
+
0.2 * lat * lat +
|
|
34
|
+
0.1 * lng * lat +
|
|
35
|
+
0.2 * Math.sqrt(Math.abs(lng));
|
|
36
|
+
ret +=
|
|
37
|
+
((20.0 * Math.sin(6.0 * lng * pi) +
|
|
38
|
+
20.0 * Math.sin(2.0 * lng * pi)) *
|
|
39
|
+
2.0) /
|
|
40
|
+
3.0;
|
|
41
|
+
ret +=
|
|
42
|
+
((20.0 * Math.sin(lat * pi) + 40.0 * Math.sin((lat / 3.0) * pi)) *
|
|
43
|
+
2.0) /
|
|
44
|
+
3.0;
|
|
45
|
+
ret +=
|
|
46
|
+
((160.0 * Math.sin((lat / 12.0) * pi) +
|
|
47
|
+
320 * Math.sin((lat * pi) / 30.0)) *
|
|
48
|
+
2.0) /
|
|
49
|
+
3.0;
|
|
50
|
+
return ret;
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
// 经度变换函数
|
|
54
|
+
const transformlng = (lng, lat) => {
|
|
55
|
+
let ret =
|
|
56
|
+
300.0 +
|
|
57
|
+
lng +
|
|
58
|
+
2.0 * lat +
|
|
59
|
+
0.1 * lng * lng +
|
|
60
|
+
0.1 * lng * lat +
|
|
61
|
+
0.1 * Math.sqrt(Math.abs(lng));
|
|
62
|
+
ret +=
|
|
63
|
+
((20.0 * Math.sin(6.0 * lng * pi) +
|
|
64
|
+
20.0 * Math.sin(2.0 * lng * pi)) *
|
|
65
|
+
2.0) /
|
|
66
|
+
3.0;
|
|
67
|
+
ret +=
|
|
68
|
+
((20.0 * Math.sin(lng * pi) + 40.0 * Math.sin((lng / 3.0) * pi)) *
|
|
69
|
+
2.0) /
|
|
70
|
+
3.0;
|
|
71
|
+
ret +=
|
|
72
|
+
((150.0 * Math.sin((lng / 12.0) * pi) +
|
|
73
|
+
300.0 * Math.sin((lng / 30.0) * pi)) *
|
|
74
|
+
2.0) /
|
|
75
|
+
3.0;
|
|
76
|
+
return ret;
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
// 如果在境外,直接返回原坐标
|
|
80
|
+
if (out_of_china(lng, lat)) {
|
|
81
|
+
return [lng, lat];
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
// 坐标转换计算
|
|
85
|
+
let dlat = transformlat(lng - 105.0, lat - 35.0);
|
|
86
|
+
let dlng = transformlng(lng - 105.0, lat - 35.0);
|
|
87
|
+
const radlat = (lat / 180.0) * pi;
|
|
88
|
+
let magic = Math.sin(radlat);
|
|
89
|
+
magic = 1 - ee * magic * magic;
|
|
90
|
+
const sqrtmagic = Math.sqrt(magic);
|
|
91
|
+
dlat = (dlat * 180.0) / (((a * (1 - ee)) / (magic * sqrtmagic)) * pi);
|
|
92
|
+
dlng = (dlng * 180.0) / ((a / sqrtmagic) * Math.cos(radlat) * pi);
|
|
93
|
+
const mglat = lat + dlat;
|
|
94
|
+
const mglng = lng + dlng;
|
|
95
|
+
|
|
96
|
+
// 反向计算得到WGS84坐标
|
|
97
|
+
return [lng * 2 - mglng, lat * 2 - mglat];
|
|
98
|
+
}
|
|
99
|
+
// 判断是否为线坐标串 [[经度,纬度],[经度,纬度],...]
|
|
100
|
+
else if (Array.isArray(coords[0])) {
|
|
101
|
+
// 对每个点坐标进行转换
|
|
102
|
+
return coords.map((point) => this.gcj02towgs84(point));
|
|
103
|
+
}
|
|
104
|
+
// 参数格式错误
|
|
105
|
+
else {
|
|
106
|
+
throw new Error(
|
|
107
|
+
"Invalid coordinates format: expected [lng, lat] or [[lng, lat], [lng, lat], ...]",
|
|
108
|
+
);
|
|
109
|
+
}
|
|
110
|
+
}
|