geo-types-cz 1.0.2 → 1.0.4
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/bbox.d.ts +17 -1
- package/dist/bbox.d.ts.map +1 -1
- package/dist/bbox.js +70 -20
- package/dist/bbox.js.map +1 -1
- package/dist/crs.js +7 -14
- package/dist/crs.js.map +1 -1
- package/dist/extensions.js +9 -17
- package/dist/extensions.js.map +1 -1
- package/dist/feature.js +9 -17
- package/dist/feature.js.map +1 -1
- package/dist/geometry.js +14 -27
- package/dist/geometry.js.map +1 -1
- package/dist/index.d.ts +2 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -62
- package/dist/index.js.map +1 -1
- package/dist/service.d.ts +9 -0
- package/dist/service.d.ts.map +1 -0
- package/dist/service.js +33 -0
- package/dist/service.js.map +1 -0
- package/dist/utils.js +16 -29
- package/dist/utils.js.map +1 -1
- package/package.json +1 -1
- package/src/bbox.ts +65 -1
- package/src/index.ts +6 -7
- package/src/service.ts +29 -0
package/dist/bbox.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* 边界框(BBox)类型定义和工具函数
|
|
3
3
|
*/
|
|
4
|
-
import { Position } from './geometry';
|
|
4
|
+
import { Polygon, Position } from './geometry';
|
|
5
5
|
export type BBox2D = [number, number, number, number];
|
|
6
6
|
export type BBox3D = [number, number, number, number, number, number];
|
|
7
7
|
export type BBox = BBox2D | BBox3D;
|
|
@@ -18,8 +18,24 @@ export declare function is3DBBox(bbox: BBox): bbox is BBox3D;
|
|
|
18
18
|
export declare function createBBox2D(west: number, south: number, east: number, north: number): BBox2D;
|
|
19
19
|
export declare function createBBox3D(west: number, south: number, minElevation: number, east: number, north: number, maxElevation: number): BBox3D;
|
|
20
20
|
export declare function bboxToObject(bbox: BBox): BoundingBox;
|
|
21
|
+
export declare function bboxToPolygon(bbox: BBox): Polygon;
|
|
21
22
|
export declare function objectToBBox(boundingBox: BoundingBox): BBox;
|
|
22
23
|
export declare function unionBBox(bbox1: BBox, bbox2: BBox): BBox;
|
|
23
24
|
export declare function isPositionInBBox(position: Position, bbox: BBox): boolean;
|
|
25
|
+
/**
|
|
26
|
+
* @description: 验证bbox(2D)是否符合规范
|
|
27
|
+
* @param {any} bbox
|
|
28
|
+
* @return {*} boolean
|
|
29
|
+
*/
|
|
30
|
+
export declare function validateBBox(bbox: any): bbox is BBox;
|
|
24
31
|
export declare function getBBoxCenter(bbox: BBox): Position;
|
|
32
|
+
/**
|
|
33
|
+
* @description: 根据paths计算bbox
|
|
34
|
+
* @param {any} Position[]
|
|
35
|
+
* @return {*}
|
|
36
|
+
*/
|
|
37
|
+
export declare function calcGeometryBBox(geometry: Position[]): {
|
|
38
|
+
southWest: number[];
|
|
39
|
+
northEast: number[];
|
|
40
|
+
};
|
|
25
41
|
//# sourceMappingURL=bbox.d.ts.map
|
package/dist/bbox.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bbox.d.ts","sourceRoot":"","sources":["../src/bbox.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"bbox.d.ts","sourceRoot":"","sources":["../src/bbox.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAgB,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAG7D,MAAM,MAAM,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAGtD,MAAM,MAAM,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAGtE,MAAM,MAAM,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;AAGnC,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAGD,wBAAgB,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,IAAI,MAAM,CAEnD;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,IAAI,MAAM,CAEnD;AAGD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAE7F;AAED,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,GACnB,MAAM,CAER;AAGD,wBAAgB,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,WAAW,CAkBpD;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAYjD;AAGD,wBAAgB,YAAY,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI,CAkB3D;AAGD,wBAAgB,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,GAAG,IAAI,CAoBxD;AAGD,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO,CAWxE;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,CAYpD;AAGD,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,GAAG,QAAQ,CAWlD;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE;;;EAwBpD"}
|
package/dist/bbox.js
CHANGED
|
@@ -1,33 +1,23 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* 边界框(BBox)类型定义和工具函数
|
|
4
3
|
*/
|
|
5
|
-
|
|
6
|
-
exports.is2DBBox = is2DBBox;
|
|
7
|
-
exports.is3DBBox = is3DBBox;
|
|
8
|
-
exports.createBBox2D = createBBox2D;
|
|
9
|
-
exports.createBBox3D = createBBox3D;
|
|
10
|
-
exports.bboxToObject = bboxToObject;
|
|
11
|
-
exports.objectToBBox = objectToBBox;
|
|
12
|
-
exports.unionBBox = unionBBox;
|
|
13
|
-
exports.isPositionInBBox = isPositionInBBox;
|
|
14
|
-
exports.getBBoxCenter = getBBoxCenter;
|
|
4
|
+
import { GeometryType } from './geometry';
|
|
15
5
|
// 类型守卫函数
|
|
16
|
-
function is2DBBox(bbox) {
|
|
6
|
+
export function is2DBBox(bbox) {
|
|
17
7
|
return bbox.length === 4;
|
|
18
8
|
}
|
|
19
|
-
function is3DBBox(bbox) {
|
|
9
|
+
export function is3DBBox(bbox) {
|
|
20
10
|
return bbox.length === 6;
|
|
21
11
|
}
|
|
22
12
|
// 工具函数
|
|
23
|
-
function createBBox2D(west, south, east, north) {
|
|
13
|
+
export function createBBox2D(west, south, east, north) {
|
|
24
14
|
return [west, south, east, north];
|
|
25
15
|
}
|
|
26
|
-
function createBBox3D(west, south, minElevation, east, north, maxElevation) {
|
|
16
|
+
export function createBBox3D(west, south, minElevation, east, north, maxElevation) {
|
|
27
17
|
return [west, south, minElevation, east, north, maxElevation];
|
|
28
18
|
}
|
|
29
19
|
// 从边界框数组转换为对象
|
|
30
|
-
function bboxToObject(bbox) {
|
|
20
|
+
export function bboxToObject(bbox) {
|
|
31
21
|
if (is2DBBox(bbox)) {
|
|
32
22
|
return {
|
|
33
23
|
west: bbox[0],
|
|
@@ -47,8 +37,22 @@ function bboxToObject(bbox) {
|
|
|
47
37
|
};
|
|
48
38
|
}
|
|
49
39
|
}
|
|
40
|
+
//bbox转换为多边形
|
|
41
|
+
export function bboxToPolygon(bbox) {
|
|
42
|
+
const [minX, minY, maxX, maxY] = bbox;
|
|
43
|
+
return {
|
|
44
|
+
type: GeometryType.Polygon,
|
|
45
|
+
coordinates: [[
|
|
46
|
+
[minX, minY],
|
|
47
|
+
[maxX, minY],
|
|
48
|
+
[maxX, maxY],
|
|
49
|
+
[minX, maxY],
|
|
50
|
+
[minX, minY]
|
|
51
|
+
]]
|
|
52
|
+
};
|
|
53
|
+
}
|
|
50
54
|
// 从对象转换为边界框数组
|
|
51
|
-
function objectToBBox(boundingBox) {
|
|
55
|
+
export function objectToBBox(boundingBox) {
|
|
52
56
|
if (boundingBox.minElevation !== undefined && boundingBox.maxElevation !== undefined) {
|
|
53
57
|
return createBBox3D(boundingBox.west, boundingBox.south, boundingBox.minElevation, boundingBox.east, boundingBox.north, boundingBox.maxElevation);
|
|
54
58
|
}
|
|
@@ -57,7 +61,7 @@ function objectToBBox(boundingBox) {
|
|
|
57
61
|
}
|
|
58
62
|
}
|
|
59
63
|
// 计算两个边界框的并集
|
|
60
|
-
function unionBBox(bbox1, bbox2) {
|
|
64
|
+
export function unionBBox(bbox1, bbox2) {
|
|
61
65
|
const obj1 = bboxToObject(bbox1);
|
|
62
66
|
const obj2 = bboxToObject(bbox2);
|
|
63
67
|
const result = {
|
|
@@ -75,7 +79,7 @@ function unionBBox(bbox1, bbox2) {
|
|
|
75
79
|
return objectToBBox(result);
|
|
76
80
|
}
|
|
77
81
|
// 检查点是否在边界框内
|
|
78
|
-
function isPositionInBBox(position, bbox) {
|
|
82
|
+
export function isPositionInBBox(position, bbox) {
|
|
79
83
|
const [lon, lat, elevation] = position;
|
|
80
84
|
const obj = bboxToObject(bbox);
|
|
81
85
|
const inBounds = lon >= obj.west && lon <= obj.east && lat >= obj.south && lat <= obj.north;
|
|
@@ -84,8 +88,25 @@ function isPositionInBBox(position, bbox) {
|
|
|
84
88
|
}
|
|
85
89
|
return inBounds;
|
|
86
90
|
}
|
|
91
|
+
/**
|
|
92
|
+
* @description: 验证bbox(2D)是否符合规范
|
|
93
|
+
* @param {any} bbox
|
|
94
|
+
* @return {*} boolean
|
|
95
|
+
*/
|
|
96
|
+
export function validateBBox(bbox) {
|
|
97
|
+
if (!Array.isArray(bbox) || bbox.length < 4) {
|
|
98
|
+
return false;
|
|
99
|
+
}
|
|
100
|
+
const [minX, minY, maxX, maxY] = bbox;
|
|
101
|
+
return typeof minX === 'number' &&
|
|
102
|
+
typeof minY === 'number' &&
|
|
103
|
+
typeof maxX === 'number' &&
|
|
104
|
+
typeof maxY === 'number' &&
|
|
105
|
+
minX <= maxX &&
|
|
106
|
+
minY <= maxY;
|
|
107
|
+
}
|
|
87
108
|
// 计算边界框的中心点
|
|
88
|
-
function getBBoxCenter(bbox) {
|
|
109
|
+
export function getBBoxCenter(bbox) {
|
|
89
110
|
const obj = bboxToObject(bbox);
|
|
90
111
|
const centerLon = (obj.west + obj.east) / 2;
|
|
91
112
|
const centerLat = (obj.south + obj.north) / 2;
|
|
@@ -95,4 +116,33 @@ function getBBoxCenter(bbox) {
|
|
|
95
116
|
}
|
|
96
117
|
return [centerLon, centerLat];
|
|
97
118
|
}
|
|
119
|
+
/**
|
|
120
|
+
* @description: 根据paths计算bbox
|
|
121
|
+
* @param {any} Position[]
|
|
122
|
+
* @return {*}
|
|
123
|
+
*/
|
|
124
|
+
export function calcGeometryBBox(geometry) {
|
|
125
|
+
let minLng = Infinity, minLat = Infinity, maxLng = -Infinity, maxLat = -Infinity;
|
|
126
|
+
for (const [lng, lat] of geometry) {
|
|
127
|
+
if (lng < minLng)
|
|
128
|
+
minLng = lng;
|
|
129
|
+
if (lat < minLat)
|
|
130
|
+
minLat = lat;
|
|
131
|
+
if (lng > maxLng)
|
|
132
|
+
maxLng = lng;
|
|
133
|
+
if (lat > maxLat)
|
|
134
|
+
maxLat = lat;
|
|
135
|
+
}
|
|
136
|
+
// 适度留白,避免多边形贴边
|
|
137
|
+
const padLng = 0.001;
|
|
138
|
+
const padLat = 0.001;
|
|
139
|
+
minLng = minLng - padLng;
|
|
140
|
+
minLat = minLat - padLat;
|
|
141
|
+
maxLng = maxLng + padLng;
|
|
142
|
+
maxLat = maxLat + padLat;
|
|
143
|
+
return {
|
|
144
|
+
southWest: [minLng, minLat],
|
|
145
|
+
northEast: [maxLng, maxLat],
|
|
146
|
+
};
|
|
147
|
+
}
|
|
98
148
|
//# sourceMappingURL=bbox.js.map
|
package/dist/bbox.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bbox.js","sourceRoot":"","sources":["../src/bbox.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bbox.js","sourceRoot":"","sources":["../src/bbox.ts"],"names":[],"mappings":"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"}
|
package/dist/crs.js
CHANGED
|
@@ -1,22 +1,15 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* 坐标参考系统(CRS)类型定义
|
|
4
3
|
* 虽然GeoJSON RFC 7946不推荐使用CRS,但在实际GIS应用中仍然重要
|
|
5
4
|
*/
|
|
6
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.CommonCRS = exports.CRSType = void 0;
|
|
8
|
-
exports.isNamedCRS = isNamedCRS;
|
|
9
|
-
exports.isLinkedCRS = isLinkedCRS;
|
|
10
|
-
exports.createNamedCRS = createNamedCRS;
|
|
11
|
-
exports.createLinkedCRS = createLinkedCRS;
|
|
12
5
|
// CRS类型枚举
|
|
13
|
-
var CRSType;
|
|
6
|
+
export var CRSType;
|
|
14
7
|
(function (CRSType) {
|
|
15
8
|
CRSType["Name"] = "name";
|
|
16
9
|
CRSType["Link"] = "link";
|
|
17
|
-
})(CRSType || (
|
|
10
|
+
})(CRSType || (CRSType = {}));
|
|
18
11
|
// 常用的CRS定义
|
|
19
|
-
|
|
12
|
+
export const CommonCRS = {
|
|
20
13
|
// WGS84 地理坐标系
|
|
21
14
|
WGS84: {
|
|
22
15
|
type: CRSType.Name,
|
|
@@ -54,14 +47,14 @@ exports.CommonCRS = {
|
|
|
54
47
|
}
|
|
55
48
|
};
|
|
56
49
|
// 类型守卫函数
|
|
57
|
-
function isNamedCRS(crs) {
|
|
50
|
+
export function isNamedCRS(crs) {
|
|
58
51
|
return crs.type === CRSType.Name;
|
|
59
52
|
}
|
|
60
|
-
function isLinkedCRS(crs) {
|
|
53
|
+
export function isLinkedCRS(crs) {
|
|
61
54
|
return crs.type === CRSType.Link;
|
|
62
55
|
}
|
|
63
56
|
// 工具函数
|
|
64
|
-
function createNamedCRS(name) {
|
|
57
|
+
export function createNamedCRS(name) {
|
|
65
58
|
return {
|
|
66
59
|
type: CRSType.Name,
|
|
67
60
|
properties: {
|
|
@@ -69,7 +62,7 @@ function createNamedCRS(name) {
|
|
|
69
62
|
}
|
|
70
63
|
};
|
|
71
64
|
}
|
|
72
|
-
function createLinkedCRS(href, type) {
|
|
65
|
+
export function createLinkedCRS(href, type) {
|
|
73
66
|
return {
|
|
74
67
|
type: CRSType.Link,
|
|
75
68
|
properties: {
|
package/dist/crs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crs.js","sourceRoot":"","sources":["../src/crs.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"crs.js","sourceRoot":"","sources":["../src/crs.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,UAAU;AACV,MAAM,CAAN,IAAY,OAGX;AAHD,WAAY,OAAO;IACjB,wBAAa,CAAA;IACb,wBAAa,CAAA;AACf,CAAC,EAHW,OAAO,KAAP,OAAO,QAGlB;AA2BD,WAAW;AACX,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,cAAc;IACd,KAAK,EAAE;QACL,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,UAAU,EAAE;YACV,IAAI,EAAE,WAAW;SAClB;KACU;IAEb,WAAW;IACX,WAAW,EAAE;QACX,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,UAAU,EAAE;YACV,IAAI,EAAE,WAAW;SAClB;KACU;IAEb,cAAc;IACd,QAAQ,EAAE;QACR,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,UAAU,EAAE;YACV,IAAI,EAAE,WAAW;SAClB;KACU;IAEb,UAAU;IACV,SAAS,EAAE;QACT,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,UAAU,EAAE;YACV,IAAI,EAAE,WAAW;SAClB;KACU;IAEb,UAAU;IACV,MAAM,EAAE;QACN,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,UAAU,EAAE;YACV,IAAI,EAAE,WAAW;SAClB;KACU;CACL,CAAC;AAEX,SAAS;AACT,MAAM,UAAU,UAAU,CAAC,GAAQ;IACjC,OAAO,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,GAAQ;IAClC,OAAO,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC;AACnC,CAAC;AAED,OAAO;AACP,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,OAAO;QACL,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,UAAU,EAAE;YACV,IAAI;SACL;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAY,EAAE,IAAa;IACzD,OAAO;QACL,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,UAAU,EAAE;YACV,IAAI;YACJ,GAAG,CAAC,IAAI,IAAI,EAAE,IAAI,EAAE,CAAC;SACtB;KACF,CAAC;AACJ,CAAC"}
|
package/dist/extensions.js
CHANGED
|
@@ -1,24 +1,16 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* 扩展的GIS类型定义
|
|
4
3
|
* 包括样式、符号化、图层等前端GIS开发中常用的类型
|
|
5
4
|
*/
|
|
6
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.SpatialQueryType = exports.LayerType = void 0;
|
|
8
|
-
exports.isVectorLayer = isVectorLayer;
|
|
9
|
-
exports.isRasterLayer = isRasterLayer;
|
|
10
|
-
exports.isTileLayer = isTileLayer;
|
|
11
|
-
exports.createVectorLayer = createVectorLayer;
|
|
12
|
-
exports.createTileLayer = createTileLayer;
|
|
13
5
|
// 图层类型
|
|
14
|
-
var LayerType;
|
|
6
|
+
export var LayerType;
|
|
15
7
|
(function (LayerType) {
|
|
16
8
|
LayerType["Vector"] = "vector";
|
|
17
9
|
LayerType["Raster"] = "raster";
|
|
18
10
|
LayerType["TileLayer"] = "tile";
|
|
19
|
-
})(LayerType || (
|
|
11
|
+
})(LayerType || (LayerType = {}));
|
|
20
12
|
// 空间查询类型
|
|
21
|
-
var SpatialQueryType;
|
|
13
|
+
export var SpatialQueryType;
|
|
22
14
|
(function (SpatialQueryType) {
|
|
23
15
|
SpatialQueryType["Intersects"] = "intersects";
|
|
24
16
|
SpatialQueryType["Contains"] = "contains";
|
|
@@ -26,19 +18,19 @@ var SpatialQueryType;
|
|
|
26
18
|
SpatialQueryType["Touches"] = "touches";
|
|
27
19
|
SpatialQueryType["Crosses"] = "crosses";
|
|
28
20
|
SpatialQueryType["Overlaps"] = "overlaps";
|
|
29
|
-
})(SpatialQueryType || (
|
|
21
|
+
})(SpatialQueryType || (SpatialQueryType = {}));
|
|
30
22
|
// 类型守卫函数
|
|
31
|
-
function isVectorLayer(layer) {
|
|
23
|
+
export function isVectorLayer(layer) {
|
|
32
24
|
return layer.type === LayerType.Vector;
|
|
33
25
|
}
|
|
34
|
-
function isRasterLayer(layer) {
|
|
26
|
+
export function isRasterLayer(layer) {
|
|
35
27
|
return layer.type === LayerType.Raster;
|
|
36
28
|
}
|
|
37
|
-
function isTileLayer(layer) {
|
|
29
|
+
export function isTileLayer(layer) {
|
|
38
30
|
return layer.type === LayerType.TileLayer;
|
|
39
31
|
}
|
|
40
32
|
// 工具函数
|
|
41
|
-
function createVectorLayer(id, name, data, style) {
|
|
33
|
+
export function createVectorLayer(id, name, data, style) {
|
|
42
34
|
return {
|
|
43
35
|
id,
|
|
44
36
|
name,
|
|
@@ -49,7 +41,7 @@ function createVectorLayer(id, name, data, style) {
|
|
|
49
41
|
opacity: 1
|
|
50
42
|
};
|
|
51
43
|
}
|
|
52
|
-
function createTileLayer(id, name, url, attribution) {
|
|
44
|
+
export function createTileLayer(id, name, url, attribution) {
|
|
53
45
|
return {
|
|
54
46
|
id,
|
|
55
47
|
name,
|
package/dist/extensions.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extensions.js","sourceRoot":"","sources":["../src/extensions.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"extensions.js","sourceRoot":"","sources":["../src/extensions.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA6DH,OAAO;AACP,MAAM,CAAN,IAAY,SAIX;AAJD,WAAY,SAAS;IACnB,8BAAiB,CAAA;IACjB,8BAAiB,CAAA;IACjB,+BAAkB,CAAA;AACpB,CAAC,EAJW,SAAS,KAAT,SAAS,QAIpB;AAuFD,SAAS;AACT,MAAM,CAAN,IAAY,gBAOX;AAPD,WAAY,gBAAgB;IAC1B,6CAAyB,CAAA;IACzB,yCAAqB,CAAA;IACrB,qCAAiB,CAAA;IACjB,uCAAmB,CAAA;IACnB,uCAAmB,CAAA;IACnB,yCAAqB,CAAA;AACvB,CAAC,EAPW,gBAAgB,KAAhB,gBAAgB,QAO3B;AAuBD,SAAS;AACT,MAAM,UAAU,aAAa,CAAC,KAAY;IACxC,OAAO,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAY;IACxC,OAAO,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAY;IACtC,OAAO,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,SAAS,CAAC;AAC5C,CAAC;AAED,OAAO;AACP,MAAM,UAAU,iBAAiB,CAC/B,EAAU,EACV,IAAY,EACZ,IAAuB,EACvB,KAAa;IAEb,OAAO;QACL,EAAE;QACF,IAAI;QACJ,IAAI,EAAE,SAAS,CAAC,MAAM;QACtB,IAAI;QACJ,KAAK;QACL,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,CAAC;KACX,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,EAAU,EACV,IAAY,EACZ,GAAW,EACX,WAAoB;IAEpB,OAAO;QACL,EAAE;QACF,IAAI;QACJ,IAAI,EAAE,SAAS,CAAC,SAAS;QACzB,GAAG;QACH,WAAW;QACX,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,CAAC;KACX,CAAC;AACJ,CAAC"}
|
package/dist/feature.js
CHANGED
|
@@ -1,30 +1,22 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* GeoJSON要素类型定义
|
|
4
3
|
*/
|
|
5
|
-
|
|
6
|
-
exports.FeatureType = void 0;
|
|
7
|
-
exports.isFeature = isFeature;
|
|
8
|
-
exports.isFeatureCollection = isFeatureCollection;
|
|
9
|
-
exports.createFeature = createFeature;
|
|
10
|
-
exports.createFeatureCollection = createFeatureCollection;
|
|
11
|
-
exports.createCircle = createCircle;
|
|
12
|
-
const utils_1 = require("./utils");
|
|
4
|
+
import { calculateDestination } from './utils';
|
|
13
5
|
// 要素类型枚举
|
|
14
|
-
var FeatureType;
|
|
6
|
+
export var FeatureType;
|
|
15
7
|
(function (FeatureType) {
|
|
16
8
|
FeatureType["Feature"] = "Feature";
|
|
17
9
|
FeatureType["FeatureCollection"] = "FeatureCollection";
|
|
18
|
-
})(FeatureType || (
|
|
10
|
+
})(FeatureType || (FeatureType = {}));
|
|
19
11
|
// 类型守卫函数
|
|
20
|
-
function isFeature(obj) {
|
|
12
|
+
export function isFeature(obj) {
|
|
21
13
|
return obj.type === FeatureType.Feature;
|
|
22
14
|
}
|
|
23
|
-
function isFeatureCollection(obj) {
|
|
15
|
+
export function isFeatureCollection(obj) {
|
|
24
16
|
return obj.type === FeatureType.FeatureCollection;
|
|
25
17
|
}
|
|
26
18
|
// 工具函数
|
|
27
|
-
function createFeature(geometry, properties, id) {
|
|
19
|
+
export function createFeature(geometry, properties, id) {
|
|
28
20
|
const feature = {
|
|
29
21
|
type: FeatureType.Feature,
|
|
30
22
|
geometry,
|
|
@@ -35,18 +27,18 @@ function createFeature(geometry, properties, id) {
|
|
|
35
27
|
}
|
|
36
28
|
return feature;
|
|
37
29
|
}
|
|
38
|
-
function createFeatureCollection(features) {
|
|
30
|
+
export function createFeatureCollection(features) {
|
|
39
31
|
return {
|
|
40
32
|
type: FeatureType.FeatureCollection,
|
|
41
33
|
features
|
|
42
34
|
};
|
|
43
35
|
}
|
|
44
36
|
// 创建圆形
|
|
45
|
-
function createCircle(center, radius, points = 36) {
|
|
37
|
+
export function createCircle(center, radius, points = 36) {
|
|
46
38
|
const circle = [];
|
|
47
39
|
for (let i = 0; i < points; i++) {
|
|
48
40
|
const bearing = (360 / points) * i;
|
|
49
|
-
const point =
|
|
41
|
+
const point = calculateDestination(center, radius, bearing);
|
|
50
42
|
circle.push(point);
|
|
51
43
|
}
|
|
52
44
|
circle.push(circle[0]); // 闭合圆形
|
package/dist/feature.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feature.js","sourceRoot":"","sources":["../src/feature.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"feature.js","sourceRoot":"","sources":["../src/feature.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAE/C,SAAS;AACT,MAAM,CAAN,IAAY,WAGX;AAHD,WAAY,WAAW;IACrB,kCAAmB,CAAA;IACnB,sDAAuC,CAAA;AACzC,CAAC,EAHW,WAAW,KAAX,WAAW,QAGtB;AAwBD,SAAS;AACT,MAAM,UAAU,SAAS,CAAC,GAAkB;IAC1C,OAAO,GAAG,CAAC,IAAI,KAAK,WAAW,CAAC,OAAO,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,GAAkB;IACpD,OAAO,GAAG,CAAC,IAAI,KAAK,WAAW,CAAC,iBAAiB,CAAC;AACpD,CAAC;AAED,OAAO;AACP,MAAM,UAAU,aAAa,CAC3B,QAAkB,EAClB,UAAa,EACb,EAAoB;IAEpB,MAAM,OAAO,GAAkB;QAC7B,IAAI,EAAE,WAAW,CAAC,OAAO;QACzB,QAAQ;QACR,UAAU;KACX,CAAC;IAEF,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;QACrB,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;IAClB,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,QAAyB;IAEzB,OAAO;QACL,IAAI,EAAE,WAAW,CAAC,iBAAiB;QACnC,QAAQ;KACT,CAAC;AACJ,CAAC;AAED,OAAO;AACP,MAAM,UAAU,YAAY,CAAC,MAAgB,EAAE,MAAc,EAAE,SAAiB,EAAE;IAChF,MAAM,MAAM,GAAe,EAAE,CAAA;IAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAA;QAClC,MAAM,KAAK,GAAG,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;QAC3D,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACpB,CAAC;IACD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA,CAAC,OAAO;IAC9B,OAAO,MAAM,CAAA;AACf,CAAC"}
|
package/dist/geometry.js
CHANGED
|
@@ -1,23 +1,10 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* GeoJSON几何类型定义
|
|
4
3
|
* 基于RFC 7946标准
|
|
5
4
|
*/
|
|
6
|
-
|
|
7
|
-
exports.GeometryType = void 0;
|
|
8
|
-
exports.isPoint = isPoint;
|
|
9
|
-
exports.isLineString = isLineString;
|
|
10
|
-
exports.isPolygon = isPolygon;
|
|
11
|
-
exports.isMultiPoint = isMultiPoint;
|
|
12
|
-
exports.isMultiLineString = isMultiLineString;
|
|
13
|
-
exports.isMultiPolygon = isMultiPolygon;
|
|
14
|
-
exports.isGeometryCollection = isGeometryCollection;
|
|
15
|
-
exports.validateCoordinates = validateCoordinates;
|
|
16
|
-
exports.validateGeometry = validateGeometry;
|
|
17
|
-
exports.validateFeatureGeometry = validateFeatureGeometry;
|
|
18
|
-
const feature_1 = require("./feature");
|
|
5
|
+
import { isFeature } from "./feature";
|
|
19
6
|
// 几何类型枚举
|
|
20
|
-
var GeometryType;
|
|
7
|
+
export var GeometryType;
|
|
21
8
|
(function (GeometryType) {
|
|
22
9
|
GeometryType["Point"] = "Point";
|
|
23
10
|
GeometryType["LineString"] = "LineString";
|
|
@@ -26,36 +13,36 @@ var GeometryType;
|
|
|
26
13
|
GeometryType["MultiLineString"] = "MultiLineString";
|
|
27
14
|
GeometryType["MultiPolygon"] = "MultiPolygon";
|
|
28
15
|
GeometryType["GeometryCollection"] = "GeometryCollection";
|
|
29
|
-
})(GeometryType || (
|
|
16
|
+
})(GeometryType || (GeometryType = {}));
|
|
30
17
|
// 几何类型守卫函数
|
|
31
|
-
function isPoint(geometry) {
|
|
18
|
+
export function isPoint(geometry) {
|
|
32
19
|
return geometry.type === GeometryType.Point;
|
|
33
20
|
}
|
|
34
|
-
function isLineString(geometry) {
|
|
21
|
+
export function isLineString(geometry) {
|
|
35
22
|
return geometry.type === GeometryType.LineString;
|
|
36
23
|
}
|
|
37
|
-
function isPolygon(geometry) {
|
|
24
|
+
export function isPolygon(geometry) {
|
|
38
25
|
return geometry.type === GeometryType.Polygon;
|
|
39
26
|
}
|
|
40
|
-
function isMultiPoint(geometry) {
|
|
27
|
+
export function isMultiPoint(geometry) {
|
|
41
28
|
return geometry.type === GeometryType.MultiPoint;
|
|
42
29
|
}
|
|
43
|
-
function isMultiLineString(geometry) {
|
|
30
|
+
export function isMultiLineString(geometry) {
|
|
44
31
|
return geometry.type === GeometryType.MultiLineString;
|
|
45
32
|
}
|
|
46
|
-
function isMultiPolygon(geometry) {
|
|
33
|
+
export function isMultiPolygon(geometry) {
|
|
47
34
|
return geometry.type === GeometryType.MultiPolygon;
|
|
48
35
|
}
|
|
49
|
-
function isGeometryCollection(geometry) {
|
|
36
|
+
export function isGeometryCollection(geometry) {
|
|
50
37
|
return geometry.type === GeometryType.GeometryCollection;
|
|
51
38
|
}
|
|
52
39
|
// 经纬度校验
|
|
53
|
-
function validateCoordinates(coordinates) {
|
|
40
|
+
export function validateCoordinates(coordinates) {
|
|
54
41
|
const [lon, lat] = coordinates;
|
|
55
42
|
return lon >= -180 && lon <= 180 && lat >= -90 && lat <= 90;
|
|
56
43
|
}
|
|
57
44
|
//集合体验证
|
|
58
|
-
function validateGeometry(geometry) {
|
|
45
|
+
export function validateGeometry(geometry) {
|
|
59
46
|
if (!geometry || !geometry.type)
|
|
60
47
|
return false;
|
|
61
48
|
switch (geometry.type) {
|
|
@@ -72,7 +59,7 @@ function validateGeometry(geometry) {
|
|
|
72
59
|
}
|
|
73
60
|
}
|
|
74
61
|
// 验证要素的几何体
|
|
75
|
-
function validateFeatureGeometry(feature) {
|
|
76
|
-
return
|
|
62
|
+
export function validateFeatureGeometry(feature) {
|
|
63
|
+
return isFeature(feature) && validateGeometry(feature.geometry);
|
|
77
64
|
}
|
|
78
65
|
//# sourceMappingURL=geometry.js.map
|
package/dist/geometry.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"geometry.js","sourceRoot":"","sources":["../src/geometry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"geometry.js","sourceRoot":"","sources":["../src/geometry.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAKtC,SAAS;AACT,MAAM,CAAN,IAAY,YAQX;AARD,WAAY,YAAY;IACtB,+BAAe,CAAA;IACf,yCAAyB,CAAA;IACzB,mCAAmB,CAAA;IACnB,yCAAyB,CAAA;IACzB,mDAAmC,CAAA;IACnC,6CAA6B,CAAA;IAC7B,yDAAyC,CAAA;AAC3C,CAAC,EARW,YAAY,KAAZ,YAAY,QAQvB;AA4DD,WAAW;AACX,MAAM,UAAU,OAAO,CAAC,QAAkB;IACxC,OAAO,QAAQ,CAAC,IAAI,KAAK,YAAY,CAAC,KAAK,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,QAAkB;IAC7C,OAAO,QAAQ,CAAC,IAAI,KAAK,YAAY,CAAC,UAAU,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,QAAkB;IAC1C,OAAO,QAAQ,CAAC,IAAI,KAAK,YAAY,CAAC,OAAO,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,QAAkB;IAC7C,OAAO,QAAQ,CAAC,IAAI,KAAK,YAAY,CAAC,UAAU,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,QAAkB;IAClD,OAAO,QAAQ,CAAC,IAAI,KAAK,YAAY,CAAC,eAAe,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,QAAkB;IAC/C,OAAO,QAAQ,CAAC,IAAI,KAAK,YAAY,CAAC,YAAY,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,QAAkB;IACrD,OAAO,QAAQ,CAAC,IAAI,KAAK,YAAY,CAAC,kBAAkB,CAAC;AAC3D,CAAC;AAGD,QAAQ;AACR,MAAM,UAAU,mBAAmB,CAAC,WAAsC;IACxE,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,WAAW,CAAA;IAC9B,OAAO,GAAG,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,CAAA;AAC7D,CAAC;AAED,OAAO;AACP,MAAM,UAAU,gBAAgB,CAAC,QAAa;IAC5C,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI;QAAE,OAAO,KAAK,CAAA;IAE7C,QAAQ,QAAQ,CAAC,IAAI,EAAE,CAAC;QACtB,KAAK,OAAO;YACV,OAAO,OAAO,CAAC,QAAQ,CAAC,IAAI,mBAAmB,CAAC,QAAQ,CAAC,WAA+B,CAAC,CAAA;QAC3F,KAAK,YAAY;YACf,OAAO,YAAY,CAAC,QAAQ,CAAC;gBACtB,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,KAAU,EAAE,EAAE,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAA;QAC/E,KAAK,SAAS;YACZ,OAAO,SAAS,CAAC,QAAQ,CAAC;gBACnB,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,IAAS,EAAE,EAAE,CACvC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAU,EAAE,EAAE,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CACvD,CAAA;QACV;YACE,OAAO,KAAK,CAAA;IAChB,CAAC;AACH,CAAC;AACD,WAAW;AACX,MAAM,UAAU,uBAAuB,CAAC,OAAY;IAClD,OAAO,SAAS,CAAC,OAAO,CAAC,IAAI,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;AACjE,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -8,14 +8,10 @@
|
|
|
8
8
|
export { Position, GeometryType, BaseGeometry, Point, LineString, Polygon, MultiPoint, MultiLineString, MultiPolygon, GeometryCollection, Geometry, isPoint, isLineString, isPolygon, isMultiPoint, isMultiLineString, isMultiPolygon, isGeometryCollection, validateCoordinates, validateFeatureGeometry } from './geometry';
|
|
9
9
|
export { FeatureType, Properties, Feature, FeatureCollection, GeoJSONObject, isFeature, isFeatureCollection, createFeature, createFeatureCollection, createCircle } from './feature';
|
|
10
10
|
export { CRSType, BaseCRS, NamedCRS, LinkedCRS, CRS, CommonCRS, isNamedCRS, isLinkedCRS, createNamedCRS, createLinkedCRS } from './crs';
|
|
11
|
-
export { BBox2D, BBox3D, BBox, BoundingBox, is2DBBox, is3DBBox, createBBox2D, createBBox3D, bboxToObject, objectToBBox, unionBBox, isPositionInBBox, getBBoxCenter } from './bbox';
|
|
11
|
+
export { BBox2D, BBox3D, BBox, validateBBox, BoundingBox, is2DBBox, is3DBBox, createBBox2D, createBBox3D, bboxToObject, objectToBBox, unionBBox, isPositionInBBox, getBBoxCenter, calcGeometryBBox } from './bbox';
|
|
12
12
|
export { Color, Style, StyledFeature, StyledFeatureCollection, LayerType, BaseLayer, VectorLayer, RasterLayer, TileLayer, Layer, MapView, MapConfig, SpatialQueryType, SpatialQuery, AttributeQuery, Query, isVectorLayer, isRasterLayer, isTileLayer, ClusterConfig } from './extensions';
|
|
13
13
|
export { degreesToRadians, radiansToDegrees, calculateDistance, calculateBearing, calculateDestination, calculateLineLength, calculatePolygonArea, calculateGeometryBBox, calculateFeatureCollectionBBox, simplifyLineString, createBuffer } from './utils';
|
|
14
|
-
export
|
|
15
|
-
declare const _default: {
|
|
16
|
-
VERSION: string;
|
|
17
|
-
};
|
|
18
|
-
export default _default;
|
|
14
|
+
export { getAddressByGeocoder } from "./service";
|
|
19
15
|
/**
|
|
20
16
|
* 使用示例:
|
|
21
17
|
*
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,KAAK,EACL,UAAU,EACV,OAAO,EACP,UAAU,EACV,eAAe,EACf,YAAY,EACZ,kBAAkB,EAClB,QAAQ,EACR,OAAO,EACP,YAAY,EACZ,SAAS,EACT,YAAY,EACZ,iBAAiB,EACjB,cAAc,EACd,oBAAoB,EACpB,mBAAmB,EACnB,uBAAuB,EACxB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,WAAW,EACX,UAAU,EACV,OAAO,EACP,iBAAiB,EACjB,aAAa,EACb,SAAS,EACT,mBAAmB,EACnB,aAAa,EACb,uBAAuB,EACvB,YAAY,EACb,MAAM,WAAW,CAAC;AAGnB,OAAO,EACL,OAAO,EACP,OAAO,EACP,QAAQ,EACR,SAAS,EACT,GAAG,EACH,SAAS,EACT,UAAU,EACV,WAAW,EACX,cAAc,EACd,eAAe,EAChB,MAAM,OAAO,CAAC;AAGf,OAAO,EACL,MAAM,EACN,MAAM,EACN,IAAI,EACJ,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,gBAAgB,EAChB,aAAa,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,KAAK,EACL,UAAU,EACV,OAAO,EACP,UAAU,EACV,eAAe,EACf,YAAY,EACZ,kBAAkB,EAClB,QAAQ,EACR,OAAO,EACP,YAAY,EACZ,SAAS,EACT,YAAY,EACZ,iBAAiB,EACjB,cAAc,EACd,oBAAoB,EACpB,mBAAmB,EACnB,uBAAuB,EACxB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,WAAW,EACX,UAAU,EACV,OAAO,EACP,iBAAiB,EACjB,aAAa,EACb,SAAS,EACT,mBAAmB,EACnB,aAAa,EACb,uBAAuB,EACvB,YAAY,EACb,MAAM,WAAW,CAAC;AAGnB,OAAO,EACL,OAAO,EACP,OAAO,EACP,QAAQ,EACR,SAAS,EACT,GAAG,EACH,SAAS,EACT,UAAU,EACV,WAAW,EACX,cAAc,EACd,eAAe,EAChB,MAAM,OAAO,CAAC;AAGf,OAAO,EACL,MAAM,EACN,MAAM,EACN,IAAI,EACJ,YAAY,EACZ,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,gBAAgB,EAChB,aAAa,EACb,gBAAgB,EACjB,MAAM,QAAQ,CAAC;AAGhB,OAAO,EACL,KAAK,EACL,KAAK,EACL,aAAa,EACb,uBAAuB,EACvB,SAAS,EACT,SAAS,EACT,WAAW,EACX,WAAW,EACX,SAAS,EACT,KAAK,EACL,OAAO,EACP,SAAS,EACT,gBAAgB,EAChB,YAAY,EACZ,cAAc,EACd,KAAK,EACL,aAAa,EACb,aAAa,EACb,WAAW,EACX,aAAa,EACd,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,8BAA8B,EAC9B,kBAAkB,EAClB,YAAY,EACb,MAAM,SAAS,CAAC;AAIjB,OAAO,EAAC,oBAAoB,EAAC,MAAM,WAAW,CAAA;AAG9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG"}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* geo-types-cz
|
|
4
3
|
* Complete TypeScript type definitions for GeoJSON and extended GIS types
|
|
@@ -6,73 +5,20 @@
|
|
|
6
5
|
* 这个包提供了完整的GeoJSON类型定义以及扩展的GIS类型,
|
|
7
6
|
* 适用于前端地理信息系统开发。
|
|
8
7
|
*/
|
|
9
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
-
exports.VERSION = exports.createBuffer = exports.simplifyLineString = exports.calculateFeatureCollectionBBox = exports.calculateGeometryBBox = exports.calculatePolygonArea = exports.calculateLineLength = exports.calculateDestination = exports.calculateBearing = exports.calculateDistance = exports.radiansToDegrees = exports.degreesToRadians = exports.isTileLayer = exports.isRasterLayer = exports.isVectorLayer = exports.SpatialQueryType = exports.LayerType = exports.getBBoxCenter = exports.isPositionInBBox = exports.unionBBox = exports.objectToBBox = exports.bboxToObject = exports.createBBox3D = exports.createBBox2D = exports.is3DBBox = exports.is2DBBox = exports.createLinkedCRS = exports.createNamedCRS = exports.isLinkedCRS = exports.isNamedCRS = exports.CommonCRS = exports.CRSType = exports.createCircle = exports.createFeatureCollection = exports.createFeature = exports.isFeatureCollection = exports.isFeature = exports.FeatureType = exports.validateFeatureGeometry = exports.validateCoordinates = exports.isGeometryCollection = exports.isMultiPolygon = exports.isMultiLineString = exports.isMultiPoint = exports.isPolygon = exports.isLineString = exports.isPoint = exports.GeometryType = void 0;
|
|
11
8
|
// 导出几何类型
|
|
12
|
-
|
|
13
|
-
Object.defineProperty(exports, "GeometryType", { enumerable: true, get: function () { return geometry_1.GeometryType; } });
|
|
14
|
-
Object.defineProperty(exports, "isPoint", { enumerable: true, get: function () { return geometry_1.isPoint; } });
|
|
15
|
-
Object.defineProperty(exports, "isLineString", { enumerable: true, get: function () { return geometry_1.isLineString; } });
|
|
16
|
-
Object.defineProperty(exports, "isPolygon", { enumerable: true, get: function () { return geometry_1.isPolygon; } });
|
|
17
|
-
Object.defineProperty(exports, "isMultiPoint", { enumerable: true, get: function () { return geometry_1.isMultiPoint; } });
|
|
18
|
-
Object.defineProperty(exports, "isMultiLineString", { enumerable: true, get: function () { return geometry_1.isMultiLineString; } });
|
|
19
|
-
Object.defineProperty(exports, "isMultiPolygon", { enumerable: true, get: function () { return geometry_1.isMultiPolygon; } });
|
|
20
|
-
Object.defineProperty(exports, "isGeometryCollection", { enumerable: true, get: function () { return geometry_1.isGeometryCollection; } });
|
|
21
|
-
Object.defineProperty(exports, "validateCoordinates", { enumerable: true, get: function () { return geometry_1.validateCoordinates; } });
|
|
22
|
-
Object.defineProperty(exports, "validateFeatureGeometry", { enumerable: true, get: function () { return geometry_1.validateFeatureGeometry; } });
|
|
9
|
+
export { GeometryType, isPoint, isLineString, isPolygon, isMultiPoint, isMultiLineString, isMultiPolygon, isGeometryCollection, validateCoordinates, validateFeatureGeometry } from './geometry';
|
|
23
10
|
// 导出要素类型
|
|
24
|
-
|
|
25
|
-
Object.defineProperty(exports, "FeatureType", { enumerable: true, get: function () { return feature_1.FeatureType; } });
|
|
26
|
-
Object.defineProperty(exports, "isFeature", { enumerable: true, get: function () { return feature_1.isFeature; } });
|
|
27
|
-
Object.defineProperty(exports, "isFeatureCollection", { enumerable: true, get: function () { return feature_1.isFeatureCollection; } });
|
|
28
|
-
Object.defineProperty(exports, "createFeature", { enumerable: true, get: function () { return feature_1.createFeature; } });
|
|
29
|
-
Object.defineProperty(exports, "createFeatureCollection", { enumerable: true, get: function () { return feature_1.createFeatureCollection; } });
|
|
30
|
-
Object.defineProperty(exports, "createCircle", { enumerable: true, get: function () { return feature_1.createCircle; } });
|
|
11
|
+
export { FeatureType, isFeature, isFeatureCollection, createFeature, createFeatureCollection, createCircle } from './feature';
|
|
31
12
|
// 导出坐标参考系统类型
|
|
32
|
-
|
|
33
|
-
Object.defineProperty(exports, "CRSType", { enumerable: true, get: function () { return crs_1.CRSType; } });
|
|
34
|
-
Object.defineProperty(exports, "CommonCRS", { enumerable: true, get: function () { return crs_1.CommonCRS; } });
|
|
35
|
-
Object.defineProperty(exports, "isNamedCRS", { enumerable: true, get: function () { return crs_1.isNamedCRS; } });
|
|
36
|
-
Object.defineProperty(exports, "isLinkedCRS", { enumerable: true, get: function () { return crs_1.isLinkedCRS; } });
|
|
37
|
-
Object.defineProperty(exports, "createNamedCRS", { enumerable: true, get: function () { return crs_1.createNamedCRS; } });
|
|
38
|
-
Object.defineProperty(exports, "createLinkedCRS", { enumerable: true, get: function () { return crs_1.createLinkedCRS; } });
|
|
13
|
+
export { CRSType, CommonCRS, isNamedCRS, isLinkedCRS, createNamedCRS, createLinkedCRS } from './crs';
|
|
39
14
|
// 导出边界框类型
|
|
40
|
-
|
|
41
|
-
Object.defineProperty(exports, "is2DBBox", { enumerable: true, get: function () { return bbox_1.is2DBBox; } });
|
|
42
|
-
Object.defineProperty(exports, "is3DBBox", { enumerable: true, get: function () { return bbox_1.is3DBBox; } });
|
|
43
|
-
Object.defineProperty(exports, "createBBox2D", { enumerable: true, get: function () { return bbox_1.createBBox2D; } });
|
|
44
|
-
Object.defineProperty(exports, "createBBox3D", { enumerable: true, get: function () { return bbox_1.createBBox3D; } });
|
|
45
|
-
Object.defineProperty(exports, "bboxToObject", { enumerable: true, get: function () { return bbox_1.bboxToObject; } });
|
|
46
|
-
Object.defineProperty(exports, "objectToBBox", { enumerable: true, get: function () { return bbox_1.objectToBBox; } });
|
|
47
|
-
Object.defineProperty(exports, "unionBBox", { enumerable: true, get: function () { return bbox_1.unionBBox; } });
|
|
48
|
-
Object.defineProperty(exports, "isPositionInBBox", { enumerable: true, get: function () { return bbox_1.isPositionInBBox; } });
|
|
49
|
-
Object.defineProperty(exports, "getBBoxCenter", { enumerable: true, get: function () { return bbox_1.getBBoxCenter; } });
|
|
15
|
+
export { validateBBox, is2DBBox, is3DBBox, createBBox2D, createBBox3D, bboxToObject, objectToBBox, unionBBox, isPositionInBBox, getBBoxCenter, calcGeometryBBox } from './bbox';
|
|
50
16
|
// 导出扩展类型
|
|
51
|
-
|
|
52
|
-
Object.defineProperty(exports, "LayerType", { enumerable: true, get: function () { return extensions_1.LayerType; } });
|
|
53
|
-
Object.defineProperty(exports, "SpatialQueryType", { enumerable: true, get: function () { return extensions_1.SpatialQueryType; } });
|
|
54
|
-
Object.defineProperty(exports, "isVectorLayer", { enumerable: true, get: function () { return extensions_1.isVectorLayer; } });
|
|
55
|
-
Object.defineProperty(exports, "isRasterLayer", { enumerable: true, get: function () { return extensions_1.isRasterLayer; } });
|
|
56
|
-
Object.defineProperty(exports, "isTileLayer", { enumerable: true, get: function () { return extensions_1.isTileLayer; } });
|
|
17
|
+
export { LayerType, SpatialQueryType, isVectorLayer, isRasterLayer, isTileLayer } from './extensions';
|
|
57
18
|
// 导出工具函数
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
Object.defineProperty(exports, "calculateDistance", { enumerable: true, get: function () { return utils_1.calculateDistance; } });
|
|
62
|
-
Object.defineProperty(exports, "calculateBearing", { enumerable: true, get: function () { return utils_1.calculateBearing; } });
|
|
63
|
-
Object.defineProperty(exports, "calculateDestination", { enumerable: true, get: function () { return utils_1.calculateDestination; } });
|
|
64
|
-
Object.defineProperty(exports, "calculateLineLength", { enumerable: true, get: function () { return utils_1.calculateLineLength; } });
|
|
65
|
-
Object.defineProperty(exports, "calculatePolygonArea", { enumerable: true, get: function () { return utils_1.calculatePolygonArea; } });
|
|
66
|
-
Object.defineProperty(exports, "calculateGeometryBBox", { enumerable: true, get: function () { return utils_1.calculateGeometryBBox; } });
|
|
67
|
-
Object.defineProperty(exports, "calculateFeatureCollectionBBox", { enumerable: true, get: function () { return utils_1.calculateFeatureCollectionBBox; } });
|
|
68
|
-
Object.defineProperty(exports, "simplifyLineString", { enumerable: true, get: function () { return utils_1.simplifyLineString; } });
|
|
69
|
-
Object.defineProperty(exports, "createBuffer", { enumerable: true, get: function () { return utils_1.createBuffer; } });
|
|
70
|
-
// 版本信息
|
|
71
|
-
exports.VERSION = '1.0.0';
|
|
72
|
-
// 默认导出
|
|
73
|
-
exports.default = {
|
|
74
|
-
VERSION: exports.VERSION
|
|
75
|
-
};
|
|
19
|
+
export { degreesToRadians, radiansToDegrees, calculateDistance, calculateBearing, calculateDestination, calculateLineLength, calculatePolygonArea, calculateGeometryBBox, calculateFeatureCollectionBBox, simplifyLineString, createBuffer } from './utils';
|
|
20
|
+
//导出服务函数
|
|
21
|
+
export { getAddressByGeocoder } from "./service";
|
|
76
22
|
/**
|
|
77
23
|
* 使用示例:
|
|
78
24
|
*
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,SAAS;AACT,OAAO,EAEL,YAAY,EAUZ,OAAO,EACP,YAAY,EACZ,SAAS,EACT,YAAY,EACZ,iBAAiB,EACjB,cAAc,EACd,oBAAoB,EACpB,mBAAmB,EACnB,uBAAuB,EACxB,MAAM,YAAY,CAAC;AAEpB,SAAS;AACT,OAAO,EACL,WAAW,EAKX,SAAS,EACT,mBAAmB,EACnB,aAAa,EACb,uBAAuB,EACvB,YAAY,EACb,MAAM,WAAW,CAAC;AAEnB,aAAa;AACb,OAAO,EACL,OAAO,EAKP,SAAS,EACT,UAAU,EACV,WAAW,EACX,cAAc,EACd,eAAe,EAChB,MAAM,OAAO,CAAC;AAEf,UAAU;AACV,OAAO,EAIL,YAAY,EAEZ,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,gBAAgB,EAChB,aAAa,EACb,gBAAgB,EACjB,MAAM,QAAQ,CAAC;AAEhB,SAAS;AACT,OAAO,EAKL,SAAS,EAQT,gBAAgB,EAIhB,aAAa,EACb,aAAa,EACb,WAAW,EAEZ,MAAM,cAAc,CAAC;AAEtB,SAAS;AACT,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,8BAA8B,EAC9B,kBAAkB,EAClB,YAAY,EACb,MAAM,SAAS,CAAC;AAGjB,QAAQ;AACR,OAAO,EAAC,oBAAoB,EAAC,MAAM,WAAW,CAAA;AAG9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Position } from "./geometry";
|
|
2
|
+
/**
|
|
3
|
+
* @description: 高德地图,逆地理编码(坐标 -> 地址),获取地址
|
|
4
|
+
* @param {any} geocoder AMap.Geocoder
|
|
5
|
+
* @param {Position} lnglat 经纬度
|
|
6
|
+
* @return {Promise<string>} 地址
|
|
7
|
+
*/
|
|
8
|
+
export declare function getAddressByGeocoder(geocoder: any, lnglat: Position): Promise<unknown>;
|
|
9
|
+
//# sourceMappingURL=service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,oBAqBnE"}
|
package/dist/service.js
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description: 高德地图,逆地理编码(坐标 -> 地址),获取地址
|
|
3
|
+
* @param {any} geocoder AMap.Geocoder
|
|
4
|
+
* @param {Position} lnglat 经纬度
|
|
5
|
+
* @return {Promise<string>} 地址
|
|
6
|
+
*/
|
|
7
|
+
export function getAddressByGeocoder(geocoder, lnglat) {
|
|
8
|
+
return new Promise((resolve, reject) => {
|
|
9
|
+
// 坐标与地址插件-逆地理编码(坐标 -> 地址)
|
|
10
|
+
geocoder.getAddress(lnglat, function (status, result) {
|
|
11
|
+
if (status === 'complete' && result.regeocode) {
|
|
12
|
+
let address = '';
|
|
13
|
+
if (result.regeocode.aois.length > 0) {
|
|
14
|
+
address += result.regeocode.aois[0].name;
|
|
15
|
+
}
|
|
16
|
+
else if (result.regeocode.pois.length > 0) {
|
|
17
|
+
address += result.regeocode.pois[0].name;
|
|
18
|
+
}
|
|
19
|
+
else if (result.regeocode.roads.length > 0) {
|
|
20
|
+
address += result.regeocode.roads[0].name;
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
address = result.regeocode.formattedAddress;
|
|
24
|
+
}
|
|
25
|
+
resolve(address);
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
reject(result);
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"AACA;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAAa,EAAE,MAAgB;IAClE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,0BAA0B;QAC1B,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,MAAa,EAAE,MAAU;YAC7D,IAAI,MAAM,KAAK,UAAU,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;gBAC9C,IAAI,OAAO,GAAG,EAAE,CAAC;gBACjB,IAAI,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACrC,OAAO,IAAI,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC3C,CAAC;qBAAM,IAAI,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC5C,OAAO,IAAI,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC3C,CAAC;qBAAM,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC7C,OAAO,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC5C,CAAC;qBAAM,CAAC;oBACN,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC;gBAC9C,CAAC;gBACD,OAAO,CAAC,OAAO,CAAC,CAAC;YACnB,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,MAAM,CAAC,CAAC;YACjB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
|
package/dist/utils.js
CHANGED
|
@@ -1,34 +1,21 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* GIS工具函数
|
|
4
3
|
* 提供常用的地理计算和操作函数
|
|
5
4
|
*/
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
exports.radiansToDegrees = radiansToDegrees;
|
|
9
|
-
exports.calculateDistance = calculateDistance;
|
|
10
|
-
exports.calculateBearing = calculateBearing;
|
|
11
|
-
exports.calculateDestination = calculateDestination;
|
|
12
|
-
exports.calculateLineLength = calculateLineLength;
|
|
13
|
-
exports.calculatePolygonArea = calculatePolygonArea;
|
|
14
|
-
exports.calculateGeometryBBox = calculateGeometryBBox;
|
|
15
|
-
exports.calculateFeatureCollectionBBox = calculateFeatureCollectionBBox;
|
|
16
|
-
exports.simplifyLineString = simplifyLineString;
|
|
17
|
-
exports.createBuffer = createBuffer;
|
|
18
|
-
const geometry_1 = require("./geometry");
|
|
19
|
-
const bbox_1 = require("./bbox");
|
|
5
|
+
import { GeometryType } from './geometry';
|
|
6
|
+
import { createBBox2D } from './bbox';
|
|
20
7
|
// 地球半径(米)
|
|
21
8
|
const EARTH_RADIUS = 6378137;
|
|
22
9
|
// 角度转弧度
|
|
23
|
-
function degreesToRadians(degrees) {
|
|
10
|
+
export function degreesToRadians(degrees) {
|
|
24
11
|
return degrees * (Math.PI / 180);
|
|
25
12
|
}
|
|
26
13
|
// 弧度转角度
|
|
27
|
-
function radiansToDegrees(radians) {
|
|
14
|
+
export function radiansToDegrees(radians) {
|
|
28
15
|
return radians * (180 / Math.PI);
|
|
29
16
|
}
|
|
30
17
|
// 计算两点间的距离(米)- 使用Haversine公式
|
|
31
|
-
function calculateDistance(pos1, pos2) {
|
|
18
|
+
export function calculateDistance(pos1, pos2) {
|
|
32
19
|
const [lon1, lat1] = pos1;
|
|
33
20
|
const [lon2, lat2] = pos2;
|
|
34
21
|
const dLat = degreesToRadians(lat2 - lat1);
|
|
@@ -40,7 +27,7 @@ function calculateDistance(pos1, pos2) {
|
|
|
40
27
|
return EARTH_RADIUS * c;
|
|
41
28
|
}
|
|
42
29
|
// 计算方位角(度)
|
|
43
|
-
function calculateBearing(pos1, pos2) {
|
|
30
|
+
export function calculateBearing(pos1, pos2) {
|
|
44
31
|
const [lon1, lat1] = pos1;
|
|
45
32
|
const [lon2, lat2] = pos2;
|
|
46
33
|
const dLon = degreesToRadians(lon2 - lon1);
|
|
@@ -53,7 +40,7 @@ function calculateBearing(pos1, pos2) {
|
|
|
53
40
|
return (radiansToDegrees(bearing) + 360) % 360;
|
|
54
41
|
}
|
|
55
42
|
// 根据起点、距离和方位角计算终点
|
|
56
|
-
function calculateDestination(start, distance, bearing) {
|
|
43
|
+
export function calculateDestination(start, distance, bearing) {
|
|
57
44
|
const [lon, lat] = start;
|
|
58
45
|
const bearingRad = degreesToRadians(bearing);
|
|
59
46
|
const latRad = degreesToRadians(lat);
|
|
@@ -65,7 +52,7 @@ function calculateDestination(start, distance, bearing) {
|
|
|
65
52
|
return [radiansToDegrees(destLonRad), radiansToDegrees(destLatRad)];
|
|
66
53
|
}
|
|
67
54
|
// 计算线段长度
|
|
68
|
-
function calculateLineLength(lineString) {
|
|
55
|
+
export function calculateLineLength(lineString) {
|
|
69
56
|
let totalLength = 0;
|
|
70
57
|
const coordinates = lineString.coordinates;
|
|
71
58
|
for (let i = 1; i < coordinates.length; i++) {
|
|
@@ -74,7 +61,7 @@ function calculateLineLength(lineString) {
|
|
|
74
61
|
return totalLength;
|
|
75
62
|
}
|
|
76
63
|
// 计算多边形面积(平方米)- 使用球面三角形公式
|
|
77
|
-
function calculatePolygonArea(polygon) {
|
|
64
|
+
export function calculatePolygonArea(polygon) {
|
|
78
65
|
const coordinates = polygon.coordinates[0]; // 外环
|
|
79
66
|
let area = 0;
|
|
80
67
|
if (coordinates.length < 3)
|
|
@@ -89,7 +76,7 @@ function calculatePolygonArea(polygon) {
|
|
|
89
76
|
return area;
|
|
90
77
|
}
|
|
91
78
|
// 计算几何对象的边界框
|
|
92
|
-
function calculateGeometryBBox(geometry) {
|
|
79
|
+
export function calculateGeometryBBox(geometry) {
|
|
93
80
|
let minLon = Infinity;
|
|
94
81
|
let minLat = Infinity;
|
|
95
82
|
let maxLon = -Infinity;
|
|
@@ -134,10 +121,10 @@ function calculateGeometryBBox(geometry) {
|
|
|
134
121
|
});
|
|
135
122
|
break;
|
|
136
123
|
}
|
|
137
|
-
return
|
|
124
|
+
return createBBox2D(minLon, minLat, maxLon, maxLat);
|
|
138
125
|
}
|
|
139
126
|
// 计算要素集合的边界框
|
|
140
|
-
function calculateFeatureCollectionBBox(featureCollection) {
|
|
127
|
+
export function calculateFeatureCollectionBBox(featureCollection) {
|
|
141
128
|
let minLon = Infinity;
|
|
142
129
|
let minLat = Infinity;
|
|
143
130
|
let maxLon = -Infinity;
|
|
@@ -151,10 +138,10 @@ function calculateFeatureCollectionBBox(featureCollection) {
|
|
|
151
138
|
maxLat = Math.max(maxLat, bbox[3]);
|
|
152
139
|
}
|
|
153
140
|
});
|
|
154
|
-
return
|
|
141
|
+
return createBBox2D(minLon, minLat, maxLon, maxLat);
|
|
155
142
|
}
|
|
156
143
|
// 简化线段(Douglas-Peucker算法)
|
|
157
|
-
function simplifyLineString(lineString, tolerance) {
|
|
144
|
+
export function simplifyLineString(lineString, tolerance) {
|
|
158
145
|
const coordinates = lineString.coordinates;
|
|
159
146
|
if (coordinates.length <= 2) {
|
|
160
147
|
return lineString;
|
|
@@ -219,13 +206,13 @@ function simplifyLineString(lineString, tolerance) {
|
|
|
219
206
|
};
|
|
220
207
|
}
|
|
221
208
|
// 创建缓冲区(简单的矩形缓冲区)
|
|
222
|
-
function createBuffer(geometry, distance) {
|
|
209
|
+
export function createBuffer(geometry, distance) {
|
|
223
210
|
const [lon, lat] = geometry.coordinates;
|
|
224
211
|
// 简化计算:使用度数作为近似
|
|
225
212
|
const deltaLon = distance / (111320 * Math.cos(degreesToRadians(lat)));
|
|
226
213
|
const deltaLat = distance / 110540;
|
|
227
214
|
return {
|
|
228
|
-
type:
|
|
215
|
+
type: GeometryType.Polygon,
|
|
229
216
|
coordinates: [[
|
|
230
217
|
[lon - deltaLon, lat - deltaLat],
|
|
231
218
|
[lon + deltaLon, lat - deltaLat],
|
package/dist/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/bbox.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* 边界框(BBox)类型定义和工具函数
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
|
-
import { Position } from './geometry';
|
|
5
|
+
import { GeometryType, Polygon, Position } from './geometry';
|
|
6
6
|
|
|
7
7
|
// 2D边界框 [west, south, east, north]
|
|
8
8
|
export type BBox2D = [number, number, number, number];
|
|
@@ -68,6 +68,20 @@ export function bboxToObject(bbox: BBox): BoundingBox {
|
|
|
68
68
|
};
|
|
69
69
|
}
|
|
70
70
|
}
|
|
71
|
+
//bbox转换为多边形
|
|
72
|
+
export function bboxToPolygon(bbox: BBox): Polygon {
|
|
73
|
+
const [minX, minY, maxX, maxY] = bbox
|
|
74
|
+
return {
|
|
75
|
+
type: GeometryType.Polygon,
|
|
76
|
+
coordinates: [[
|
|
77
|
+
[minX, minY],
|
|
78
|
+
[maxX, minY],
|
|
79
|
+
[maxX, maxY],
|
|
80
|
+
[minX, maxY],
|
|
81
|
+
[minX, minY]
|
|
82
|
+
]]
|
|
83
|
+
}
|
|
84
|
+
}
|
|
71
85
|
|
|
72
86
|
// 从对象转换为边界框数组
|
|
73
87
|
export function objectToBBox(boundingBox: BoundingBox): BBox {
|
|
@@ -127,6 +141,25 @@ export function isPositionInBBox(position: Position, bbox: BBox): boolean {
|
|
|
127
141
|
return inBounds;
|
|
128
142
|
}
|
|
129
143
|
|
|
144
|
+
/**
|
|
145
|
+
* @description: 验证bbox(2D)是否符合规范
|
|
146
|
+
* @param {any} bbox
|
|
147
|
+
* @return {*} boolean
|
|
148
|
+
*/
|
|
149
|
+
export function validateBBox(bbox: any): bbox is BBox {
|
|
150
|
+
if (!Array.isArray(bbox) || bbox.length < 4) {
|
|
151
|
+
return false
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
const [minX, minY, maxX, maxY] = bbox
|
|
155
|
+
return typeof minX === 'number' &&
|
|
156
|
+
typeof minY === 'number' &&
|
|
157
|
+
typeof maxX === 'number' &&
|
|
158
|
+
typeof maxY === 'number' &&
|
|
159
|
+
minX <= maxX &&
|
|
160
|
+
minY <= maxY
|
|
161
|
+
}
|
|
162
|
+
|
|
130
163
|
// 计算边界框的中心点
|
|
131
164
|
export function getBBoxCenter(bbox: BBox): Position {
|
|
132
165
|
const obj = bboxToObject(bbox);
|
|
@@ -139,4 +172,35 @@ export function getBBoxCenter(bbox: BBox): Position {
|
|
|
139
172
|
}
|
|
140
173
|
|
|
141
174
|
return [centerLon, centerLat];
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
/**
|
|
178
|
+
* @description: 根据paths计算bbox
|
|
179
|
+
* @param {any} Position[]
|
|
180
|
+
* @return {*}
|
|
181
|
+
*/
|
|
182
|
+
export function calcGeometryBBox(geometry: Position[]) {
|
|
183
|
+
let minLng = Infinity,
|
|
184
|
+
minLat = Infinity,
|
|
185
|
+
maxLng = -Infinity,
|
|
186
|
+
maxLat = -Infinity;
|
|
187
|
+
for (const [lng, lat] of geometry) {
|
|
188
|
+
if (lng < minLng) minLng = lng;
|
|
189
|
+
if (lat < minLat) minLat = lat;
|
|
190
|
+
if (lng > maxLng) maxLng = lng;
|
|
191
|
+
if (lat > maxLat) maxLat = lat;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
// 适度留白,避免多边形贴边
|
|
195
|
+
const padLng = 0.001;
|
|
196
|
+
const padLat = 0.001;
|
|
197
|
+
|
|
198
|
+
minLng = minLng - padLng;
|
|
199
|
+
minLat = minLat - padLat;
|
|
200
|
+
maxLng = maxLng + padLng;
|
|
201
|
+
maxLat = maxLat + padLat;
|
|
202
|
+
return {
|
|
203
|
+
southWest: [minLng, minLat],
|
|
204
|
+
northEast: [maxLng, maxLat],
|
|
205
|
+
};
|
|
142
206
|
}
|
package/src/index.ts
CHANGED
|
@@ -63,6 +63,7 @@ export {
|
|
|
63
63
|
BBox2D,
|
|
64
64
|
BBox3D,
|
|
65
65
|
BBox,
|
|
66
|
+
validateBBox,
|
|
66
67
|
BoundingBox,
|
|
67
68
|
is2DBBox,
|
|
68
69
|
is3DBBox,
|
|
@@ -72,7 +73,8 @@ export {
|
|
|
72
73
|
objectToBBox,
|
|
73
74
|
unionBBox,
|
|
74
75
|
isPositionInBBox,
|
|
75
|
-
getBBoxCenter
|
|
76
|
+
getBBoxCenter,
|
|
77
|
+
calcGeometryBBox
|
|
76
78
|
} from './bbox';
|
|
77
79
|
|
|
78
80
|
// 导出扩展类型
|
|
@@ -114,13 +116,10 @@ export {
|
|
|
114
116
|
createBuffer
|
|
115
117
|
} from './utils';
|
|
116
118
|
|
|
117
|
-
// 版本信息
|
|
118
|
-
export const VERSION = '1.0.0';
|
|
119
119
|
|
|
120
|
-
|
|
121
|
-
export
|
|
122
|
-
|
|
123
|
-
};
|
|
120
|
+
//导出服务函数
|
|
121
|
+
export {getAddressByGeocoder} from "./service"
|
|
122
|
+
|
|
124
123
|
|
|
125
124
|
/**
|
|
126
125
|
* 使用示例:
|
package/src/service.ts
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { Position } from "./geometry";
|
|
2
|
+
/**
|
|
3
|
+
* @description: 高德地图,逆地理编码(坐标 -> 地址),获取地址
|
|
4
|
+
* @param {any} geocoder AMap.Geocoder
|
|
5
|
+
* @param {Position} lnglat 经纬度
|
|
6
|
+
* @return {Promise<string>} 地址
|
|
7
|
+
*/
|
|
8
|
+
export function getAddressByGeocoder(geocoder: any, lnglat: Position) {
|
|
9
|
+
return new Promise((resolve, reject) => {
|
|
10
|
+
// 坐标与地址插件-逆地理编码(坐标 -> 地址)
|
|
11
|
+
geocoder.getAddress(lnglat, function (status:string, result:any) {
|
|
12
|
+
if (status === 'complete' && result.regeocode) {
|
|
13
|
+
let address = '';
|
|
14
|
+
if (result.regeocode.aois.length > 0) {
|
|
15
|
+
address += result.regeocode.aois[0].name;
|
|
16
|
+
} else if (result.regeocode.pois.length > 0) {
|
|
17
|
+
address += result.regeocode.pois[0].name;
|
|
18
|
+
} else if (result.regeocode.roads.length > 0) {
|
|
19
|
+
address += result.regeocode.roads[0].name;
|
|
20
|
+
} else {
|
|
21
|
+
address = result.regeocode.formattedAddress;
|
|
22
|
+
}
|
|
23
|
+
resolve(address);
|
|
24
|
+
} else {
|
|
25
|
+
reject(result);
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
}
|