my-openlayer 2.0.0 → 2.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/MyOl.d.ts +128 -128
- package/MyOl.js +382 -381
- package/README.md +0 -21
- package/core/ConfigManager.d.ts +88 -88
- package/core/ConfigManager.js +112 -112
- package/core/EventManager.d.ts +141 -141
- package/core/EventManager.js +316 -316
- package/core/Line.d.ts +130 -109
- package/core/Line.js +354 -288
- package/core/MapBaseLayers.d.ts +234 -234
- package/core/MapBaseLayers.js +573 -573
- package/core/MapTools.d.ts +68 -68
- package/core/MapTools.js +202 -201
- package/core/MeasureHandler.d.ts +65 -65
- package/core/MeasureHandler.js +312 -312
- package/core/Point.d.ts +94 -94
- package/core/Point.js +348 -348
- package/core/Polygon.d.ts +157 -139
- package/core/Polygon.js +558 -529
- package/core/VueTemplatePoint.d.ts +51 -51
- package/core/VueTemplatePoint.js +529 -529
- package/index.d.ts +18 -18
- package/index.js +17 -17
- package/package.json +1 -1
- package/types.d.ts +305 -302
- package/types.js +11 -11
- package/utils/ErrorHandler.d.ts +102 -102
- package/utils/ErrorHandler.js +191 -191
- package/utils/ValidationUtils.d.ts +163 -163
- package/utils/ValidationUtils.js +312 -312
package/utils/ErrorHandler.d.ts
CHANGED
|
@@ -1,102 +1,102 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 错误类型枚举
|
|
3
|
-
*/
|
|
4
|
-
export declare enum ErrorType {
|
|
5
|
-
VALIDATION_ERROR = "VALIDATION_ERROR",
|
|
6
|
-
MAP_ERROR = "MAP_ERROR",
|
|
7
|
-
LAYER_ERROR = "LAYER_ERROR",
|
|
8
|
-
COORDINATE_ERROR = "COORDINATE_ERROR",
|
|
9
|
-
DATA_ERROR = "DATA_ERROR",
|
|
10
|
-
COMPONENT_ERROR = "COMPONENT_ERROR"
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* 自定义错误类
|
|
14
|
-
*/
|
|
15
|
-
export declare class MyOpenLayersError extends Error {
|
|
16
|
-
readonly type: ErrorType;
|
|
17
|
-
readonly timestamp: Date;
|
|
18
|
-
readonly context?: any;
|
|
19
|
-
constructor(message: string, type: ErrorType, context?: any);
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* 错误处理工具类
|
|
23
|
-
*/
|
|
24
|
-
export declare class ErrorHandler {
|
|
25
|
-
private static instance;
|
|
26
|
-
private errorCallbacks;
|
|
27
|
-
private logLevel;
|
|
28
|
-
private constructor();
|
|
29
|
-
/**
|
|
30
|
-
* 获取单例实例
|
|
31
|
-
*/
|
|
32
|
-
static getInstance(): ErrorHandler;
|
|
33
|
-
/**
|
|
34
|
-
* 设置日志级别
|
|
35
|
-
* @param level 日志级别
|
|
36
|
-
*/
|
|
37
|
-
setLogLevel(level: 'debug' | 'info' | 'warn' | 'error'): void;
|
|
38
|
-
/**
|
|
39
|
-
* 添加错误回调
|
|
40
|
-
* @param callback 错误回调函数
|
|
41
|
-
*/
|
|
42
|
-
addErrorCallback(callback: (error: MyOpenLayersError) => void): void;
|
|
43
|
-
/**
|
|
44
|
-
* 移除错误回调
|
|
45
|
-
* @param callback 要移除的回调函数
|
|
46
|
-
*/
|
|
47
|
-
removeErrorCallback(callback: (error: MyOpenLayersError) => void): void;
|
|
48
|
-
/**
|
|
49
|
-
* 处理错误
|
|
50
|
-
* @param error 错误对象
|
|
51
|
-
*/
|
|
52
|
-
handleError(error: MyOpenLayersError): void;
|
|
53
|
-
/**
|
|
54
|
-
* 创建并处理错误
|
|
55
|
-
* @param message 错误消息
|
|
56
|
-
* @param type 错误类型
|
|
57
|
-
* @param context 错误上下文
|
|
58
|
-
*/
|
|
59
|
-
createAndHandleError(message: string, type: ErrorType, context?: any): MyOpenLayersError;
|
|
60
|
-
/**
|
|
61
|
-
* 记录错误日志
|
|
62
|
-
* @param error 错误对象
|
|
63
|
-
*/
|
|
64
|
-
private logError;
|
|
65
|
-
/**
|
|
66
|
-
* 验证参数
|
|
67
|
-
* @param condition 验证条件
|
|
68
|
-
* @param message 错误消息
|
|
69
|
-
* @param context 错误上下文
|
|
70
|
-
*/
|
|
71
|
-
static validate(condition: boolean, message: string, context?: any): void;
|
|
72
|
-
/**
|
|
73
|
-
* 验证地图实例
|
|
74
|
-
* @param map 地图实例
|
|
75
|
-
*/
|
|
76
|
-
static validateMap(map: any): void;
|
|
77
|
-
/**
|
|
78
|
-
* 验证坐标
|
|
79
|
-
* @param longitude 经度
|
|
80
|
-
* @param latitude 纬度
|
|
81
|
-
*/
|
|
82
|
-
static validateCoordinates(longitude: number, latitude: number): void;
|
|
83
|
-
/**
|
|
84
|
-
* 验证图层名称
|
|
85
|
-
* @param layerName 图层名称
|
|
86
|
-
*/
|
|
87
|
-
static validateLayerName(layerName: string): void;
|
|
88
|
-
/**
|
|
89
|
-
* 验证数据
|
|
90
|
-
* @param data 数据
|
|
91
|
-
* @param dataType 数据类型描述
|
|
92
|
-
*/
|
|
93
|
-
static validateData(data: any, dataType: string): void;
|
|
94
|
-
/**
|
|
95
|
-
* 安全执行函数
|
|
96
|
-
* @param fn 要执行的函数
|
|
97
|
-
* @param errorMessage 错误消息
|
|
98
|
-
* @param errorType 错误类型
|
|
99
|
-
* @param context 错误上下文
|
|
100
|
-
*/
|
|
101
|
-
static safeExecute<T>(fn: () => T, errorMessage: string, errorType?: ErrorType, context?: any): T;
|
|
102
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* 错误类型枚举
|
|
3
|
+
*/
|
|
4
|
+
export declare enum ErrorType {
|
|
5
|
+
VALIDATION_ERROR = "VALIDATION_ERROR",
|
|
6
|
+
MAP_ERROR = "MAP_ERROR",
|
|
7
|
+
LAYER_ERROR = "LAYER_ERROR",
|
|
8
|
+
COORDINATE_ERROR = "COORDINATE_ERROR",
|
|
9
|
+
DATA_ERROR = "DATA_ERROR",
|
|
10
|
+
COMPONENT_ERROR = "COMPONENT_ERROR"
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* 自定义错误类
|
|
14
|
+
*/
|
|
15
|
+
export declare class MyOpenLayersError extends Error {
|
|
16
|
+
readonly type: ErrorType;
|
|
17
|
+
readonly timestamp: Date;
|
|
18
|
+
readonly context?: any;
|
|
19
|
+
constructor(message: string, type: ErrorType, context?: any);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* 错误处理工具类
|
|
23
|
+
*/
|
|
24
|
+
export declare class ErrorHandler {
|
|
25
|
+
private static instance;
|
|
26
|
+
private errorCallbacks;
|
|
27
|
+
private logLevel;
|
|
28
|
+
private constructor();
|
|
29
|
+
/**
|
|
30
|
+
* 获取单例实例
|
|
31
|
+
*/
|
|
32
|
+
static getInstance(): ErrorHandler;
|
|
33
|
+
/**
|
|
34
|
+
* 设置日志级别
|
|
35
|
+
* @param level 日志级别
|
|
36
|
+
*/
|
|
37
|
+
setLogLevel(level: 'debug' | 'info' | 'warn' | 'error'): void;
|
|
38
|
+
/**
|
|
39
|
+
* 添加错误回调
|
|
40
|
+
* @param callback 错误回调函数
|
|
41
|
+
*/
|
|
42
|
+
addErrorCallback(callback: (error: MyOpenLayersError) => void): void;
|
|
43
|
+
/**
|
|
44
|
+
* 移除错误回调
|
|
45
|
+
* @param callback 要移除的回调函数
|
|
46
|
+
*/
|
|
47
|
+
removeErrorCallback(callback: (error: MyOpenLayersError) => void): void;
|
|
48
|
+
/**
|
|
49
|
+
* 处理错误
|
|
50
|
+
* @param error 错误对象
|
|
51
|
+
*/
|
|
52
|
+
handleError(error: MyOpenLayersError): void;
|
|
53
|
+
/**
|
|
54
|
+
* 创建并处理错误
|
|
55
|
+
* @param message 错误消息
|
|
56
|
+
* @param type 错误类型
|
|
57
|
+
* @param context 错误上下文
|
|
58
|
+
*/
|
|
59
|
+
createAndHandleError(message: string, type: ErrorType, context?: any): MyOpenLayersError;
|
|
60
|
+
/**
|
|
61
|
+
* 记录错误日志
|
|
62
|
+
* @param error 错误对象
|
|
63
|
+
*/
|
|
64
|
+
private logError;
|
|
65
|
+
/**
|
|
66
|
+
* 验证参数
|
|
67
|
+
* @param condition 验证条件
|
|
68
|
+
* @param message 错误消息
|
|
69
|
+
* @param context 错误上下文
|
|
70
|
+
*/
|
|
71
|
+
static validate(condition: boolean, message: string, context?: any): void;
|
|
72
|
+
/**
|
|
73
|
+
* 验证地图实例
|
|
74
|
+
* @param map 地图实例
|
|
75
|
+
*/
|
|
76
|
+
static validateMap(map: any): void;
|
|
77
|
+
/**
|
|
78
|
+
* 验证坐标
|
|
79
|
+
* @param longitude 经度
|
|
80
|
+
* @param latitude 纬度
|
|
81
|
+
*/
|
|
82
|
+
static validateCoordinates(longitude: number, latitude: number): void;
|
|
83
|
+
/**
|
|
84
|
+
* 验证图层名称
|
|
85
|
+
* @param layerName 图层名称
|
|
86
|
+
*/
|
|
87
|
+
static validateLayerName(layerName: string): void;
|
|
88
|
+
/**
|
|
89
|
+
* 验证数据
|
|
90
|
+
* @param data 数据
|
|
91
|
+
* @param dataType 数据类型描述
|
|
92
|
+
*/
|
|
93
|
+
static validateData(data: any, dataType: string): void;
|
|
94
|
+
/**
|
|
95
|
+
* 安全执行函数
|
|
96
|
+
* @param fn 要执行的函数
|
|
97
|
+
* @param errorMessage 错误消息
|
|
98
|
+
* @param errorType 错误类型
|
|
99
|
+
* @param context 错误上下文
|
|
100
|
+
*/
|
|
101
|
+
static safeExecute<T>(fn: () => T, errorMessage: string, errorType?: ErrorType, context?: any): T;
|
|
102
|
+
}
|
package/utils/ErrorHandler.js
CHANGED
|
@@ -1,191 +1,191 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 错误类型枚举
|
|
3
|
-
*/
|
|
4
|
-
export var ErrorType;
|
|
5
|
-
(function (ErrorType) {
|
|
6
|
-
ErrorType["VALIDATION_ERROR"] = "VALIDATION_ERROR";
|
|
7
|
-
ErrorType["MAP_ERROR"] = "MAP_ERROR";
|
|
8
|
-
ErrorType["LAYER_ERROR"] = "LAYER_ERROR";
|
|
9
|
-
ErrorType["COORDINATE_ERROR"] = "COORDINATE_ERROR";
|
|
10
|
-
ErrorType["DATA_ERROR"] = "DATA_ERROR";
|
|
11
|
-
ErrorType["COMPONENT_ERROR"] = "COMPONENT_ERROR";
|
|
12
|
-
})(ErrorType || (ErrorType = {}));
|
|
13
|
-
/**
|
|
14
|
-
* 自定义错误类
|
|
15
|
-
*/
|
|
16
|
-
export class MyOpenLayersError extends Error {
|
|
17
|
-
constructor(message, type, context) {
|
|
18
|
-
super(message);
|
|
19
|
-
this.name = 'MyOpenLayersError';
|
|
20
|
-
this.type = type;
|
|
21
|
-
this.timestamp = new Date();
|
|
22
|
-
this.context = context;
|
|
23
|
-
// 确保错误堆栈正确显示(兼容Node.js和浏览器环境)
|
|
24
|
-
if (typeof Error.captureStackTrace === 'function') {
|
|
25
|
-
Error.captureStackTrace(this, MyOpenLayersError);
|
|
26
|
-
}
|
|
27
|
-
else {
|
|
28
|
-
// 在不支持captureStackTrace的环境中,手动设置stack
|
|
29
|
-
this.stack = (new Error()).stack;
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* 错误处理工具类
|
|
35
|
-
*/
|
|
36
|
-
export class ErrorHandler {
|
|
37
|
-
constructor() {
|
|
38
|
-
this.errorCallbacks = [];
|
|
39
|
-
this.logLevel = 'error';
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* 获取单例实例
|
|
43
|
-
*/
|
|
44
|
-
static getInstance() {
|
|
45
|
-
if (!ErrorHandler.instance) {
|
|
46
|
-
ErrorHandler.instance = new ErrorHandler();
|
|
47
|
-
}
|
|
48
|
-
return ErrorHandler.instance;
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* 设置日志级别
|
|
52
|
-
* @param level 日志级别
|
|
53
|
-
*/
|
|
54
|
-
setLogLevel(level) {
|
|
55
|
-
this.logLevel = level;
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* 添加错误回调
|
|
59
|
-
* @param callback 错误回调函数
|
|
60
|
-
*/
|
|
61
|
-
addErrorCallback(callback) {
|
|
62
|
-
this.errorCallbacks.push(callback);
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* 移除错误回调
|
|
66
|
-
* @param callback 要移除的回调函数
|
|
67
|
-
*/
|
|
68
|
-
removeErrorCallback(callback) {
|
|
69
|
-
const index = this.errorCallbacks.indexOf(callback);
|
|
70
|
-
if (index > -1) {
|
|
71
|
-
this.errorCallbacks.splice(index, 1);
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* 处理错误
|
|
76
|
-
* @param error 错误对象
|
|
77
|
-
*/
|
|
78
|
-
handleError(error) {
|
|
79
|
-
// 记录错误日志
|
|
80
|
-
this.logError(error);
|
|
81
|
-
// 调用错误回调
|
|
82
|
-
this.errorCallbacks.forEach(callback => {
|
|
83
|
-
try {
|
|
84
|
-
callback(error);
|
|
85
|
-
}
|
|
86
|
-
catch (callbackError) {
|
|
87
|
-
console.error('Error in error callback:', callbackError);
|
|
88
|
-
}
|
|
89
|
-
});
|
|
90
|
-
}
|
|
91
|
-
/**
|
|
92
|
-
* 创建并处理错误
|
|
93
|
-
* @param message 错误消息
|
|
94
|
-
* @param type 错误类型
|
|
95
|
-
* @param context 错误上下文
|
|
96
|
-
*/
|
|
97
|
-
createAndHandleError(message, type, context) {
|
|
98
|
-
const error = new MyOpenLayersError(message, type, context);
|
|
99
|
-
this.handleError(error);
|
|
100
|
-
return error;
|
|
101
|
-
}
|
|
102
|
-
/**
|
|
103
|
-
* 记录错误日志
|
|
104
|
-
* @param error 错误对象
|
|
105
|
-
*/
|
|
106
|
-
logError(error) {
|
|
107
|
-
const logMessage = `[${error.type}] ${error.message}`;
|
|
108
|
-
const logData = {
|
|
109
|
-
message: error.message,
|
|
110
|
-
type: error.type,
|
|
111
|
-
timestamp: error.timestamp,
|
|
112
|
-
context: error.context,
|
|
113
|
-
stack: error.stack
|
|
114
|
-
};
|
|
115
|
-
switch (this.logLevel) {
|
|
116
|
-
case 'debug':
|
|
117
|
-
console.debug(logMessage, logData);
|
|
118
|
-
break;
|
|
119
|
-
case 'info':
|
|
120
|
-
console.info(logMessage, logData);
|
|
121
|
-
break;
|
|
122
|
-
case 'warn':
|
|
123
|
-
console.warn(logMessage, logData);
|
|
124
|
-
break;
|
|
125
|
-
case 'error':
|
|
126
|
-
default:
|
|
127
|
-
console.error(logMessage, logData);
|
|
128
|
-
break;
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
/**
|
|
132
|
-
* 验证参数
|
|
133
|
-
* @param condition 验证条件
|
|
134
|
-
* @param message 错误消息
|
|
135
|
-
* @param context 错误上下文
|
|
136
|
-
*/
|
|
137
|
-
static validate(condition, message, context) {
|
|
138
|
-
if (!condition) {
|
|
139
|
-
throw ErrorHandler.getInstance().createAndHandleError(message, ErrorType.VALIDATION_ERROR, context);
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
/**
|
|
143
|
-
* 验证地图实例
|
|
144
|
-
* @param map 地图实例
|
|
145
|
-
*/
|
|
146
|
-
static validateMap(map) {
|
|
147
|
-
ErrorHandler.validate(map && typeof map === 'object', 'Map instance is required', { map });
|
|
148
|
-
}
|
|
149
|
-
/**
|
|
150
|
-
* 验证坐标
|
|
151
|
-
* @param longitude 经度
|
|
152
|
-
* @param latitude 纬度
|
|
153
|
-
*/
|
|
154
|
-
static validateCoordinates(longitude, latitude) {
|
|
155
|
-
ErrorHandler.validate(typeof longitude === 'number' && !isNaN(longitude), 'Valid longitude is required', { longitude, latitude });
|
|
156
|
-
ErrorHandler.validate(typeof latitude === 'number' && !isNaN(latitude), 'Valid latitude is required', { longitude, latitude });
|
|
157
|
-
ErrorHandler.validate(longitude >= -180 && longitude <= 180, 'Longitude must be between -180 and 180', { longitude, latitude });
|
|
158
|
-
ErrorHandler.validate(latitude >= -90 && latitude <= 90, 'Latitude must be between -90 and 90', { longitude, latitude });
|
|
159
|
-
}
|
|
160
|
-
/**
|
|
161
|
-
* 验证图层名称
|
|
162
|
-
* @param layerName 图层名称
|
|
163
|
-
*/
|
|
164
|
-
static validateLayerName(layerName) {
|
|
165
|
-
ErrorHandler.validate(typeof layerName === 'string' && layerName.trim().length > 0, 'Valid layer name is required', { layerName });
|
|
166
|
-
}
|
|
167
|
-
/**
|
|
168
|
-
* 验证数据
|
|
169
|
-
* @param data 数据
|
|
170
|
-
* @param dataType 数据类型描述
|
|
171
|
-
*/
|
|
172
|
-
static validateData(data, dataType) {
|
|
173
|
-
ErrorHandler.validate(data !== null && data !== undefined, `${dataType} is required`, { data, dataType });
|
|
174
|
-
}
|
|
175
|
-
/**
|
|
176
|
-
* 安全执行函数
|
|
177
|
-
* @param fn 要执行的函数
|
|
178
|
-
* @param errorMessage 错误消息
|
|
179
|
-
* @param errorType 错误类型
|
|
180
|
-
* @param context 错误上下文
|
|
181
|
-
*/
|
|
182
|
-
static safeExecute(fn, errorMessage, errorType = ErrorType.COMPONENT_ERROR, context) {
|
|
183
|
-
try {
|
|
184
|
-
return fn();
|
|
185
|
-
}
|
|
186
|
-
catch (error) {
|
|
187
|
-
const myError = ErrorHandler.getInstance().createAndHandleError(`${errorMessage}: ${error}`, errorType, { originalError: error, context });
|
|
188
|
-
throw myError;
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* 错误类型枚举
|
|
3
|
+
*/
|
|
4
|
+
export var ErrorType;
|
|
5
|
+
(function (ErrorType) {
|
|
6
|
+
ErrorType["VALIDATION_ERROR"] = "VALIDATION_ERROR";
|
|
7
|
+
ErrorType["MAP_ERROR"] = "MAP_ERROR";
|
|
8
|
+
ErrorType["LAYER_ERROR"] = "LAYER_ERROR";
|
|
9
|
+
ErrorType["COORDINATE_ERROR"] = "COORDINATE_ERROR";
|
|
10
|
+
ErrorType["DATA_ERROR"] = "DATA_ERROR";
|
|
11
|
+
ErrorType["COMPONENT_ERROR"] = "COMPONENT_ERROR";
|
|
12
|
+
})(ErrorType || (ErrorType = {}));
|
|
13
|
+
/**
|
|
14
|
+
* 自定义错误类
|
|
15
|
+
*/
|
|
16
|
+
export class MyOpenLayersError extends Error {
|
|
17
|
+
constructor(message, type, context) {
|
|
18
|
+
super(message);
|
|
19
|
+
this.name = 'MyOpenLayersError';
|
|
20
|
+
this.type = type;
|
|
21
|
+
this.timestamp = new Date();
|
|
22
|
+
this.context = context;
|
|
23
|
+
// 确保错误堆栈正确显示(兼容Node.js和浏览器环境)
|
|
24
|
+
if (typeof Error.captureStackTrace === 'function') {
|
|
25
|
+
Error.captureStackTrace(this, MyOpenLayersError);
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
// 在不支持captureStackTrace的环境中,手动设置stack
|
|
29
|
+
this.stack = (new Error()).stack;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* 错误处理工具类
|
|
35
|
+
*/
|
|
36
|
+
export class ErrorHandler {
|
|
37
|
+
constructor() {
|
|
38
|
+
this.errorCallbacks = [];
|
|
39
|
+
this.logLevel = 'error';
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* 获取单例实例
|
|
43
|
+
*/
|
|
44
|
+
static getInstance() {
|
|
45
|
+
if (!ErrorHandler.instance) {
|
|
46
|
+
ErrorHandler.instance = new ErrorHandler();
|
|
47
|
+
}
|
|
48
|
+
return ErrorHandler.instance;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* 设置日志级别
|
|
52
|
+
* @param level 日志级别
|
|
53
|
+
*/
|
|
54
|
+
setLogLevel(level) {
|
|
55
|
+
this.logLevel = level;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* 添加错误回调
|
|
59
|
+
* @param callback 错误回调函数
|
|
60
|
+
*/
|
|
61
|
+
addErrorCallback(callback) {
|
|
62
|
+
this.errorCallbacks.push(callback);
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* 移除错误回调
|
|
66
|
+
* @param callback 要移除的回调函数
|
|
67
|
+
*/
|
|
68
|
+
removeErrorCallback(callback) {
|
|
69
|
+
const index = this.errorCallbacks.indexOf(callback);
|
|
70
|
+
if (index > -1) {
|
|
71
|
+
this.errorCallbacks.splice(index, 1);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* 处理错误
|
|
76
|
+
* @param error 错误对象
|
|
77
|
+
*/
|
|
78
|
+
handleError(error) {
|
|
79
|
+
// 记录错误日志
|
|
80
|
+
this.logError(error);
|
|
81
|
+
// 调用错误回调
|
|
82
|
+
this.errorCallbacks.forEach(callback => {
|
|
83
|
+
try {
|
|
84
|
+
callback(error);
|
|
85
|
+
}
|
|
86
|
+
catch (callbackError) {
|
|
87
|
+
console.error('Error in error callback:', callbackError);
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* 创建并处理错误
|
|
93
|
+
* @param message 错误消息
|
|
94
|
+
* @param type 错误类型
|
|
95
|
+
* @param context 错误上下文
|
|
96
|
+
*/
|
|
97
|
+
createAndHandleError(message, type, context) {
|
|
98
|
+
const error = new MyOpenLayersError(message, type, context);
|
|
99
|
+
this.handleError(error);
|
|
100
|
+
return error;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* 记录错误日志
|
|
104
|
+
* @param error 错误对象
|
|
105
|
+
*/
|
|
106
|
+
logError(error) {
|
|
107
|
+
const logMessage = `[${error.type}] ${error.message}`;
|
|
108
|
+
const logData = {
|
|
109
|
+
message: error.message,
|
|
110
|
+
type: error.type,
|
|
111
|
+
timestamp: error.timestamp,
|
|
112
|
+
context: error.context,
|
|
113
|
+
stack: error.stack
|
|
114
|
+
};
|
|
115
|
+
switch (this.logLevel) {
|
|
116
|
+
case 'debug':
|
|
117
|
+
console.debug(logMessage, logData);
|
|
118
|
+
break;
|
|
119
|
+
case 'info':
|
|
120
|
+
console.info(logMessage, logData);
|
|
121
|
+
break;
|
|
122
|
+
case 'warn':
|
|
123
|
+
console.warn(logMessage, logData);
|
|
124
|
+
break;
|
|
125
|
+
case 'error':
|
|
126
|
+
default:
|
|
127
|
+
console.error(logMessage, logData);
|
|
128
|
+
break;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* 验证参数
|
|
133
|
+
* @param condition 验证条件
|
|
134
|
+
* @param message 错误消息
|
|
135
|
+
* @param context 错误上下文
|
|
136
|
+
*/
|
|
137
|
+
static validate(condition, message, context) {
|
|
138
|
+
if (!condition) {
|
|
139
|
+
throw ErrorHandler.getInstance().createAndHandleError(message, ErrorType.VALIDATION_ERROR, context);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* 验证地图实例
|
|
144
|
+
* @param map 地图实例
|
|
145
|
+
*/
|
|
146
|
+
static validateMap(map) {
|
|
147
|
+
ErrorHandler.validate(map && typeof map === 'object', 'Map instance is required', { map });
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* 验证坐标
|
|
151
|
+
* @param longitude 经度
|
|
152
|
+
* @param latitude 纬度
|
|
153
|
+
*/
|
|
154
|
+
static validateCoordinates(longitude, latitude) {
|
|
155
|
+
ErrorHandler.validate(typeof longitude === 'number' && !isNaN(longitude), 'Valid longitude is required', { longitude, latitude });
|
|
156
|
+
ErrorHandler.validate(typeof latitude === 'number' && !isNaN(latitude), 'Valid latitude is required', { longitude, latitude });
|
|
157
|
+
ErrorHandler.validate(longitude >= -180 && longitude <= 180, 'Longitude must be between -180 and 180', { longitude, latitude });
|
|
158
|
+
ErrorHandler.validate(latitude >= -90 && latitude <= 90, 'Latitude must be between -90 and 90', { longitude, latitude });
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* 验证图层名称
|
|
162
|
+
* @param layerName 图层名称
|
|
163
|
+
*/
|
|
164
|
+
static validateLayerName(layerName) {
|
|
165
|
+
ErrorHandler.validate(typeof layerName === 'string' && layerName.trim().length > 0, 'Valid layer name is required', { layerName });
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* 验证数据
|
|
169
|
+
* @param data 数据
|
|
170
|
+
* @param dataType 数据类型描述
|
|
171
|
+
*/
|
|
172
|
+
static validateData(data, dataType) {
|
|
173
|
+
ErrorHandler.validate(data !== null && data !== undefined, `${dataType} is required`, { data, dataType });
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* 安全执行函数
|
|
177
|
+
* @param fn 要执行的函数
|
|
178
|
+
* @param errorMessage 错误消息
|
|
179
|
+
* @param errorType 错误类型
|
|
180
|
+
* @param context 错误上下文
|
|
181
|
+
*/
|
|
182
|
+
static safeExecute(fn, errorMessage, errorType = ErrorType.COMPONENT_ERROR, context) {
|
|
183
|
+
try {
|
|
184
|
+
return fn();
|
|
185
|
+
}
|
|
186
|
+
catch (error) {
|
|
187
|
+
const myError = ErrorHandler.getInstance().createAndHandleError(`${errorMessage}: ${error}`, errorType, { originalError: error, context });
|
|
188
|
+
throw myError;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}
|