gdmap-utils 1.2.3 → 1.2.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/.husky/pre-commit +1 -1
  2. package/.prettierrc.json +17 -17
  3. package/README.md +467 -2
  4. package/dist/index.js +127 -7
  5. package/dist/index.js.map +1 -1
  6. package/docs/classes/MapUtils.md +153 -0
  7. package/docs/functions/createMapUtils.md +18 -0
  8. package/docs/functions/initMapSource.md +14 -0
  9. package/docs/globals.md +11 -0
  10. package/examples/1_init.html +23 -23
  11. package/examples/2_mapInit.html +48 -48
  12. package/examples/3_MarkerLayer.html +565 -565
  13. package/examples/4_LabelMarkerLayer.html +574 -574
  14. package/examples/5_markerCluster.html +528 -0
  15. package/index.html +134 -134
  16. package/package.json +54 -51
  17. package/scripts/cleanDocs.js +220 -0
  18. package/scripts/mergeDocs.js +129 -0
  19. package/src/LayerManager.ts +17 -1
  20. package/src/MapSourceImport.ts +23 -23
  21. package/src/MapUtils.ts +198 -22
  22. package/src/gdMap/gdHelper.ts +113 -85
  23. package/src/index.ts +3 -1
  24. package/src/layers/baseMarkerLayer/LabelMarkerLayer.ts +240 -240
  25. package/src/layers/baseMarkerLayer/MarkerLayer.ts +208 -208
  26. package/src/layers/baseMarkerLayer/index.ts +369 -354
  27. package/src/layers/clusterMarkerLayer/MarkerClusterLayer.ts +53 -53
  28. package/src/layers/clusterMarkerLayer/index.ts +204 -177
  29. package/src/layers/index.ts +9 -9
  30. package/src/types/MapUtils.d.ts +53 -53
  31. package/src/types/amap.d.ts +11 -11
  32. package/src/types/{BaseMarkerLayer.d.ts → baseMarkerLayer.d.ts} +86 -87
  33. package/src/types/clusterMarkerLayer.d.ts +89 -88
  34. package/src/types/index.d.ts +14 -14
  35. package/tsconfig.json +26 -26
  36. package/typedoc.json +22 -0
  37. package/webpack.config.js +125 -126
  38. package/src/gdMap/gdHelper.js +0 -194
@@ -1,87 +1,86 @@
1
- import type { MarkerOptions } from './amap';
2
- import type { MapUtilsConstructor } from '../MapUtils';
3
- import type {
4
- MarkerLayerIns,
5
- LabelMarkerLayerIns,
6
- MarkerClusterLayerIns,
7
- BaseMarkerLayerTypeIns,
8
- } from '../layers/index';
9
-
10
- interface BaseMarkerLayerInfo {
11
- markerLayer: {
12
- layerIns: MarkerLayerIns;
13
- overlayOpts: AMap.MarkerOptions;
14
- ovIns: AMap.Marker;
15
- };
16
- labelMarkerLayer: {
17
- layerIns: LabelMarkerLayerIns;
18
- overlayOpts: AMap.LabelMarkerOptions;
19
- ovIns: AMap.LabelMarker;
20
- };
21
- }
22
- //定义图层信息
23
- type MarkerLayerBaseType = 'markerLayer' | 'labelMarkerLayer';
24
-
25
- export interface OverlayData<T extends object = {}> {
26
- overlayData: {
27
- lon: number;
28
- lat: number;
29
- title: string;
30
- id: string;
31
- extData: T;
32
- weight?: number;
33
- };
34
- id: string;
35
- // 覆盖物配置数据
36
- labelShowed: boolean;
37
- overlaySelected: boolean; // 当前marker是否被选中
38
- }
39
-
40
- interface LayerOpts<
41
- U = {},
42
- T extends MarkerLayerBaseType = 'markerLayer',
43
- V = BaseMarkerLayerInfo[T],
44
- > {
45
- layerType: T;
46
- layerName: string;
47
- overlayList: Array<OverlayData<U>>;
48
- createOverlays: (mapUtilsIns) => Array<V['overlayIns']>; // 未使用上
49
- getIconUrl: (item: OverlayData<U>) => string; //overlayList中优先级更高
50
- getOverlayOpts: (
51
- item: OverlayData<U>,
52
- index: number,
53
- MapUtils: MapUtilsConstructor
54
- ) => V['overlayOpts']; //动态生成覆盖物配置
55
- overlayLayer?: AMap.LabelsLayerOptions;
56
- }
57
-
58
- interface OverlaysLayer<T, U> {
59
- rawLayer: U;
60
-
61
- //创建覆盖物
62
- createOverlays: (ovOptList: Array<any>) => Array<T>;
63
-
64
- add(markers: Array<any>): void;
65
-
66
- remove(markers: Array<T>): void;
67
-
68
- hide(): void;
69
-
70
- show(): void;
71
-
72
- getAllOverlay(): void;
73
-
74
- destroy: () => void;
75
-
76
- reload: () => void;
77
-
78
- //覆盖物自动适应
79
- overlayFitMap: () => void;
80
- }
81
-
82
- export type {
83
- BaseMarkerLayerInfo,
84
- MarkerLayerBaseType,
85
- LayerOpts,
86
- OverlaysLayer,
87
- };
1
+ import type { MarkerOptions } from './amap';
2
+ import type { MapUtilsConstructor } from '../MapUtils';
3
+ import type {
4
+ MarkerLayerIns,
5
+ LabelMarkerLayerIns,
6
+ MarkerClusterLayerIns,
7
+ BaseMarkerLayerTypeIns,
8
+ } from '../layers/index';
9
+
10
+ interface BaseMarkerLayerInfo {
11
+ markerLayer: {
12
+ layerIns: MarkerLayerIns;
13
+ overlayOpts: AMap.MarkerOptions;
14
+ ovIns: AMap.Marker;
15
+ };
16
+ labelMarkerLayer: {
17
+ layerIns: LabelMarkerLayerIns;
18
+ overlayOpts: AMap.LabelMarkerOptions;
19
+ ovIns: AMap.LabelMarker;
20
+ };
21
+ }
22
+ //定义图层信息
23
+ type MarkerLayerBaseType = 'markerLayer' | 'labelMarkerLayer';
24
+
25
+ export interface OverlayData<T extends object = {}> {
26
+ overlayData: {
27
+ lon: number;
28
+ lat: number;
29
+ title: string;
30
+ id: string;
31
+ extData: T;
32
+ weight?: number;
33
+ };
34
+ id: string;
35
+ // 覆盖物配置数据
36
+ labelShowed: boolean;
37
+ overlaySelected: boolean; // 当前marker是否被选中
38
+ }
39
+
40
+ interface LayerOpts<
41
+ U = {},
42
+ T extends MarkerLayerBaseType = 'markerLayer',
43
+ V = BaseMarkerLayerInfo[T],
44
+ > {
45
+ layerType: T;
46
+ layerName: string;
47
+ overlayList: Array<OverlayData<U>>;
48
+ getIconUrl: (item: OverlayData<U>) => string; //overlayList中优先级更高
49
+ getOverlayOpts: (
50
+ item: OverlayData<U>,
51
+ index: number,
52
+ MapUtils: MapUtilsConstructor
53
+ ) => V['overlayOpts']; //动态生成覆盖物配置
54
+ overlayLayer?: AMap.LabelsLayerOptions;
55
+ }
56
+
57
+ interface OverlaysLayer<T, U> {
58
+ rawLayer: U;
59
+
60
+ //创建覆盖物
61
+ createOverlays: (ovOptList: Array<any>) => Array<T>;
62
+
63
+ add(markers: Array<any>): void;
64
+
65
+ remove(markers: Array<T>): void;
66
+
67
+ hide(): void;
68
+
69
+ show(): void;
70
+
71
+ getAllOverlay(): void;
72
+
73
+ destroy: () => void;
74
+
75
+ reload: () => void;
76
+
77
+ //覆盖物自动适应
78
+ overlayFitMap: () => void;
79
+ }
80
+
81
+ export type {
82
+ BaseMarkerLayerInfo,
83
+ MarkerLayerBaseType,
84
+ LayerOpts,
85
+ OverlaysLayer,
86
+ };
@@ -1,88 +1,89 @@
1
- import type { MarkerClusterLayerIns } from '@/layers/clusterMarkerLayer/index.ts';
2
- import type { OverlayData } from './BaseMarkerLayer';
3
- //定义聚合图层类型
4
- type MarkerClusterLayerType = 'markerClusterLayer';
5
-
6
- //!------------markerClusterLayer.ts类型代码如下------------------
7
- // 图层配置信息
8
- interface MarkerClusterOptions {
9
- /** 聚合计算时网格的像素大小,默认 60 */
10
- gridSize?: number;
11
- /** 最大聚合级别,大于该级别不再聚合,默认 18 */
12
- maxZoom?: number;
13
- /**
14
- * 聚合图标位置是否取所有点(或权重最大点)的中心。
15
- * 默认为 true。
16
- */
17
- averageCenter?: boolean;
18
- /** 地图缩放过程中是否实时重算聚合,默认 false */
19
- clusterByZoomChange?: boolean;
20
- /**
21
- * 聚合图标样式数组,按聚合数量区间 1-10、11-100、101-1000… 顺序给出。
22
- * 当数量超出给定样式时,剩余区间使用默认样式。
23
- */
24
- styles?: Array<{
25
- /** 图标图片地址(必选) */
26
- url: string;
27
- /** 图标尺寸(必选) */
28
- size: AMap.Size;
29
- /** 图标定位偏移,默认 (0,0) */
30
- offset?: AMap.Pixel;
31
- /** 图片背景偏移,等同 CSS background-position,默认 (0,0) */
32
- imageOffset?: AMap.Pixel;
33
- /** 文字颜色,默认 "#000000" */
34
- textColor?: string;
35
- /** 文字大小,默认 10 */
36
- textSize?: number;
37
- }>;
38
- /**
39
- * 自定义聚合点绘制逻辑,指定后 styles 失效。
40
- * @param context 聚合上下文
41
- */
42
- renderClusterMarker?: (context: {
43
- /** 当前聚合包含的 Marker 数量 */
44
- count: number;
45
- /** 当前聚合所对应的 Marker 对象(可进一步修改其 Icon、内容等) */
46
- marker: AMap.Marker;
47
- }) => void;
48
- /**
49
- * 自定义非聚合点绘制逻辑。
50
- * @param context 非聚合点上下文
51
- */
52
- renderMarker?: (context: {
53
- /** 非聚合的 Marker 对象 */
54
- marker: AMap.Marker;
55
- }) => void;
56
- }
57
-
58
- type MarkerClusterDataOptions<T extends {} = {}> = {
59
- weight: number;
60
- lnglat: [number, number];
61
- } & T;
62
-
63
- type ClusterMarkerLayerInfo = {
64
- markerClusterLayer: {
65
- layerIns: MarkerClusterLayerIns;
66
- layerOpts: MarkerClusterOptions;
67
- };
68
- };
69
-
70
- interface ClusterMarkerLayerOpts<
71
- U = {},
72
- T extends MarkerClusterLayerType = 'markerClusterLayer',
73
- V = ClusterMarkerLayerInfo[T],
74
- > {
75
- layerType: T;
76
- layerName: string;
77
- overlayList: Array<OverlayData<U>>;
78
- layerOpts: V['layerOpts'];
79
- }
80
-
81
- export type {
82
- MarkerClusterLayerType,
83
- MarkerClusterOptions,
84
- MarkerClusterDataOptions,
85
- // 图层定义类型代码
86
- ClusterMarkerLayerInfo,
87
- ClusterMarkerLayerOpts,
88
- };
1
+ import type { MarkerClusterLayerIns } from '@/layers/clusterMarkerLayer/index.ts';
2
+ import type { OverlayData } from './BaseMarkerLayer';
3
+ //定义聚合图层类型
4
+ type MarkerClusterLayerType = 'markerClusterLayer';
5
+
6
+ //!------------markerClusterLayer.ts类型代码如下------------------
7
+ // 图层配置信息
8
+ interface MarkerClusterOptions {
9
+ /** 聚合计算时网格的像素大小,默认 60 */
10
+ gridSize?: number;
11
+ /** 最大聚合级别,大于该级别不再聚合,默认 18 */
12
+ maxZoom?: number;
13
+ /**
14
+ * 聚合图标位置是否取所有点(或权重最大点)的中心。
15
+ * 默认为 true。
16
+ */
17
+ averageCenter?: boolean;
18
+ /** 地图缩放过程中是否实时重算聚合,默认 false */
19
+ clusterByZoomChange?: boolean;
20
+ /**
21
+ * 聚合图标样式数组,按聚合数量区间 1-10、11-100、101-1000… 顺序给出。
22
+ * 当数量超出给定样式时,剩余区间使用默认样式。
23
+ */
24
+ styles?: Array<{
25
+ /** 图标图片地址(必选) */
26
+ url: string;
27
+ /** 图标尺寸(必选) */
28
+ size: AMap.Size;
29
+ /** 图标定位偏移,默认 (0,0) */
30
+ offset?: AMap.Pixel;
31
+ /** 图片背景偏移,等同 CSS background-position,默认 (0,0) */
32
+ imageOffset?: AMap.Pixel;
33
+ /** 文字颜色,默认 "#000000" */
34
+ textColor?: string;
35
+ /** 文字大小,默认 10 */
36
+ textSize?: number;
37
+ }>;
38
+ /**
39
+ * 自定义聚合点绘制逻辑,指定后 styles 失效。
40
+ * @param context 聚合上下文
41
+ */
42
+ renderClusterMarker?: (context: {
43
+ /** 当前聚合包含的 Marker 数量 */
44
+ count: number;
45
+ /** 当前聚合所对应的 Marker 对象(可进一步修改其 Icon、内容等) */
46
+ marker: AMap.Marker;
47
+ }) => void;
48
+ /**
49
+ * 自定义非聚合点绘制逻辑。
50
+ * @param context 非聚合点上下文
51
+ */
52
+ renderMarker?: (context: {
53
+ /** 非聚合的 Marker 对象 */
54
+ marker: AMap.Marker;
55
+ }) => void;
56
+ }
57
+
58
+ type MarkerClusterDataOptions<T extends {} = {}> = {
59
+ weight: number;
60
+ lnglat: [number, number];
61
+ } & T;
62
+
63
+ type ClusterMarkerLayerInfo = {
64
+ markerClusterLayer: {
65
+ layerIns: MarkerClusterLayerIns;
66
+ layerOpts: MarkerClusterOptions;
67
+ };
68
+ };
69
+
70
+ interface ClusterMarkerLayerOpts<
71
+ U = {},
72
+ T extends MarkerClusterLayerType = 'markerClusterLayer',
73
+ V = ClusterMarkerLayerInfo[T],
74
+ > {
75
+ layerType: T;
76
+ layerName: string;
77
+ overlayList: Array<OverlayData<U>>;
78
+ layerOpts: V['layerOpts']; //类型动态计算
79
+ }
80
+
81
+ export type {
82
+ MarkerClusterLayerType,
83
+ MarkerClusterOptions,
84
+ MarkerClusterDataOptions,
85
+ // 图层定义类型代码
86
+ ClusterMarkerLayerInfo,
87
+ ClusterMarkerLayerOpts,
88
+ MarkerClusterLayerIns,
89
+ };
@@ -1,14 +1,14 @@
1
- // 从MapUtils.d.ts导入并重新导出类型
2
- export type * from './MapUtils';
3
-
4
- // 从BaseMarkerLayer.d.ts导入并重新导出类型
5
- export type * from './BaseMarkerLayer';
6
-
7
- export type * from './clusterMarkerLayer';
8
-
9
- interface Window {
10
- _AMapSecurityConfig?: {
11
- securityJsCode: string;
12
- serviceHost: string;
13
- };
14
- }
1
+ // 从MapUtils.d.ts导入并重新导出类型
2
+ export type * from './MapUtils';
3
+
4
+ // 从BaseMarkerLayer.d.ts导入并重新导出类型
5
+ export type * from './baseMarkerLayer';
6
+
7
+ export type * from './clusterMarkerLayer';
8
+
9
+ interface Window {
10
+ _AMapSecurityConfig?: {
11
+ securityJsCode: string;
12
+ serviceHost: string;
13
+ };
14
+ }
package/tsconfig.json CHANGED
@@ -1,27 +1,27 @@
1
- {
2
- "compilerOptions": {
3
- "target": "ES5",
4
- "module": "ESNext",
5
- "lib": ["ES5", "ES2015", "ES2016", "ES2017", "DOM"],
6
- "declaration": true,
7
- "declarationMap": true,
8
- "sourceMap": true,
9
- "outDir": "./dist",
10
- "rootDir": "./src",
11
- "strict": true,
12
- "esModuleInterop": true,
13
- "skipLibCheck": true,
14
- "forceConsistentCasingInFileNames": true,
15
- "moduleResolution": "node",
16
- "resolveJsonModule": true,
17
- "isolatedModules": true,
18
- "noEmit": false,
19
- "typeRoots": ["./src/types", "./node_modules/@types"],
20
- "baseUrl": "./",
21
- "paths": {
22
- "@/*": ["src/*"]
23
- }
24
- },
25
- "include": ["env.d.ts", "src/**/*", "src/**/*.vue"],
26
- "exclude": ["node_modules", "dist"]
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES5",
4
+ "module": "ESNext",
5
+ "lib": ["ES5", "ES2015", "ES2016", "ES2017", "DOM"],
6
+ "declaration": true,
7
+ "declarationMap": true,
8
+ "sourceMap": true,
9
+ "outDir": "./dist",
10
+ "rootDir": "./src",
11
+ "strict": true,
12
+ "esModuleInterop": true,
13
+ "skipLibCheck": true,
14
+ "forceConsistentCasingInFileNames": true,
15
+ "moduleResolution": "node",
16
+ "resolveJsonModule": true,
17
+ "isolatedModules": true,
18
+ "noEmit": false,
19
+ "typeRoots": ["./src/types", "./node_modules/@types"],
20
+ "baseUrl": "./",
21
+ "paths": {
22
+ "@/*": ["src/*"]
23
+ }
24
+ },
25
+ "include": ["env.d.ts", "src/**/*", "src/**/*.vue"],
26
+ "exclude": ["node_modules", "dist"]
27
27
  }
package/typedoc.json ADDED
@@ -0,0 +1,22 @@
1
+ {
2
+ "$schema": "https://typedoc.org/schema.json",
3
+ "entryPoints": ["src/index.ts"],
4
+ "out": "docs",
5
+ "plugin": ["typedoc-plugin-markdown"],
6
+ "exclude": ["**/*.d.ts", "node_modules/**", "**/*.test.ts", "**/LabelMarkerLayer.ts", "**/MarkerLayer.ts", "**/MarkerClusterLayer.ts"],
7
+ "includeVersion": false,
8
+ "readme": "README.md",
9
+ "name": "GdMapUtils",
10
+ "theme": "markdown",
11
+ "categorizeByGroup": true,
12
+ "sort": ["source-order"],
13
+ "skipErrorChecking": true,
14
+ "hidePageTitle": true,
15
+ "disableSources": true,
16
+ "excludePrivate": true,
17
+ "excludeProtected": true,
18
+ "excludeInternal": true,
19
+ "hideGenerator": true,
20
+ "gitRevision": "main",
21
+ "excludeExternals": true
22
+ }