gis-common 2.2.10 → 2.2.12

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 (2) hide show
  1. package/dist/resource.min.js +1 -2821
  2. package/package.json +1 -1
@@ -1,2821 +1 @@
1
- (function webpackUniversalModuleDefinition(root, factory) {
2
- if(typeof exports === 'object' && typeof module === 'object')
3
- module.exports = factory();
4
- else if(typeof define === 'function' && define.amd)
5
- define("Gis", [], factory);
6
- else if(typeof exports === 'object')
7
- exports["Gis"] = factory();
8
- else
9
- root["Gis"] = factory();
10
- })(window, function() {
11
- return /******/ (function(modules) { // webpackBootstrap
12
- /******/ // The module cache
13
- /******/ var installedModules = {};
14
- /******/
15
- /******/ // The require function
16
- /******/ function __webpack_require__(moduleId) {
17
- /******/
18
- /******/ // Check if module is in cache
19
- /******/ if(installedModules[moduleId]) {
20
- /******/ return installedModules[moduleId].exports;
21
- /******/ }
22
- /******/ // Create a new module (and put it into the cache)
23
- /******/ var module = installedModules[moduleId] = {
24
- /******/ i: moduleId,
25
- /******/ l: false,
26
- /******/ exports: {}
27
- /******/ };
28
- /******/
29
- /******/ // Execute the module function
30
- /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
31
- /******/
32
- /******/ // Flag the module as loaded
33
- /******/ module.l = true;
34
- /******/
35
- /******/ // Return the exports of the module
36
- /******/ return module.exports;
37
- /******/ }
38
- /******/
39
- /******/
40
- /******/ // expose the modules object (__webpack_modules__)
41
- /******/ __webpack_require__.m = modules;
42
- /******/
43
- /******/ // expose the module cache
44
- /******/ __webpack_require__.c = installedModules;
45
- /******/
46
- /******/ // define getter function for harmony exports
47
- /******/ __webpack_require__.d = function(exports, name, getter) {
48
- /******/ if(!__webpack_require__.o(exports, name)) {
49
- /******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
50
- /******/ }
51
- /******/ };
52
- /******/
53
- /******/ // define __esModule on exports
54
- /******/ __webpack_require__.r = function(exports) {
55
- /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
56
- /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
57
- /******/ }
58
- /******/ Object.defineProperty(exports, '__esModule', { value: true });
59
- /******/ };
60
- /******/
61
- /******/ // create a fake namespace object
62
- /******/ // mode & 1: value is a module id, require it
63
- /******/ // mode & 2: merge all properties of value into the ns
64
- /******/ // mode & 4: return value when already ns object
65
- /******/ // mode & 8|1: behave like require
66
- /******/ __webpack_require__.t = function(value, mode) {
67
- /******/ if(mode & 1) value = __webpack_require__(value);
68
- /******/ if(mode & 8) return value;
69
- /******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
70
- /******/ var ns = Object.create(null);
71
- /******/ __webpack_require__.r(ns);
72
- /******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
73
- /******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
74
- /******/ return ns;
75
- /******/ };
76
- /******/
77
- /******/ // getDefaultExport function for compatibility with non-harmony modules
78
- /******/ __webpack_require__.n = function(module) {
79
- /******/ var getter = module && module.__esModule ?
80
- /******/ function getDefault() { return module['default']; } :
81
- /******/ function getModuleExports() { return module; };
82
- /******/ __webpack_require__.d(getter, 'a', getter);
83
- /******/ return getter;
84
- /******/ };
85
- /******/
86
- /******/ // Object.prototype.hasOwnProperty.call
87
- /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
88
- /******/
89
- /******/ // __webpack_public_path__
90
- /******/ __webpack_require__.p = "/dist/";
91
- /******/
92
- /******/
93
- /******/ // Load entry module and return exports
94
- /******/ return __webpack_require__(__webpack_require__.s = 0);
95
- /******/ })
96
- /************************************************************************/
97
- /******/ ([
98
- /* 0 */
99
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
100
-
101
- "use strict";
102
- // ESM COMPAT FLAG
103
- __webpack_require__.r(__webpack_exports__);
104
-
105
- // EXPORTS
106
- __webpack_require__.d(__webpack_exports__, "AnimateUtils", function() { return /* reexport */ AnimateUtils; });
107
- __webpack_require__.d(__webpack_exports__, "ArrayUtils", function() { return /* reexport */ ArrayUtils; });
108
- __webpack_require__.d(__webpack_exports__, "BrowserUtils", function() { return /* reexport */ BrowserUtils; });
109
- __webpack_require__.d(__webpack_exports__, "Cookie", function() { return /* reexport */ Cookie; });
110
- __webpack_require__.d(__webpack_exports__, "CoordsUtils", function() { return /* reexport */ CoordsUtils; });
111
- __webpack_require__.d(__webpack_exports__, "DateUtils", function() { return /* reexport */ DateUtils; });
112
- __webpack_require__.d(__webpack_exports__, "DomUtils", function() { return /* reexport */ DomUtils; });
113
- __webpack_require__.d(__webpack_exports__, "GeoUtils", function() { return /* reexport */ GeoUtils; });
114
- __webpack_require__.d(__webpack_exports__, "FileUtils", function() { return /* reexport */ FileUtils; });
115
- __webpack_require__.d(__webpack_exports__, "MathUtils", function() { return /* reexport */ MathUtils; });
116
- __webpack_require__.d(__webpack_exports__, "OptimizeUtils", function() { return /* reexport */ OptimizeUtils; });
117
- __webpack_require__.d(__webpack_exports__, "StringUtils", function() { return /* reexport */ StringUtils; });
118
- __webpack_require__.d(__webpack_exports__, "AssertUtils", function() { return /* reexport */ AssertUtils; });
119
- __webpack_require__.d(__webpack_exports__, "Utils", function() { return /* reexport */ CommUtils; });
120
- __webpack_require__.d(__webpack_exports__, "EventType", function() { return /* reexport */ EventTypeConstant; });
121
- __webpack_require__.d(__webpack_exports__, "ErrorType", function() { return /* reexport */ ErrorTypeConstant; });
122
- __webpack_require__.d(__webpack_exports__, "LayerType", function() { return /* reexport */ LayerType; });
123
- __webpack_require__.d(__webpack_exports__, "GraphicType", function() { return /* reexport */ GraphicType; });
124
- __webpack_require__.d(__webpack_exports__, "MeasureMode", function() { return /* reexport */ MeasureMode; });
125
- __webpack_require__.d(__webpack_exports__, "AudioPlayer", function() { return /* reexport */ core_AudioPlayer; });
126
- __webpack_require__.d(__webpack_exports__, "CanvasDrawer", function() { return /* reexport */ core_CanvasDrawer; });
127
- __webpack_require__.d(__webpack_exports__, "ElQuery", function() { return /* reexport */ core_ElQuery; });
128
- __webpack_require__.d(__webpack_exports__, "EventDispatcher", function() { return /* reexport */ core_EventDispatcher; });
129
- __webpack_require__.d(__webpack_exports__, "HashMap", function() { return /* reexport */ core_HashMap; });
130
- __webpack_require__.d(__webpack_exports__, "WebSocketClient", function() { return /* reexport */ core_WebSocketClient; });
131
- __webpack_require__.d(__webpack_exports__, "WebStorage", function() { return /* reexport */ core_WebStorage; });
132
- __webpack_require__.d(__webpack_exports__, "DevicePixelRatio", function() { return /* reexport */ core_DevicePixelRatio; });
133
-
134
- // CONCATENATED MODULE: ./src/utils/AnimateUtils.js
135
- /* harmony default export */ var AnimateUtils = ({
136
- /**
137
- * 多属性的动画函数
138
- * @param {*} ele 需要运动的节点
139
- * @param {*} attr_options 传入的是一个需要运动的属性包括运动的目标值,操作的节点属性
140
- * @param {*} timefn 运动的形式,默认是缓冲运动
141
- * @param {*} speed 运动的速度
142
- */
143
- animate: function animate(ele, attr_options, callback) {
144
- var timefn = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : "swing";
145
- var speed = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 5;
146
-
147
- for (var attr in attr_options) {
148
- attr_options[attr] = {
149
- target: attr === "opacity" ? parseInt(attr_options[attr] * 100) : attr_options[attr],
150
- // 需要计算得到
151
- iNow: attr === "opacity" ? parseInt(getComputedStyle(ele)[attr] * 100) : parseInt(getComputedStyle(ele)[attr])
152
- };
153
- }
154
-
155
- // 判断是不是匀速运动
156
- if (timefn === "liner") {
157
- speed = attr_options[attr].iNow < attr_options[attr].target ? Math.abs(speed) : -Math.abs(speed);
158
- }
159
- // 为了防止每个节点的定时器冲突,每次进入的时候我们需要先清理下节点的定时器
160
- clearInterval(ele.timer);
161
- // 然后再去设置定时器
162
- ele.timer = setInterval(function () {
163
- // 因为是多属性运动,我们首先循环遍历每一个属性
164
- for (var attr in attr_options) {
165
- var target = attr_options[attr].target;
166
-
167
- var iNow = attr_options[attr].iNow;
168
-
169
- // 计算speed 判断是不是缓冲运动
170
- if (timefn === "swing") {
171
- speed = (target - iNow) / 20;
172
- // 为了防止速度无法达到一个整数
173
- speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed);
174
- }
175
-
176
- // 运动之中条件的判断
177
- if (Math.abs(target - iNow) <= Math.abs(speed)) {
178
- if (attr === "opacity") {
179
- ele.style[attr] = target / 100;
180
- } else {
181
- ele.style[attr] = target + "px";
182
- }
183
-
184
- // 每次一个属性运动完成之后我们就直接将它删除
185
- delete attr_options[attr];
186
-
187
- // 每次都去循环看一下还有没有属性需要操作
188
- for (var num in attr_options) {
189
- return false;
190
- }
191
- // 清理定时器 因为我们是一个定时器绑定多个属性操作所以我们需要保证所有的属性都完成之后我们才可以将定时器清除
192
- clearInterval(ele.timer);
193
- // 等结束之后我们需要判断这个回到函数是函数我们就回调
194
- typeof callback === "function" ? callback() : "";
195
- } else {
196
- attr_options[attr].iNow += speed;
197
- if (attr === "opacity") {
198
- ele.style[attr] = attr_options[attr].iNow / 100;
199
- } else {
200
- ele.style[attr] = attr_options[attr].iNow + "px";
201
- }
202
- }
203
- }
204
- }, 30);
205
- }
206
- });
207
- // CONCATENATED MODULE: ./src/constant/EventTypeConstant.js
208
- /* harmony default export */ var EventTypeConstant = ({
209
- MAP_RENDER: "mapRender",
210
- MAP_READY: "mapReady",
211
- MOUSE_CLICK: "click",
212
- MOUSE_DOUBLE_CLICK: "dblclick",
213
- MOUSE_MOVE: "mousemove",
214
- MOUSE_IN: "mousein",
215
- MOUSE_OUT: "mouseout",
216
- MOUSE_RIGHT_CLICK: "mouseRightClick",
217
- KEY_DOWN: "keyDown",
218
- KEY_UP: "keyUp",
219
- DRAW_ACTIVE: "drawActive",
220
- DRAW_MOVE: "drawMove",
221
- DRAW_COMPLETE: "drawComplete",
222
- MQTT_CONNECT: "mqttConnect",
223
- MQTT_ERROR: "mqttError",
224
- MQTT_MESSAGE: "mqttMessage",
225
- MQTT_CLOSE: "mqttClose",
226
- WEB_SOCKET_CONNECT: "webSocketConnect",
227
- WEB_SOCKET_ERROR: "webSocketError",
228
- WEB_SOCKET_MESSAGE: "webSocketMessage",
229
- WEB_SOCKET_CLOSE: "webSocketClose"
230
- });
231
- // CONCATENATED MODULE: ./src/constant/ErrorTypeConstant.js
232
- /* harmony default export */ var ErrorTypeConstant = ({
233
- LOGIN_EXPIRED: '登录信息过期,请重新登录',
234
- CROSS_ERROR: '跨域访问',
235
- UNEXIST_RESOURCE: '资源不存在',
236
- TIMEOUT: '请求超时',
237
- INTERNAL_ERROR: '内部错误',
238
- NETWORK_ERROR: '请求失败,请检查网络是否已连接',
239
- PROCESS_FAIL: '处理失败',
240
- AUTH_VERIFY_ERROR: '权限验证失败',
241
- NO_DATA_FOUND: '未找到数据',
242
- DUPLICATE_INSTANCE: '实例为单例模式,不允许重复构建',
243
- COORDINATE_ERROR: '坐标验证失败',
244
- JSON_PARSE_ERROR: 'JSON解析失败,格式有误',
245
- JSON_VALUE_ERROR: 'JSON无此键',
246
- PARAMETER_ERROR: '验证数据类型失败',
247
- PARAMETER_ERROR_ARRAY: '格式类型验证失败:必须是数组',
248
- PARAMETER_ERROR_STRING: '格式类型验证失败:必须是字符',
249
- PARAMETER_ERROR_FUNCTION: '格式类型验证失败:必须是函数',
250
- PARAMETER_ERROR_OBJECT: '格式类型验证失败:必须是对象',
251
- PARAMETER_ERROR_LACK: '参数缺失'
252
- });
253
- // CONCATENATED MODULE: ./src/constant/LayerType.js
254
- /* harmony default export */ var LayerType = ({
255
- SUPER_MAP_IMAGES: "SuperMapImages", // 超图影像服务 栅格数据
256
- SUPER_MAP_DATA: "SuperMapData", // 超图服务 矢量数据
257
- ARC_GIS_MAP_IMAGES: "ArcGisMapImages", // arcGis影像图层 栅格数据
258
- ARC_GIS_MAP_DATA: "ArcGisMapData", // arcGis图层 矢量数据
259
- OSGB_LAYER: "OSGBLayer",
260
- S3M_GROUP: "S3MGroup", // addS3MGroupLayer(url, options, index) 添加S3M分组图层。
261
- TERRAIN_LAYER: "TerrainFileLayer" // 地形图层, 需要单独处理
262
- });
263
- // CONCATENATED MODULE: ./src/constant/GraphicConstant.js
264
- var GraphicType = {
265
- POINT: 'point',
266
- POLYLINE: 'polyline',
267
- POLYGON: 'polygon',
268
- BILLBOARD: 'billboard',
269
- CYLINDER: 'cylinder',
270
- ELLIPSOID: 'ellipsoid',
271
- LABEL: 'label',
272
- MODEL: 'model',
273
- WALL: 'wall'
274
- };
275
- var MeasureMode = {
276
- DISTANCE: 'distance',
277
- AREA: 'area',
278
- HEIGHT: 'height'
279
- };
280
- // CONCATENATED MODULE: ./src/constant/index.js
281
-
282
-
283
-
284
-
285
- // CONCATENATED MODULE: ./src/utils/CommUtils.js
286
-
287
-
288
- /* eslint-disable no-extend-native, space-in-parens */
289
- /* harmony default export */ var CommUtils = ({
290
- /**
291
- * 判断数据类型
292
- *
293
- * @param {*} data
294
- * @returns {*}
295
- */
296
- getDataType: function getDataType(data) {
297
- return Object.prototype.toString.call(data).slice(8, -1);
298
- },
299
- isEmpty: function isEmpty(value) {
300
- if (value == null) {
301
- // 等同于 value === undefined || value === null
302
- return true;
303
- }
304
- var type = this.getDataType(value);
305
- switch (type) {
306
- case 'String':
307
- return value.trim() === '';
308
- case 'Array':
309
- return !value.length;
310
- case 'Object':
311
- return !Object.keys(value).length;
312
- case 'Boolean':
313
- return !value;
314
- default:
315
- return false; // 其他对象均视作非空
316
- }
317
- },
318
- isNotEmpty: function isNotEmpty(val) {
319
- return !this.isEmpty(val);
320
- },
321
- json2form: function json2form(json) {
322
- var formData = new FormData();
323
- Object.keys(json).forEach(function (key) {
324
- formData.append(key, json[key] instanceof Object ? JSON.stringify(json[key]) : json[key]);
325
- });
326
- return formData;
327
- },
328
-
329
- /**
330
- * json转换成get参数形式
331
- *
332
- * @param {*} json
333
- * @returns {*}
334
- */
335
- json2Query: function json2Query(json) {
336
- var tempArr = [];
337
- for (var i in json) {
338
- var key = i;
339
- var value = json[i];
340
- tempArr.push(key + '=' + value);
341
- }
342
- var urlParamsStr = tempArr.join('&');
343
- return urlParamsStr;
344
- },
345
- generateGuid: function generateGuid() {
346
- var S4 = function S4() {
347
- return ((1 + Math.random()) * 0x10000 | 0).toString(16).substring(1);
348
- };
349
- return S4() + S4() + S4() + S4() + S4() + S4() + S4() + S4();
350
- },
351
- decodeDict: function decodeDict() {
352
- var res = '';
353
-
354
- for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
355
- args[_key] = arguments[_key];
356
- }
357
-
358
- if (args.length > 1) {
359
- var items = args.slice(1, args.length % 2 === 0 ? args.length - 1 : args.length);
360
- for (var i = 0; i < items.length; i = i + 2) {
361
- var item = items[i];
362
- if (args[0] === item) {
363
- res = items[i + 1];
364
- }
365
- }
366
- if (!res && args.length % 2 === 0) {
367
- res = args[args.length - 1];
368
- }
369
- } else {
370
- res = args[0];
371
- }
372
- return res;
373
- },
374
- extend: function extend(dest) {
375
- var i = void 0,
376
- j = void 0,
377
- len = void 0,
378
- src = void 0;
379
-
380
- for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
381
- args[_key2 - 1] = arguments[_key2];
382
- }
383
-
384
- for (j = 0, len = args.length; j < len; j++) {
385
- src = args[j];
386
- for (i in src) {
387
- dest[i] = src[i];
388
- }
389
- }
390
- return dest;
391
- },
392
- rgb2hex: function rgb2hex(rgb) {
393
- var hex = '#' + ((1 << 24) + (rgb[0] << 16) + (rgb[1] << 8) + rgb[2]).toString(16).slice(1);
394
- return hex;
395
- },
396
-
397
- /**
398
- * 将平级对象列表转换为树形结构对象列表
399
- *
400
- * @param {Array} data
401
- * @param {string} [idPropertyName="id"]
402
- * @param {string} [parentIdPropertyName="parentId"]
403
- * @param {string} [childrenPropertyName="children"]
404
- * @returns {*}
405
- */
406
- convertToTree2: function convertToTree2(data) {
407
- var idPropertyName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'id';
408
- var parentIdPropertyName = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'parentId';
409
- var childrenPropertyName = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'children';
410
-
411
- var result = [];
412
- function buildChildren(item) {
413
- var id = item[idPropertyName];
414
- var children = data.filter(function (item2) {
415
- return item2.hasOwnProperty(parentIdPropertyName) && item2[parentIdPropertyName] === id;
416
- });
417
- if (children.length > 0) {
418
- children.forEach(buildChildren);
419
- item[childrenPropertyName] = children;
420
- }
421
- }
422
-
423
- var _loop = function _loop(item) {
424
- if (data.findIndex(function (t) {
425
- return t[idPropertyName] === item[parentIdPropertyName];
426
- }) === -1) {
427
- buildChildren(item);
428
- result.push(item);
429
- }
430
- };
431
-
432
- var _iteratorNormalCompletion = true;
433
- var _didIteratorError = false;
434
- var _iteratorError = undefined;
435
-
436
- try {
437
- for (var _iterator = data[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
438
- var item = _step.value;
439
-
440
- _loop(item);
441
- }
442
- } catch (err) {
443
- _didIteratorError = true;
444
- _iteratorError = err;
445
- } finally {
446
- try {
447
- if (!_iteratorNormalCompletion && _iterator.return) {
448
- _iterator.return();
449
- }
450
- } finally {
451
- if (_didIteratorError) {
452
- throw _iteratorError;
453
- }
454
- }
455
- }
456
-
457
- return result;
458
- },
459
-
460
- /**
461
- * 异步加载script
462
- *
463
- * @param {*} url
464
- */
465
- asyncLoadScript: function asyncLoadScript(url) {
466
- return new Promise(function (resolve, reject) {
467
- try {
468
- var oscript = document.createElement('script');
469
- if (oscript.readyState) {
470
- // ie8及以下版本
471
- oscript.onreadystatechange = function () {
472
- if (oscript.readyState === 'complete' || oscript.readyState === 'loaded') {
473
- resolve(oscript);
474
- }
475
- };
476
- } else {
477
- oscript.onload = function () {
478
- resolve(oscript);
479
- };
480
- }
481
- oscript.type = 'text/javascript';
482
- oscript.src = url;
483
- document.body.appendChild(oscript);
484
- } catch (error) {
485
- reject(error);
486
- }
487
- });
488
- },
489
- loadStyle: function loadStyle(urls) {
490
- urls.forEach(function (url) {
491
- var css = document.createElement('link');
492
- css.href = url;
493
- css.rel = 'stylesheet';
494
- css.type = 'text/css';
495
- document.head.appendChild(css);
496
- });
497
- },
498
-
499
- /**
500
- * 提取json中的value组成一个新的字符串
501
- * eg: template('aaa{key}', json)
502
- *
503
- * @param {*} str
504
- * @param {*} data
505
- * @returns {*}
506
- */
507
- template: function template(str, data) {
508
- var templateRe = /\{ *([\w_-]+) *\}/g;
509
- return str.replace(templateRe, function (str, key) {
510
- var value = data[key];
511
- if (value === undefined) {
512
- throw new Error(ErrorTypeConstant.JSON_VALUE_ERROR + str);
513
- } else if (typeof value === 'function') {
514
- value = value(data);
515
- }
516
- return value;
517
- });
518
- },
519
- deleteEmptyProperty: function deleteEmptyProperty(data) {
520
- var _this = this;
521
-
522
- return Object.fromEntries(Object.keys(data).filter(function (d) {
523
- return !_this.isEmpty(data[d]);
524
- }).map(function (i) {
525
- return [i, data[i]];
526
- }));
527
- },
528
- deepAssign: function deepAssign() {
529
- var len = arguments.length,
530
- target = arguments[0];
531
- if (this.getDataType(target) !== 'Object') {
532
- target = {};
533
- }
534
- for (var i = 1; i < len; i++) {
535
- var source = arguments[i];
536
- if (this.getDataType(source) === 'Object') {
537
- for (var s in source) {
538
- if (s === '__proto__' || target === source[s]) {
539
- continue;
540
- }
541
- if (this.getDataType(source[s]) === 'Object') {
542
- target[s] = this.deepAssign(target[s], source[s]);
543
- } else {
544
- target[s] = source[s];
545
- }
546
- }
547
- }
548
- }
549
- return target;
550
- },
551
- handleCopyValue: function handleCopyValue(text) {
552
- if (!navigator.clipboard && window.isSecureContext) {
553
- return navigator.clipboard.writeText(text);
554
- } else {
555
- var textArea = document.createElement('textarea');
556
- textArea.style.position = 'fixed';
557
- textArea.style.top = textArea.style.left = '-100vh';
558
- textArea.style.opacity = '0';
559
- textArea.value = text;
560
- document.body.appendChild(textArea);
561
- textArea.focus();
562
- textArea.select();
563
- return new Promise(function (resolve, reject) {
564
- document.execCommand('copy') ? resolve() : reject(new Error('copy failed'));
565
- textArea.remove();
566
- });
567
- }
568
- }
569
- });
570
- // CONCATENATED MODULE: ./src/utils/ArrayUtils.js
571
- function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
572
-
573
-
574
- /**
575
- * 分组函数,暂时无法进行多层分组。如有需要可以使用groupBy+map+flat方法打平
576
- * @param {*} f
577
- */
578
- Array.prototype.groupBy = function (f) {
579
- var groups = {};
580
- this.forEach(function (o) {
581
- var group = JSON.stringify(f(o));
582
- groups[group] = groups[group] || [];
583
- groups[group].push(o);
584
- });
585
- return Object.keys(groups).map(function (group) {
586
- return groups[group];
587
- });
588
- };
589
- /**
590
- * 用于数组对象去重
591
- * 单纯数组可用[...new Set(arr)]
592
- * @param {*} f
593
- */
594
- Array.prototype.distinct = function (f) {
595
- var arr = [],
596
- obj = {};
597
- this.forEach(function (item) {
598
- var val = f(item);
599
- !obj[val] && (obj[val] = arr.push(item));
600
- });
601
- return arr;
602
- };
603
- Array.prototype.max = function () {
604
- return Math.max.apply({}, this);
605
- };
606
- Array.prototype.min = function () {
607
- return Math.min.apply({}, this);
608
- };
609
- Array.prototype.sum = function () {
610
- return this.length > 0 ? this.reduce(function () {
611
- var prev = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
612
- var curr = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
613
- return prev + curr;
614
- }) : 0;
615
- };
616
- Array.prototype.avg = function () {
617
- return this.length ? this.sum() / this.length : 0;
618
- };
619
- Array.prototype.desc = function (f) {
620
- return this.sort(function (n1, n2) {
621
- return (f ? f(n2) : n2) - (f ? f(n1) : n1);
622
- });
623
- };
624
- Array.prototype.asc = function (f) {
625
- return this.sort(function (n1, n2) {
626
- return (f ? f(n1) : n1) - (f ? f(n2) : n2);
627
- });
628
- };
629
- Array.prototype.clear = function () {
630
- this.length = 0;
631
- return this;
632
- };
633
- /* harmony default export */ var ArrayUtils = ({
634
- asArray: function asArray(obj) {
635
- return CommUtils.isEmpty(obj) ? [] : Array.isArray(obj) ? obj : [obj];
636
- },
637
- generateArray: function generateArray(length) {
638
- return [].concat(_toConsumableArray(new Array(length).keys()));
639
- },
640
- union: function union() {
641
- var res = [];
642
-
643
- for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
644
- args[_key] = arguments[_key];
645
- }
646
-
647
- args.forEach(function (arg) {
648
- if (Array.isArray(arg)) {
649
- res = res.concat(arg.filter(function (v) {
650
- return !res.includes(v);
651
- }));
652
- }
653
- });
654
- return res;
655
- },
656
- intersection: function intersection() {
657
- for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
658
- args[_key2] = arguments[_key2];
659
- }
660
-
661
- var res = args[0] || [];
662
- args.forEach(function (arg) {
663
- if (Array.isArray(arg)) {
664
- res = res.filter(function (v) {
665
- return arg.includes(v);
666
- });
667
- }
668
- });
669
- return res;
670
- },
671
- unionAll: function unionAll() {
672
- for (var _len3 = arguments.length, args = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
673
- args[_key3] = arguments[_key3];
674
- }
675
-
676
- return [].concat(_toConsumableArray(args)).flat().filter(function (d) {
677
- return !!d;
678
- });
679
- },
680
- difference: function difference() {
681
- var _this = this;
682
-
683
- for (var _len4 = arguments.length, args = Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
684
- args[_key4] = arguments[_key4];
685
- }
686
-
687
- return this.union.apply(this, _toConsumableArray(args)).filter(function (d) {
688
- return !_this.intersection.apply(_this, _toConsumableArray(args)).includes(d);
689
- });
690
- }
691
- });
692
- // CONCATENATED MODULE: ./src/utils/BrowserUtils.js
693
- /* harmony default export */ var BrowserUtils = ({
694
- getUrlParams: function getUrlParams() {
695
- var href = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : window.location.href;
696
- var needDecode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
697
-
698
- var reg = /([^&=]+)=([\w\W]*?)(&|$|#)/g;
699
-
700
- var _ref = new URL(href),
701
- search = _ref.search,
702
- hash = _ref.hash;
703
-
704
- var args = [search, hash];
705
- var obj = {};
706
- for (var i = 0; i < args.length; i++) {
707
- var str = args[i];
708
- if (str) {
709
- var s = str.replace(/#|\//g, '');
710
- var arr = s.split('?');
711
- if (arr.length > 1) {
712
- for (var _i = 1; _i < arr.length; _i++) {
713
- var res = void 0;
714
- while (res = reg.exec(arr[_i])) {
715
- obj[res[1]] = needDecode ? decodeURIComponent(res[2]) : res[2];
716
- }
717
- }
718
- }
719
- }
720
- }
721
- return obj;
722
- },
723
- getExplorer: function getExplorer() {
724
- var explorer = window.navigator.userAgent;
725
- if (explorer.indexOf('MSIE') >= 0) {
726
- return 'IE';
727
- }
728
- if (!!window.ActiveXObject || 'ActiveXObject' in window) {
729
- // IE
730
- return 'IE';
731
- } else if (explorer.indexOf('Firefox') >= 0) {
732
- // Firefox
733
- return 'Firefox';
734
- } else if (explorer.indexOf('Chrome') >= 0) {
735
- // Chrome
736
- return 'Chrome';
737
- } else if (explorer.indexOf('Opera') >= 0) {
738
- // Opera
739
- return 'Opera';
740
- } else if (explorer.indexOf('Safari') >= 0) {
741
- // Safari
742
- return 'Safari';
743
- }
744
- },
745
- detectOS: function detectOS() {
746
- var os_type = '';
747
- var windows = navigator.userAgent.indexOf('Windows', 0) != -1 ? 1 : 0;
748
- var mac = navigator.userAgent.indexOf('mac', 0) != -1 ? 1 : 0;
749
- var linux = navigator.userAgent.indexOf('Linux', 0) != -1 ? 1 : 0;
750
- var unix = navigator.userAgent.indexOf('X11', 0) != -1 ? 1 : 0;
751
- if (windows) os_type = 'MS Windows';else if (mac) os_type = 'Apple mac';else if (linux) os_type = 'Linux';else if (unix) os_type = 'Unix';
752
- return os_type;
753
- },
754
- switchFullScreen: function switchFullScreen(status) {
755
- if (status) {
756
- var element = document.documentElement;
757
- if (element.requestFullscreen) {
758
- element.requestFullscreen();
759
- } else if (element.msRequestFullscreen) {
760
- element.msRequestFullscreen();
761
- } else if (element.mozRequestFullScreen) {
762
- element.mozRequestFullScreen();
763
- } else if (element.webkitRequestFullscreen) {
764
- element.webkitRequestFullscreen();
765
- }
766
- } else {
767
- if (document.exitFullscreen) {
768
- document.exitFullscreen();
769
- } else if (document.msExitFullscreen) {
770
- document.msExitFullscreen();
771
- } else if (document.mozCancelFullScreen) {
772
- document.mozCancelFullScreen();
773
- } else if (document.webkitExitFullscreen) {
774
- document.webkitExitFullscreen();
775
- }
776
- }
777
- },
778
-
779
- /**
780
- * scale屏幕适配方案
781
- */
782
- refreshScale: function refreshScale() {
783
- var baseWidth = document.documentElement.clientWidth;
784
- var baseHeight = document.documentElement.clientHeight;
785
- var appStyle = document.getElementById('app').style;
786
- var realRatio = baseWidth / baseHeight;
787
- var designRatio = 16 / 9;
788
- var scaleRate = baseWidth / 1920;
789
- if (realRatio > designRatio) {
790
- scaleRate = baseHeight / 1080;
791
- }
792
- appStyle.transformOrigin = 'left top';
793
- appStyle.transform = 'scale(' + scaleRate + ') translateX(-49.99%)';
794
- appStyle.width = baseWidth / scaleRate + 'px';
795
- },
796
-
797
- /**
798
- * rem屏幕适配方案
799
- */
800
- getHtmlFontSize: function getHtmlFontSize() {
801
- var htmlwidth = document.documentElement.clientWidth || document.body.clientWidth;
802
- var htmlDom = document.querySelector('html');
803
- htmlDom.style.fontSize = htmlwidth / 192 + 'px';
804
- }
805
- });
806
- // CONCATENATED MODULE: ./src/utils/Cookie.js
807
- /* harmony default export */ var Cookie = ({
808
- set: function set(name, value) {
809
- var Days = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 30;
810
-
811
- var exp = new Date();
812
- exp.setTime(exp.getTime() + Days * 24 * 60 * 60 * 1000);
813
- document.cookie = name + '=' + escape(value) + ';expires=' + exp.toGMTString();
814
- },
815
- remove: function remove(name) {
816
- var exp = new Date();
817
- exp.setTime(exp.getTime() - 1);
818
- var cval = this.get(name);
819
- if (cval != null) {
820
- document.cookie = name + '=' + cval + ';expires=' + exp.toGMTString();
821
- }
822
- },
823
- get: function get(name) {
824
- var arr = document.cookie.match(new RegExp('(^| )' + name + '=([^;]*)(;|$)'));
825
- if (arr != null) {
826
- return arr[2];
827
- } else {
828
- return '';
829
- }
830
- }
831
- });
832
- // CONCATENATED MODULE: ./src/utils/CoordsUtils.js
833
- /* harmony default export */ var CoordsUtils = ({
834
- PI: 3.14159265358979324,
835
- XPI: 3.14159265358979324 * 3000.0 / 180.0,
836
- delta: function delta(lat, lng) {
837
- var a = 6378245.0; // a: 卫星椭球坐标投影到平面地图坐标系的投影因子。
838
- var ee = 0.00669342162296594323; // ee: 椭球的偏心率。
839
- var dLat = this.transformLat(lng - 105.0, lat - 35.0);
840
- var dLon = this.transformLon(lng - 105.0, lat - 35.0);
841
- var radLat = lat / 180.0 * this.PI;
842
- var magic = Math.sin(radLat);
843
- magic = 1 - ee * magic * magic;
844
- var sqrtMagic = Math.sqrt(magic);
845
- dLat = dLat * 180.0 / (a * (1 - ee) / (magic * sqrtMagic) * this.PI);
846
- dLon = dLon * 180.0 / (a / sqrtMagic * Math.cos(radLat) * this.PI);
847
- return { lat: dLat, lng: dLon };
848
- },
849
-
850
- // WGS-84 to GCJ-02
851
- gcjEncrypt: function gcjEncrypt(wgsLat, wgsLon) {
852
- if (this.outOfChina(wgsLat, wgsLon)) {
853
- return { lat: wgsLat, lng: wgsLon };
854
- }
855
-
856
- var d = this.delta(wgsLat, wgsLon);
857
- return { lat: wgsLat + d.lat, lng: wgsLon + d.lng };
858
- },
859
-
860
- // GCJ-02 to WGS-84
861
- gcjDecrypt: function gcjDecrypt(gcjLat, gcjLon) {
862
- if (this.outOfChina(gcjLat, gcjLon)) {
863
- return { lat: gcjLat, lng: gcjLon };
864
- }
865
-
866
- var d = this.delta(gcjLat, gcjLon);
867
- return { lat: gcjLat - d.lat, lng: gcjLon - d.lng };
868
- },
869
-
870
- // GCJ-02 to WGS-84 exactly
871
- gcjDecryptExact: function gcjDecryptExact(gcjLat, gcjLon) {
872
- var initDelta = 0.01;
873
- var threshold = 0.000000001;
874
- var dLat = initDelta;
875
- var dLon = initDelta;
876
- var mLat = gcjLat - dLat;
877
- var mLon = gcjLon - dLon;
878
- var pLat = gcjLat + dLat;
879
- var pLon = gcjLon + dLon;
880
- var wgsLat = void 0;
881
- var wgsLon = void 0;
882
- var i = 0;
883
- while (1) {
884
- wgsLat = (mLat + pLat) / 2;
885
- wgsLon = (mLon + pLon) / 2;
886
- var tmp = this.gcj_encrypt(wgsLat, wgsLon);
887
- dLat = tmp.lat - gcjLat;
888
- dLon = tmp.lng - gcjLon;
889
- if (Math.abs(dLat) < threshold && Math.abs(dLon) < threshold) {
890
- break;
891
- }
892
-
893
- if (dLat > 0) pLat = wgsLat;else mLat = wgsLat;
894
- if (dLon > 0) pLon = wgsLon;else mLon = wgsLon;
895
-
896
- if (++i > 10000) break;
897
- }
898
- // console.log(i);
899
- return { lat: wgsLat, lng: wgsLon };
900
- },
901
-
902
- // GCJ-02 to BD-09
903
- bdEncrypt: function bdEncrypt(gcjLat, gcjLon) {
904
- var x = gcjLon;
905
- var y = gcjLat;
906
- var z = Math.sqrt(x * x + y * y) + 0.00002 * Math.sin(y * this.XPI);
907
- var theta = Math.atan2(y, x) + 0.000003 * Math.cos(x * this.XPI);
908
- var bdLon = z * Math.cos(theta) + 0.0065;
909
- var bdLat = z * Math.sin(theta) + 0.006;
910
- return { lat: bdLat, lng: bdLon };
911
- },
912
-
913
- // BD-09 to GCJ-02
914
- bdDecrypt: function bdDecrypt(bdLat, bdLon) {
915
- var x = bdLon - 0.0065;
916
- var y = bdLat - 0.006;
917
- var z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * this.XPI);
918
- var theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * this.XPI);
919
- var gcjLon = z * Math.cos(theta);
920
- var gcjLat = z * Math.sin(theta);
921
- return { lat: gcjLat, lng: gcjLon };
922
- },
923
-
924
- // WGS-84 to Web mercator
925
- // mercatorLat -> y mercatorLon -> x
926
- mercatorEncrypt: function mercatorEncrypt(wgsLat, wgsLon) {
927
- var x = wgsLon * 20037508.34 / 180.0;
928
- var y = Math.log(Math.tan((90.0 + wgsLat) * this.PI / 360.0)) / (this.PI / 180.0);
929
- y = y * 20037508.34 / 180.0;
930
- return { lat: y, lng: x };
931
- },
932
-
933
- // Web mercator to WGS-84
934
- // mercatorLat -> y mercatorLon -> x
935
- mercatorDecrypt: function mercatorDecrypt(mercatorLat, mercatorLon) {
936
- var x = mercatorLon / 20037508.34 * 180.0;
937
- var y = mercatorLat / 20037508.34 * 180.0;
938
- y = 180 / this.PI * (2 * Math.atan(Math.exp(y * this.PI / 180.0)) - this.PI / 2);
939
- return { lat: y, lng: x };
940
- },
941
-
942
- // two point's distance
943
- distance: function distance(latA, lngA, latB, lngB) {
944
- var earthR = 6371000.0;
945
- var x = Math.cos(latA * this.PI / 180.0) * Math.cos(latB * this.PI / 180.0) * Math.cos((lngA - lngB) * this.PI / 180);
946
- var y = Math.sin(latA * this.PI / 180.0) * Math.sin(latB * this.PI / 180.0);
947
- var s = x + y;
948
- if (s > 1) s = 1;
949
- if (s < -1) s = -1;
950
- var alpha = Math.acos(s);
951
- var distance = alpha * earthR;
952
- return distance;
953
- },
954
- outOfChina: function outOfChina(lat, lng) {
955
- if (lng < 72.004 || lng > 137.8347) {
956
- return true;
957
- }
958
- if (lat < 0.8293 || lat > 55.8271) {
959
- return true;
960
- }
961
- return false;
962
- },
963
- transformLat: function transformLat(x, y) {
964
- var ret = -100.0 + 2.0 * x + 3.0 * y + 0.2 * y * y + 0.1 * x * y + 0.2 * Math.sqrt(Math.abs(x));
965
- ret += (20.0 * Math.sin(6.0 * x * this.PI) + 20.0 * Math.sin(2.0 * x * this.PI)) * 2.0 / 3.0;
966
- ret += (20.0 * Math.sin(y * this.PI) + 40.0 * Math.sin(y / 3.0 * this.PI)) * 2.0 / 3.0;
967
- ret += (160.0 * Math.sin(y / 12.0 * this.PI) + 320 * Math.sin(y * this.PI / 30.0)) * 2.0 / 3.0;
968
- return ret;
969
- },
970
- transformLon: function transformLon(x, y) {
971
- var ret = 300.0 + x + 2.0 * y + 0.1 * x * x + 0.1 * x * y + 0.1 * Math.sqrt(Math.abs(x));
972
- ret += (20.0 * Math.sin(6.0 * x * this.PI) + 20.0 * Math.sin(2.0 * x * this.PI)) * 2.0 / 3.0;
973
- ret += (20.0 * Math.sin(x * this.PI) + 40.0 * Math.sin(x / 3.0 * this.PI)) * 2.0 / 3.0;
974
- ret += (150.0 * Math.sin(x / 12.0 * this.PI) + 300.0 * Math.sin(x / 30.0 * this.PI)) * 2.0 / 3.0;
975
- return ret;
976
- }
977
- });
978
- // CONCATENATED MODULE: ./src/utils/DateUtils.js
979
- Date.prototype.format = function (fmt) {
980
- var o = {
981
- 'M+': this.getMonth() + 1, // 月份
982
- 'd+': this.getDate(), // 日
983
- 'h+': this.getHours(), // 小时
984
- 'm+': this.getMinutes(), // 分
985
- 's+': this.getSeconds(), // 秒
986
- 'q+': Math.floor((this.getMonth() + 3) / 3), // 季度
987
- S: this.getMilliseconds() // 毫秒
988
- };
989
- if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + '').substr(4 - RegExp.$1.length));
990
- for (var k in o) {
991
- if (new RegExp('(' + k + ')').test(fmt)) fmt = fmt.replace(RegExp.$1, RegExp.$1.length === 1 ? o[k] : ('00' + o[k]).substr(('' + o[k]).length));
992
- }
993
- return fmt;
994
- };
995
- /**
996
- * 实现的时间增减功能
997
- *
998
- * @param {*} interval 字符串表达式,表示要添加的时间间隔类型
999
- * @param {*} number 数值表达式,表示要添加的时间间隔的个数
1000
- */
1001
- Date.prototype.addDate = function (interval, number) {
1002
- var date = new Date(this);
1003
- switch (interval) {
1004
- case 'y':
1005
- date.setFullYear(this.getFullYear() + number);
1006
- break;
1007
- case 'q':
1008
- date.setMonth(this.getMonth() + number * 3);
1009
- break;
1010
- case 'M':
1011
- date.setMonth(this.getMonth() + number);
1012
- break;
1013
- case 'w':
1014
- date.setDate(this.getDate() + number * 7);
1015
- break;
1016
- case 'd':
1017
- date.setDate(this.getDate() + number);
1018
- break;
1019
- case 'h':
1020
- date.setHours(this.getHours() + number);
1021
- break;
1022
- case 'm':
1023
- date.setMinutes(this.getMinutes() + number);
1024
- break;
1025
- case 's':
1026
- date.setSeconds(this.getSeconds() + number);
1027
- break;
1028
- default:
1029
- date.setDate(this.getDate() + number);
1030
- break;
1031
- }
1032
- return date;
1033
- };
1034
- /* harmony default export */ var DateUtils = ({
1035
- lastMonthDate: new Date(new Date().getFullYear(), new Date().getMonth() - 1, 1),
1036
- thisMonthDate: new Date(new Date().getFullYear(), new Date().getMonth(), 1),
1037
- nextMonthDate: new Date(new Date().getFullYear(), new Date().getMonth() + 1, 1),
1038
- lastWeekDate: new Date(new Date().getFullYear(), new Date().getMonth(), new Date().getDate() + 1 - 7 - new Date().getDay()),
1039
- thisWeekDate: new Date(new Date().getFullYear(), new Date().getMonth(), new Date().getDate() + 1 - new Date().getDay()),
1040
- nextWeekDate: new Date(new Date().getFullYear(), new Date().getMonth(), new Date().getDate() + 1 + 7 - new Date().getDay()),
1041
- lastDayDate: new Date(new Date().getFullYear(), new Date().getMonth(), new Date().getDate() - 1),
1042
- thisDayDate: new Date(new Date().setHours(0, 0, 0, 0)),
1043
- nextDayDate: new Date(new Date().getFullYear(), new Date().getMonth(), new Date().getDate() + 1),
1044
- parseDate: function parseDate(str) {
1045
- if (typeof str == 'string') {
1046
- var results = str.match(/^ *(\d{4})-(\d{1,2})-(\d{1,2}) *$/);
1047
- if (results && results.length > 3) return new Date(parseInt(results[1]), parseInt(results[2]) - 1, parseInt(results[3]));
1048
- results = str.match(/^ *(\d{4})-(\d{1,2})-(\d{1,2}) +(\d{1,2}):(\d{1,2}):(\d{1,2}) *$/);
1049
- if (results && results.length > 6) return new Date(parseInt(results[1]), parseInt(results[2]) - 1, parseInt(results[3]), parseInt(results[4]), parseInt(results[5]), parseInt(results[6]));
1050
- results = str.match(/^ *(\d{4})-(\d{1,2})-(\d{1,2}) +(\d{1,2}):(\d{1,2}):(\d{1,2})\.(\d{1,9}) *$/);
1051
- if (results && results.length > 7) return new Date(parseInt(results[1]), parseInt(results[2]) - 1, parseInt(results[3]), parseInt(results[4]), parseInt(results[5]), parseInt(results[6]), parseInt(results[7]));
1052
- }
1053
- return null;
1054
- },
1055
-
1056
- /**
1057
- * 将时间间隔转换成中国话
1058
- *
1059
- * @param {*} startTime
1060
- * @param {*} endTime
1061
- * @returns {*}
1062
- */
1063
- formatDateInterval: function formatDateInterval(startTime, endTime) {
1064
- var dateCreateTime = new Date(startTime);
1065
- var dateFinishTime = new Date(endTime);
1066
- var dateInterval = dateFinishTime.getTime() - dateCreateTime.getTime();
1067
- var days = Math.floor(dateInterval / (24 * 3600 * 1000));
1068
- var leave1 = dateInterval % (24 * 3600 * 1000);
1069
- var hours = Math.floor(leave1 / (3600 * 1000));
1070
- var leave2 = leave1 % (3600 * 1000);
1071
- var minutes = Math.floor(leave2 / (60 * 1000));
1072
- var leave3 = leave2 % (60 * 1000);
1073
- var seconds = Math.round(leave3 / 1000);
1074
- var intervalDes = '';
1075
- if (days > 0) {
1076
- intervalDes += days + '天';
1077
- }
1078
- if (hours > 0) {
1079
- intervalDes += hours + '时';
1080
- }
1081
- if (minutes > 0) {
1082
- intervalDes += minutes + '分';
1083
- }
1084
- if (seconds > 0) {
1085
- intervalDes += seconds + '秒';
1086
- }
1087
- if (days === 0 && hours === 0 && minutes === 0 && seconds === 0) {
1088
- intervalDes = '少于1秒';
1089
- }
1090
- return intervalDes;
1091
- },
1092
- formatterCounter: function formatterCounter(times) {
1093
- var checked = function checked(j) {
1094
- return (j > 10 ? '' : '0') + (j || 0);
1095
- };
1096
- var houres = checked(Math.floor(times / 3600));
1097
- var level1 = times % 3600;
1098
- var minutes = checked(Math.floor(level1 / 60));
1099
- var leave2 = level1 % 60;
1100
- var seconds = checked(Math.round(leave2));
1101
- return houres + ':' + minutes + ':' + seconds;
1102
- },
1103
- sleep: function sleep(d) {
1104
- for (var t = Date.now(); Date.now() - t <= d;) {}
1105
- }
1106
- });
1107
- // CONCATENATED MODULE: ./src/utils/DomUtils.js
1108
- function trim(str) {
1109
- return str.trim ? str.trim() : str.replace(/^\s+|\s+$/g, '');
1110
- }
1111
- function splitWords(str) {
1112
- return trim(str).split(/\s+/);
1113
- }
1114
- /* harmony default export */ var DomUtils = ({
1115
- getStyle: function getStyle(el, style) {
1116
- var value = el.style[style] || el.currentStyle && el.currentStyle[style];
1117
-
1118
- if ((!value || value === 'auto') && document.defaultView) {
1119
- var css = document.defaultView.getComputedStyle(el, null);
1120
- value = css ? css[style] : null;
1121
- }
1122
- return value === 'auto' ? null : value;
1123
- },
1124
- create: function create(tagName, className, container) {
1125
- var el = document.createElement(tagName);
1126
- el.className = className || '';
1127
-
1128
- if (container) {
1129
- container.appendChild(el);
1130
- }
1131
- return el;
1132
- },
1133
- remove: function remove(el) {
1134
- var parent = el.parentNode;
1135
- if (parent) {
1136
- parent.removeChild(el);
1137
- }
1138
- },
1139
- empty: function empty(el) {
1140
- while (el.firstChild) {
1141
- el.removeChild(el.firstChild);
1142
- }
1143
- },
1144
- toFront: function toFront(el) {
1145
- var parent = el.parentNode;
1146
- if (parent && parent.lastChild !== el) {
1147
- parent.appendChild(el);
1148
- }
1149
- },
1150
- toBack: function toBack(el) {
1151
- var parent = el.parentNode;
1152
- if (parent && parent.firstChild !== el) {
1153
- parent.insertBefore(el, parent.firstChild);
1154
- }
1155
- },
1156
- getClass: function getClass(el) {
1157
- if (el.correspondingElement) {
1158
- el = el.correspondingElement;
1159
- }
1160
- return el.className.baseVal === undefined ? el.className : el.className.baseVal;
1161
- },
1162
- hasClass: function hasClass(el, name) {
1163
- if (el.classList !== undefined) {
1164
- return el.classList.contains(name);
1165
- }
1166
- var className = this.getClass(el);
1167
- return className.length > 0 && new RegExp('(^|\\s)' + name + '(\\s|$)').test(className);
1168
- },
1169
- addClass: function addClass(el, name) {
1170
- if (el.classList !== undefined) {
1171
- var classes = splitWords(name);
1172
- for (var i = 0, len = classes.length; i < len; i++) {
1173
- el.classList.add(classes[i]);
1174
- }
1175
- } else if (!this.hasClass(el, name)) {
1176
- var className = this.getClass(el);
1177
- this.setClass(el, (className ? className + ' ' : '') + name);
1178
- }
1179
- },
1180
- removeClass: function removeClass(el, name) {
1181
- if (el.classList !== undefined) {
1182
- var classes = splitWords(name);
1183
- classes.forEach(function (name) {
1184
- return el.classList.remove(name);
1185
- });
1186
- } else {
1187
- this.setClass(el, trim((' ' + this.getClass(el) + ' ').replace(' ' + name + ' ', ' ')));
1188
- }
1189
- },
1190
- setClass: function setClass(el, name) {
1191
- if (el.className.baseVal === undefined) {
1192
- el.className = name;
1193
- } else {
1194
- // in case of SVG element
1195
- el.className.baseVal = name;
1196
- }
1197
- },
1198
- parseFromString: function parseFromString(str) {
1199
- var parser = new DOMParser();
1200
- var doc = parser.parseFromString(str, 'text/xml');
1201
- return doc.children[0];
1202
- }
1203
- });
1204
- // CONCATENATED MODULE: ./src/utils/MathUtils.js
1205
- /* harmony default export */ var MathUtils = ({
1206
- DEG2RAD: Math.PI / 180,
1207
- RAD2DEG: 180 / Math.PI,
1208
- randInt: function randInt(low, high) {
1209
- return low + Math.floor(Math.random() * (high - low + 1));
1210
- },
1211
- randFloat: function randFloat(low, high) {
1212
- return low + Math.random() * (high - low);
1213
- },
1214
-
1215
- /**
1216
- * 角度转弧度
1217
- *
1218
- * @param {*} degrees
1219
- * @returns {*}
1220
- */
1221
- degreesToRadians: function degreesToRadians(degrees) {
1222
- return degrees * this.DEG2RAD;
1223
- },
1224
-
1225
- /**
1226
- * 角度转弧度
1227
- *
1228
- * @param {*} degrees
1229
- * @returns {*}
1230
- */
1231
- toRadians: function toRadians(degrees) {
1232
- return degrees * this.DEG2RAD;
1233
- },
1234
-
1235
- /**
1236
- * 弧度转角度
1237
- *
1238
- * @param {*} radians
1239
- * @returns {*}
1240
- */
1241
- radiansToDegrees: function radiansToDegrees(radians) {
1242
- return radians * this.RAD2DEG;
1243
- },
1244
-
1245
- /**
1246
- * 弧度转角度
1247
- *
1248
- * @param {*} radians
1249
- * @returns {*}
1250
- */
1251
- toDegrees: function toDegrees(radians) {
1252
- return radians * this.RAD2DEG;
1253
- },
1254
- formatFloat: function formatFloat(value) {
1255
- var n = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;
1256
-
1257
- return Math.round(value * Math.pow(10, n)) / Math.pow(10, n);
1258
- }
1259
- });
1260
- // CONCATENATED MODULE: ./src/utils/GeoUtils.js
1261
-
1262
- /* harmony default export */ var GeoUtils = ({
1263
- toRadian: Math.PI / 180,
1264
- R: 6371393,
1265
- /**
1266
- * 验证经纬度坐标
1267
- *
1268
- * @param {*} lng
1269
- * @param {*} lat
1270
- * @returns {*} {boolean}
1271
- */
1272
- isLnglat: function isLnglat(lng, lat) {
1273
- return !!(+lat > -90 && +lat < 90 && +lng > -180 && +lng < 180);
1274
- },
1275
-
1276
- /**
1277
- * 格式化经纬度(转度分秒)
1278
- *
1279
- * @param {*} lng
1280
- * @param {*} lat
1281
- * @returns {*}
1282
- */
1283
- formatLnglat: function formatLnglat(lng, lat) {
1284
- var res = '';
1285
- function format(value) {
1286
- var a = parseFloat(value);
1287
- var degree = parseInt(a);
1288
- var min = parseInt((a - degree) * 60);
1289
- var sec = (a - degree) * 3600 - min * 60;
1290
- return degree + '°' + min + '′' + sec.toFixed(2) + '″';
1291
- }
1292
- if (lng && lat) {
1293
- res = format(lng) + ',' + format(lat);
1294
- }
1295
- return res;
1296
- },
1297
-
1298
- /**
1299
- * 度分秒转十进制
1300
- *
1301
- * @param {*} lng
1302
- * @param {*} lat
1303
- * @returns {*}
1304
- */
1305
- transformLnglat: function transformLnglat(lng, lat) {
1306
- function dms2deg(s) {
1307
- var sw = /[sw]/i.test(s);
1308
- var f = sw ? -1 : 1;
1309
- var bits = s.match(/[\d.]+/g);
1310
- var result = 0;
1311
- for (var i = 0, iLen = bits.length; i < iLen; i++) {
1312
- result += bits[i] / f;
1313
- f *= 60;
1314
- }
1315
- return result;
1316
- }
1317
- if (lng && lat) {
1318
- return {
1319
- lng: dms2deg(lng),
1320
- lat: dms2deg(lat)
1321
- };
1322
- }
1323
- },
1324
-
1325
- /**
1326
- * 判断点是否在多边形内
1327
- *
1328
- * @param {*} p
1329
- * @param {*} poly
1330
- * @returns {*}
1331
- */
1332
- rayCasting: function rayCasting(p, poly) {
1333
- var px = p.x,
1334
- py = p.y,
1335
- flag = false;
1336
- for (var i = 0, l = poly.length, j = l - 1; i < l; j = i, i++) {
1337
- var sx = poly[i].x,
1338
- sy = poly[i].y,
1339
- tx = poly[j].x,
1340
- ty = poly[j].y;
1341
- // 点与多边形顶点重合
1342
- if (sx === px && sy === py || tx === px && ty === py) {
1343
- return 'on';
1344
- }
1345
- // 判断线段两端点是否在射线两侧
1346
- if (sy < py && ty >= py || sy >= py && ty < py) {
1347
- // 线段上与射线 Y 坐标相同的点的 X 坐标
1348
- var x = sx + (py - sy) * (tx - sx) / (ty - sy);
1349
- // 点在多边形的边上
1350
- if (x === px) {
1351
- return 'on';
1352
- }
1353
- // 射线穿过多边形的边界
1354
- if (x > px) {
1355
- flag = !flag;
1356
- }
1357
- }
1358
- }
1359
- // 射线穿过多边形边界的次数为奇数时点在多边形内
1360
- return flag ? 'in' : 'out';
1361
- },
1362
-
1363
- /**
1364
- * 计算两点距离
1365
- *
1366
- * @param {*} fromPoint
1367
- * @param {*} toPoint
1368
- * @returns {*}
1369
- */
1370
- wgs84PointsDistance: function wgs84PointsDistance(fromPoint, toPoint) {
1371
- var PI = Math.PI;
1372
- function getRad(d) {
1373
- return d * PI / 180.0;
1374
- }
1375
- if (arguments.length != 2) {
1376
- return 0;
1377
- }
1378
- lon1 = fromPoint.x;
1379
- lat1 = fromPoint.y;
1380
- lon2 = toPoint.x;
1381
- lat2 = toPoint.y;
1382
- var a = 6378137,
1383
- b = 6356752.3142,
1384
- f = 1 / 298.257223563;
1385
- var L = getRad(lon2 - lon1);
1386
- var U1 = Math.atan((1 - f) * Math.tan(getRad(lat1)));
1387
- var U2 = Math.atan((1 - f) * Math.tan(getRad(lat2)));
1388
- var sinU1 = Math.sin(U1),
1389
- cosU1 = Math.cos(U1);
1390
- var sinU2 = Math.sin(U2),
1391
- cosU2 = Math.cos(U2);
1392
- var lambda = L,
1393
- lambdaP,
1394
- iterLimit = 100;
1395
- do {
1396
- var sinLambda = Math.sin(lambda),
1397
- cosLambda = Math.cos(lambda);
1398
- var sinSigma = Math.sqrt(cosU2 * sinLambda * (cosU2 * sinLambda) + (cosU1 * sinU2 - sinU1 * cosU2 * cosLambda) * (cosU1 * sinU2 - sinU1 * cosU2 * cosLambda));
1399
- if (sinSigma == 0) return 0;
1400
- var cosSigma = sinU1 * sinU2 + cosU1 * cosU2 * cosLambda;
1401
- var sigma = Math.atan2(sinSigma, cosSigma);
1402
- var sinAlpha = cosU1 * cosU2 * sinLambda / sinSigma;
1403
- var cosSqAlpha = 1 - sinAlpha * sinAlpha;
1404
- var cos2SigmaM = cosSigma - 2 * sinU1 * sinU2 / cosSqAlpha;
1405
- if (isNaN(cos2SigmaM)) cos2SigmaM = 0;
1406
- var C = f / 16 * cosSqAlpha * (4 + f * (4 - 3 * cosSqAlpha));
1407
- lambdaP = lambda;
1408
- lambda = L + (1 - C) * f * sinAlpha * (sigma + C * sinSigma * (cos2SigmaM + C * cosSigma * (-1 + 2 * cos2SigmaM * cos2SigmaM)));
1409
- } while (Math.abs(lambda - lambdaP) > 1e-12 && --iterLimit > 0);
1410
- if (iterLimit == 0) {
1411
- return NaN;
1412
- }
1413
- var uSq = cosSqAlpha * (a * a - b * b) / (b * b);
1414
- var A = 1 + uSq / 16384 * (4096 + uSq * (-768 + uSq * (320 - 175 * uSq)));
1415
- var B = uSq / 1024 * (256 + uSq * (-128 + uSq * (74 - 47 * uSq)));
1416
- var deltaSigma = B * sinSigma * (cos2SigmaM + B / 4 * (cosSigma * (-1 + 2 * cos2SigmaM * cos2SigmaM) - B / 6 * cos2SigmaM * (-3 + 4 * sinSigma * sinSigma) * (-3 + 4 * cos2SigmaM * cos2SigmaM)));
1417
- var s = b * A * (sigma - deltaSigma);
1418
- var fwdAz = Math.atan2(cosU2 * sinLambda, cosU1 * sinU2 - sinU1 * cosU2 * cosLambda);
1419
- var revAz = Math.atan2(cosU1 * sinLambda, -sinU1 * cosU2 + cosU1 * sinU2 * cosLambda);
1420
- return s;
1421
- },
1422
-
1423
- /**
1424
- * P1绕一个坐标点P2旋转θ角度后,新的坐标的计算公式
1425
- *
1426
- * @param {*} p1
1427
- * @param {*} p2
1428
- * @param {*} θ 旋转角度,正:表示顺时针,负:表示逆时针
1429
- */
1430
- rotatePoint: function rotatePoint(p1, p2, θ) {
1431
- var x = (p1.x - p2.x) * Math.cos(Math.PI / 180 * -θ) - (p1.y - p2.y) * Math.sin(Math.PI / 180 * -θ) + p2.x;
1432
- var y = (p1.x - p2.x) * Math.sin(Math.PI / 180 * -θ) + (p1.y - p2.y) * Math.cos(Math.PI / 180 * -θ) + p2.y;
1433
- return { x: x, y: y };
1434
- },
1435
-
1436
- /**
1437
- * 计算latlng2相对于latlng1的方位角和距离
1438
- *
1439
- * @param {*} latlng1
1440
- * @param {*} latlng2
1441
- * @returns {*} {boolean}
1442
- */
1443
- calcBearAndDisByPoints: function calcBearAndDisByPoints(latlng1, latlng2) {
1444
- var f1 = parseFloat(latlng1.lat),
1445
- l1 = parseFloat(latlng1.lng),
1446
- f2 = parseFloat(latlng2.lat),
1447
- l2 = parseFloat(latlng2.lng);
1448
- var y = Math.sin((l2 - l1) * this.toRadian) * Math.cos(f2 * this.toRadian);
1449
- var x = Math.cos(f1 * this.toRadian) * Math.sin(f2 * this.toRadian) - Math.sin(f1 * this.toRadian) * Math.cos(f2 * this.toRadian) * Math.cos((l2 - l1) * this.toRadian);
1450
- var angle = Math.atan2(y, x) * (180 / Math.PI);
1451
- var deltaF = (f2 - f1) * this.toRadian;
1452
- var deltaL = (l2 - l1) * this.toRadian;
1453
- var a = Math.sin(deltaF / 2) * Math.sin(deltaF / 2) + Math.cos(f1 * this.toRadian) * Math.cos(f2 * this.toRadian) * Math.sin(deltaL / 2) * Math.sin(deltaL / 2);
1454
- var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
1455
- var distance = this.R * c;
1456
- return {
1457
- angle: angle,
1458
- distance: distance
1459
- };
1460
- },
1461
-
1462
- /**
1463
- * 根据方位角和距离生成新的坐标
1464
- *
1465
- * @param {*} latlng
1466
- * @param {*} angle
1467
- * @param {*} distance
1468
- * @returns {*}
1469
- */
1470
- calcPointByBearAndDis: function calcPointByBearAndDis(latlng, angle, distance) {
1471
- var sLat = MathUtils.toRadians(parseFloat(latlng.lat));
1472
- var sLng = MathUtils.toRadians(parseFloat(latlng.lng));
1473
- angle = parseFloat(angle);
1474
- distance = parseFloat(distance);
1475
- var d = distance / this.R;
1476
- angle = MathUtils.toRadians(angle);
1477
- var lat = Math.asin(Math.sin(sLat) * Math.cos(d) + Math.cos(sLat) * Math.sin(d) * Math.cos(angle));
1478
- var lon = sLng + Math.atan2(Math.sin(angle) * Math.sin(d) * Math.cos(sLat), Math.cos(d) - Math.sin(sLat) * Math.sin(lat));
1479
- return {
1480
- lat: MathUtils.toDegrees(lat),
1481
- lng: MathUtils.toDegrees(lon)
1482
- };
1483
- },
1484
- mercatorTolonlat: function mercatorTolonlat(x, y) {
1485
- var lng = x / 20037508.34 * 180;
1486
- var mmy = y / 20037508.34 * 180;
1487
- var lat = 180 / Math.PI * (2 * Math.atan(Math.exp(mmy * Math.PI / 180)) - Math.PI / 2);
1488
- return { lng: lng, lat: lat };
1489
- },
1490
- lonlatToMercator: function lonlatToMercator(lng, lat) {
1491
- var earthRad = 6378137.0;
1492
- var x = lng * Math.PI / 180 * earthRad;
1493
- var a = lat * Math.PI / 180;
1494
- var y = earthRad / 2 * Math.log((1.0 + Math.sin(a)) / (1.0 - Math.sin(a)));
1495
- return { x: x, y: y };
1496
- }
1497
- });
1498
- // CONCATENATED MODULE: ./src/utils/FileUtils.js
1499
- var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
1500
-
1501
- /* harmony default export */ var FileUtils = ({
1502
- /**
1503
- * 将base64类型编码的图片转换成blob类型
1504
- *
1505
- * @param {*} data
1506
- * @returns {*}
1507
- */
1508
- convertBase64ToBlob: function convertBase64ToBlob(data) {
1509
- var mimeString = data.split(',')[0].split(':')[1].split(';')[0];
1510
- var byteString = window.atob(data.split(',')[1]);
1511
- var ab = new ArrayBuffer(byteString.length);
1512
- var ia = new Uint8Array(ab);
1513
-
1514
- for (var i = 0; i < byteString.length; i++) {
1515
- ia[i] = byteString.charCodeAt(i);
1516
- }
1517
- var bb = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder;
1518
-
1519
- if (bb) {
1520
- bb = new (window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder)();
1521
- bb.append(ab);
1522
- return bb.getBlob(mimeString);
1523
- } else {
1524
- bb = new Blob([ab], {
1525
- type: mimeString
1526
- });
1527
- return bb;
1528
- }
1529
- },
1530
-
1531
- /**
1532
- * 将url图片转换成base64编码的图片,也可用于图片压缩
1533
- *
1534
- * @param {*} url 需要转换的图片url
1535
- * @param {*} width 指定宽高,如未指定则使用默认宽度
1536
- * @param {*} height
1537
- * @returns {*}
1538
- */
1539
- convertUrlToBase64: function convertUrlToBase64(url, width, height) {
1540
- return new Promise(function (resolve, reject) {
1541
- var img = new Image();
1542
- img.crossOrigin = 'Anonymous';
1543
- img.src = url;
1544
- img.onload = function () {
1545
- var canvas = document.createElement('canvas');
1546
- canvas.width = width || img.width;
1547
- canvas.height = height || img.height;
1548
- var ctx = canvas.getContext('2d');
1549
- ctx.drawImage(img, 0, 0, img.width, img.height);
1550
- var ext = img.src.substring(img.src.lastIndexOf('.') + 1).toLowerCase();
1551
- var dataURL = canvas.toDataURL('image/' + ext);
1552
- var base64 = {
1553
- dataURL: dataURL,
1554
- type: 'image/' + ext,
1555
- ext: ext
1556
- };
1557
- resolve(base64);
1558
- };
1559
- });
1560
- },
1561
-
1562
- /**
1563
- * 将base64类型编码的图片转换成file类型
1564
- *
1565
- * @param {*} dataurl
1566
- * @param {*} filename
1567
- * @returns {*}
1568
- */
1569
- convertBase64ToFile: function convertBase64ToFile(dataurl, filename) {
1570
- var arr = dataurl.split(','),
1571
- mime = arr[0].match(/:(.*?);/)[1],
1572
- bstr = atob(arr[1]),
1573
- n = bstr.length,
1574
- u8arr = new Uint8Array(n);
1575
- while (n--) {
1576
- u8arr[n] = bstr.charCodeAt(n);
1577
- }
1578
- var file = new File([u8arr], filename, { type: mime });
1579
- return file;
1580
- },
1581
-
1582
- /**
1583
- * 直接下载文件,支持blob类型和url类型
1584
- *
1585
- * @param {*} data
1586
- * @param {*} saveName
1587
- */
1588
- downloadFromFile: function downloadFromFile(data, saveName) {
1589
- var url = void 0;
1590
- if ((typeof data === 'undefined' ? 'undefined' : _typeof(data)) == 'object') {
1591
- if (data instanceof Blob) {
1592
- url = URL.createObjectURL(data); // 创建blob地址
1593
- } else {
1594
- var str = JSON.stringify(data);
1595
- var blob = new Blob([str], { type: 'text/json' }); // json对象
1596
- url = window.URL.createObjectURL(blob);
1597
- }
1598
- } else if (typeof data == 'string') {
1599
- var _blob = new Blob([data], { type: 'text/json' }); //json文本
1600
- url = window.URL.createObjectURL(_blob);
1601
- }
1602
- var link = document.createElement('a');
1603
- link.href = url;
1604
- link.download = saveName || ''; // HTML5新增的属性,指定保存文件名,可以不要后缀,注意,file:///模式下不会生效
1605
- link.click();
1606
- window.URL.revokeObjectURL(link.href);
1607
- }
1608
- });
1609
- // CONCATENATED MODULE: ./src/utils/OptimizeUtils.js
1610
- /* harmony default export */ var OptimizeUtils = ({
1611
- /**
1612
- * @desc 在事件被触发n秒后再执行回调函数,如果在这n秒内又被触发,则重新计时
1613
- * @desc 防止onresize,scroll,mousemove ,mousehover等,会被频繁触发影响性能
1614
- * @param func 需要执行的函数
1615
- * @param wait 延迟执行时间(毫秒)
1616
- * @param immediate---true 表立即执行,false 表非立即执行
1617
- * eg: window.addEventListener("resize",debounce(handle,1000));
1618
- * @returns {*}
1619
- */
1620
- debounce: function debounce(func, wait) {
1621
- var immediate = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
1622
-
1623
- var timeout = void 0,
1624
- args = void 0,
1625
- context = void 0,
1626
- timestamp = void 0,
1627
- result = void 0;
1628
-
1629
- var later = function later() {
1630
- // 据上一次触发时间间隔
1631
- var last = +new Date() - timestamp;
1632
-
1633
- // 上次被包装函数被调用时间间隔last小于设定时间间隔wait
1634
- if (last < wait && last > 0) {
1635
- timeout = setTimeout(later, wait - last);
1636
- } else {
1637
- timeout = null;
1638
- // 如果设定为immediate===true,因为开始边界已经调用过了此处无需调用
1639
- if (!immediate) {
1640
- result = func.apply(context, args);
1641
- if (!timeout) context = args = null;
1642
- }
1643
- }
1644
- };
1645
-
1646
- return function () {
1647
- for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
1648
- args[_key] = arguments[_key];
1649
- }
1650
-
1651
- context = this;
1652
- timestamp = +new Date();
1653
- var callNow = immediate && !timeout;
1654
- // 如果延时不存在,重新设定延时
1655
- if (!timeout) timeout = setTimeout(later, wait);
1656
- if (callNow) {
1657
- result = func.apply(context, args);
1658
- context = args = null;
1659
- }
1660
-
1661
- return result;
1662
- };
1663
- },
1664
-
1665
- /**
1666
- * 规定一个单位时间,在这个单位时间内,只能有一次触发事件的回调函数执行,如果在同一个单位时间内某事件被触发多次,只有一次能生效
1667
- *
1668
- * @param {*} func
1669
- * @param {*} wait
1670
- * @param {*} type 1 表时间戳版,2 表定时器版
1671
- * @returns {*}
1672
- */
1673
- throttle: function throttle(func, wait, type) {
1674
- if (type === 1) {
1675
- var previous = 0;
1676
- } else if (type === 2) {
1677
- var timeout;
1678
- }
1679
- return function () {
1680
- var context = this;
1681
- var args = arguments;
1682
- if (type === 1) {
1683
- var now = Date.now();
1684
- if (now - previous > wait) {
1685
- func.apply(context, args);
1686
- previous = now;
1687
- }
1688
- } else if (type === 2) {
1689
- if (!timeout) {
1690
- timeout = setTimeout(function () {
1691
- timeout = null;
1692
- func.apply(context, args);
1693
- }, wait);
1694
- }
1695
- }
1696
- };
1697
- },
1698
-
1699
- /**
1700
- * 延时递归
1701
- *
1702
- * @param {Number} frequency 间隔时间ms
1703
- * @param {Number} duration 持续时间ms
1704
- */
1705
- recurve: function recurve(fun) {
1706
- var frequency = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 500;
1707
- var duration = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 5000;
1708
-
1709
- var timer = 0;
1710
- setTimeout(function fn() {
1711
- timer++;
1712
- if (timer < Math.floor(duration / frequency)) {
1713
- fun.call(this);
1714
- setTimeout(fn, frequency);
1715
- }
1716
- });
1717
- }
1718
- });
1719
- // CONCATENATED MODULE: ./src/utils/StringUtils.js
1720
-
1721
- /* harmony default export */ var StringUtils = ({
1722
- /**
1723
- * 常用正则验证
1724
- *
1725
- * @param {*} str
1726
- * @param {*} type
1727
- * @returns {*}
1728
- */
1729
- checkStr: function checkStr(str, type) {
1730
- switch (type) {
1731
- case 'phone':
1732
- // 手机号码
1733
- return (/^1[3|4|5|6|7|8|9][0-9]{9}$/.test(str)
1734
- );
1735
- case 'tel':
1736
- // 座机
1737
- return (/^(0\d{2,3}-\d{7,8})(-\d{1,4})?$/.test(str)
1738
- );
1739
- case 'card':
1740
- // 身份证
1741
- return (/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(str)
1742
- );
1743
- case 'pwd':
1744
- // 密码以字母开头,长度在6~18之间,只能包含字母、数字和下划线
1745
- return (/^[a-zA-Z]\w{5,17}$/.test(str)
1746
- );
1747
- case 'postal':
1748
- // 邮政编码
1749
- return (/[1-9]\d{5}(?!\d)/.test(str)
1750
- );
1751
- case 'QQ':
1752
- // QQ号
1753
- return (/^[1-9][0-9]{4,9}$/.test(str)
1754
- );
1755
- case 'email':
1756
- // 邮箱
1757
- return (/^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/.test(str)
1758
- );
1759
- case 'money':
1760
- // 金额(小数点2位)
1761
- return (/^\d*(?:\.\d{0,2})?$/.test(str)
1762
- );
1763
- case 'URL':
1764
- // 网址
1765
- return (/(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?/.test(str)
1766
- );
1767
- case 'IP':
1768
- // IP
1769
- return (/((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d))/.test(str)
1770
- );
1771
- case 'date':
1772
- // 日期时间
1773
- return (/^(\d{4})\-(\d{2})\-(\d{2}) (\d{2})(?:\:\d{2}|:(\d{2}):(\d{2}))$/.test(str) || /^(\d{4})\-(\d{2})\-(\d{2})$/.test(str)
1774
- );
1775
- case 'number':
1776
- // 数字
1777
- return (/^[0-9]$/.test(str)
1778
- );
1779
- case 'english':
1780
- // 英文
1781
- return (/^[a-zA-Z]+$/.test(str)
1782
- );
1783
- case 'chinese':
1784
- // 中文
1785
- return (/^[\u4E00-\u9FA5]+$/.test(str)
1786
- );
1787
- case 'lower':
1788
- // 小写
1789
- return (/^[a-z]+$/.test(str)
1790
- );
1791
- case 'upper':
1792
- // 大写
1793
- return (/^[A-Z]+$/.test(str)
1794
- );
1795
- case 'HTML':
1796
- // HTML标记
1797
- return (/<("[^"]*"|'[^']*'|[^'">])*>/.test(str)
1798
- );
1799
- default:
1800
- return true;
1801
- }
1802
- },
1803
-
1804
- /**
1805
- * 字符串大小写转换 type: 1:首字母大写 2:首页母小写 3:大小写转换 4:全部大写 5:全部小写
1806
- *
1807
- * @param {*} str
1808
- * @param {*} type
1809
- * @returns {*}
1810
- */
1811
- changeCase: function changeCase(str, type) {
1812
- type = type || 4;
1813
- switch (type) {
1814
- case 1:
1815
- return str.replace(/\b\w+\b/g, function (word) {
1816
- return word.substring(0, 1).toUpperCase() + word.substring(1).toLowerCase();
1817
- });
1818
- case 2:
1819
- return str.replace(/\b\w+\b/g, function (word) {
1820
- return word.substring(0, 1).toLowerCase() + word.substring(1).toUpperCase();
1821
- });
1822
- case 3:
1823
- return str.split('').map(function (word) {
1824
- if (/[a-z]/.test(word)) {
1825
- return word.toUpperCase();
1826
- } else {
1827
- return word.toLowerCase();
1828
- }
1829
- }).join('');
1830
- case 4:
1831
- return str.toUpperCase();
1832
- case 5:
1833
- return str.toLowerCase();
1834
- default:
1835
- return str;
1836
- }
1837
- },
1838
-
1839
- /**
1840
- * 处理字符串模板
1841
- * eg: tag`${abc}`
1842
- * @param {*} strArray
1843
- * @param {*} args
1844
- * @returns {*}
1845
- */
1846
- tag: function tag(strArray) {
1847
- for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
1848
- args[_key - 1] = arguments[_key];
1849
- }
1850
-
1851
- args = args.map(function (val) {
1852
- switch (CommUtils.getDataType(val)) {
1853
- case 'Object':
1854
- return val || '{}';
1855
- case 'Array':
1856
- return val || '[]';
1857
- default:
1858
- return val || '';
1859
- }
1860
- });
1861
- return strArray.reduce(function (prev, next, index) {
1862
- return '' + prev + args[index - 1] + next;
1863
- });
1864
- },
1865
-
1866
- /**
1867
- * 获取字符串字节长度
1868
- * @param {*} str
1869
- * @returns {*}
1870
- */
1871
- getByteLength: function getByteLength(str) {
1872
- return str.replace(/[\u0391-\uFFE5]/g, 'aa').length;
1873
- },
1874
-
1875
- /**
1876
- * 根据字节长度截取字符串
1877
- * @param {*} str
1878
- * @param {*} n
1879
- * @returns {*}
1880
- */
1881
- subStringByte: function subStringByte(str, start, n) {
1882
- var r = /[^\x00-\xff]/g;
1883
- if (str.replace(r, 'mm').length <= n) {
1884
- return str;
1885
- }
1886
- var m = Math.floor(n / 2);
1887
- for (var i = m; i < str.length; i++) {
1888
- var sub = str.substring(start, i);
1889
- if (sub.replace(r, 'mm').length >= n) {
1890
- return sub;
1891
- }
1892
- }
1893
- return str;
1894
- },
1895
- asString: function asString(value) {
1896
- if (CommUtils.isEmpty(value)) {
1897
- return '';
1898
- } else {
1899
- switch (CommUtils.getDataType()) {
1900
- case 'Object':
1901
- case 'Array':
1902
- return JSON.stringify(value);
1903
- default:
1904
- return value;
1905
- }
1906
- }
1907
- }
1908
- });
1909
- // CONCATENATED MODULE: ./src/utils/AssertUtils.js
1910
-
1911
-
1912
-
1913
-
1914
- /* harmony default export */ var AssertUtils = ({
1915
- notNull: function notNull(data) {
1916
- if (CommUtils.isEmpty()) {
1917
- throw Error('不能为空:>>>' + data);
1918
- }
1919
- },
1920
- legalLnglat: function legalLnglat(lng, lat) {
1921
- if (!GeoUtils.isLnglat(lng, lat)) {
1922
- throw Error(ErrorTypeConstant.COORDINATE_ERROR);
1923
- }
1924
- },
1925
-
1926
- verify: {
1927
- array: function array(data) {
1928
- if (CommUtils.getDataType(data) !== 'Array') {
1929
- throw Error(ErrorTypeConstant.PARAMETER_ERROR_ARRAY + ':>>>' + data);
1930
- }
1931
- },
1932
- function: function _function(data) {
1933
- if (CommUtils.getDataType(data) !== 'Function') {
1934
- throw Error(ErrorTypeConstant.PARAMETER_ERROR_FUNCTION + ':>>>' + data);
1935
- }
1936
- },
1937
- object: function object(data) {
1938
- if (CommUtils.getDataType(data) !== 'Object') {
1939
- throw Error(ErrorTypeConstant.PARAMETER_ERROR_OBJECT + ':>>>' + data);
1940
- }
1941
- }
1942
- },
1943
- legalJSON: function legalJSON(data) {
1944
- try {
1945
- JSON.parse(data);
1946
- } catch (err) {
1947
- throw Error(ErrorTypeConstant.JSON_PARSE_ERROR + ':>>>' + data);
1948
- }
1949
- },
1950
- legalData: function legalData(data, type) {
1951
- var bool = StringUtils.checkStr(data, type);
1952
- var typename = '';
1953
- switch (type) {
1954
- case 'phone':
1955
- typename = '电话';
1956
- break;
1957
- case 'tel':
1958
- typename = '座机';
1959
- break;
1960
- case 'card':
1961
- typename = '身份证';
1962
- break;
1963
- case 'pwd':
1964
- typename = '密码';
1965
- break;
1966
- case 'postal':
1967
- typename = '邮政编码';
1968
- break;
1969
- case 'QQ':
1970
- typename = 'QQ';
1971
- break;
1972
- case 'email':
1973
- typename = '邮箱';
1974
- break;
1975
- case 'money':
1976
- typename = '金额';
1977
- break;
1978
- case 'URL':
1979
- typename = '网址';
1980
- break;
1981
- case 'IP':
1982
- typename = 'IP';
1983
- break;
1984
- case 'date':
1985
- typename = '日期时间';
1986
- break;
1987
- case 'number':
1988
- typename = '数字';
1989
- break;
1990
- case 'english':
1991
- typename = '英文';
1992
- break;
1993
- case 'chinese':
1994
- typename = '中文';
1995
- break;
1996
- case 'lower':
1997
- typename = '小写';
1998
- break;
1999
- case 'upper':
2000
- typename = '大写';
2001
- break;
2002
- case 'HTML':
2003
- typename = 'HTML标记';
2004
- break;
2005
- default:
2006
- break;
2007
- }
2008
- if (!bool) {
2009
- throw Error(ErrorTypeConstant.PARAMETER_ERROR + ':>>>不是' + typename);
2010
- }
2011
- }
2012
- });
2013
- // CONCATENATED MODULE: ./src/utils/index.js
2014
-
2015
-
2016
-
2017
-
2018
-
2019
-
2020
-
2021
-
2022
-
2023
-
2024
-
2025
-
2026
-
2027
-
2028
- // CONCATENATED MODULE: ./src/core/AudioPlayer.js
2029
- var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
2030
-
2031
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
2032
-
2033
- /**
2034
- * @description 声音播放类
2035
- * @export
2036
- * @class AudioPlayer
2037
- */
2038
- var AudioPlayer = function () {
2039
- /**
2040
- * Creates an instance of AudioPlayer.
2041
- * @param {*} url
2042
- */
2043
- function AudioPlayer(url) {
2044
- _classCallCheck(this, AudioPlayer);
2045
-
2046
- this.audio = new Audio();
2047
- this.audio.src = url;
2048
- }
2049
-
2050
- _createClass(AudioPlayer, [{
2051
- key: "play",
2052
- value: function play() {
2053
- !this.muted && this.audio.play();
2054
- }
2055
- }, {
2056
- key: "pause",
2057
- value: function pause() {
2058
- this.audio.pause();
2059
- }
2060
- }, {
2061
- key: "muted",
2062
- get: function get() {
2063
- return this.audio.muted;
2064
- }
2065
- /**
2066
- * @description 设置静音状态,如果静音,autoplay属性将失效
2067
- */
2068
- ,
2069
- set: function set(val) {
2070
- this.audio.muted = val;
2071
- }
2072
- }]);
2073
-
2074
- return AudioPlayer;
2075
- }();
2076
-
2077
- /* harmony default export */ var core_AudioPlayer = (AudioPlayer);
2078
- // CONCATENATED MODULE: ./src/core/CanvasDrawer.js
2079
- var CanvasDrawer_createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
2080
-
2081
- function CanvasDrawer_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
2082
-
2083
-
2084
-
2085
-
2086
- var CanvasDrawer_CanvasDrawer = function () {
2087
- function CanvasDrawer(el) {
2088
- CanvasDrawer_classCallCheck(this, CanvasDrawer);
2089
-
2090
- if (CommUtils.getDataType(el) === 'String') {
2091
- el = document.querySelector('#' + el);
2092
- }
2093
- this.ctx = el.getContext('2d');
2094
- }
2095
-
2096
- CanvasDrawer_createClass(CanvasDrawer, [{
2097
- key: 'drawLine',
2098
- value: function drawLine(startX, startY, endX, endY) {
2099
- var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};
2100
-
2101
- this.cxt.beginPath();
2102
- var width = options.width || 1;
2103
- var color = options.color || '#000';
2104
- this.cxt.lineWidth = width;
2105
- this.cxt.fillStyle = color; // 经过测试不管是fillStyle还是StrokeStyle都是一样的
2106
- this.cxt.moveTo(startX, startY);
2107
- this.cxt.lineTo(endX, endY);
2108
- this.cxt.closePath();
2109
- this.cxt.fill();
2110
- }
2111
- /**
2112
- * 绘制圆弧
2113
- * @param {*} x 圆心X坐标
2114
- * @param {*} y 圆心Y坐标
2115
- * @param {*} radius 半径
2116
- * @param {*} startAngle 开始的弧度
2117
- * @param {*} endAngle 结束的弧度
2118
- * @param {*} anticlockwise true为逆时针,false为顺时针
2119
- * @param {boolean} isOnlyArc
2120
- * @param {boolean} isFill 是否是填充,false为绘制边框,true为绘制填充
2121
- * @param {*} bgColor 圆弧的颜色
2122
- * @memberof CanvasDrawer
2123
- */
2124
-
2125
- }, {
2126
- key: 'drawArc',
2127
- value: function drawArc(x, y, radius, startAngle, endAngle, anticlockwise, isFill, bgColor) {
2128
- if (isFill) {
2129
- //为true绘制填充圆弧
2130
- this.cxt.fillStyle = bgColor;
2131
- this.cxt.beginPath();
2132
- this.cxt.arc(x, y, radius, MathUtils.degreesToRadians(startAngle), MathUtils.degreesToRadians(endAngle), anticlockwise);
2133
- this.cxt.closePath();
2134
- this.cxt.fill();
2135
- } else {
2136
- //为false绘制边框圆弧
2137
- this.cxt.strokeStyle = bgColor;
2138
- this.cxt.beginPath();
2139
- this.cxt.arc(x, y, radius, MathUtils.degreesToRadians(startAngle), MathUtils.degreesToRadians(endAngle), anticlockwise);
2140
-
2141
- this.cxt.stroke();
2142
- }
2143
- }
2144
- }]);
2145
-
2146
- return CanvasDrawer;
2147
- }();
2148
-
2149
- /* harmony default export */ var core_CanvasDrawer = (CanvasDrawer_CanvasDrawer);
2150
- // CONCATENATED MODULE: ./src/core/ElQuery.js
2151
- var ElQuery_typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
2152
-
2153
- var ElQuery_createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
2154
-
2155
- function ElQuery_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
2156
-
2157
- var ElQuery = function () {
2158
- function ElQuery(selector) {
2159
- var el = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : document;
2160
-
2161
- ElQuery_classCallCheck(this, ElQuery);
2162
-
2163
- if (typeof selector == 'string') {
2164
- if (selector.charAt(0) == '<' && selector.slice(-1) == '>') {
2165
- var ele = selector.slice(1, -1);
2166
- this[0] = document.createElement(ele);
2167
- this.length = 1;
2168
- } else {
2169
- var all = el.querySelectorAll(selector);
2170
- for (var i = 0; i < all.length; i++) {
2171
- this[i] = all[i];
2172
- }
2173
- this.length = all.length;
2174
- }
2175
- } else if (typeof selector == 'undefined') {
2176
- return this;
2177
- } else if (typeof selector == 'function') {
2178
- this.ready(selector);
2179
- } else if (selector.nodeType == 1) {
2180
- this[0] = selector;
2181
- this.length = 1;
2182
- }
2183
- }
2184
-
2185
- ElQuery_createClass(ElQuery, [{
2186
- key: 'each',
2187
- value: function each(callback) {
2188
- for (var i = 0; i < this.length; i++) {
2189
- callback(this[i], i);
2190
- }
2191
- }
2192
- }, {
2193
- key: 'html',
2194
- value: function html(val) {
2195
- this.each(function (obj) {
2196
- obj.innerHTML = val;
2197
- });
2198
- return this;
2199
- }
2200
- }, {
2201
- key: 'css',
2202
- value: function css(attr, val) {
2203
- this.each(function (obj) {
2204
- if ((typeof attr === 'undefined' ? 'undefined' : ElQuery_typeof(attr)) == 'object') {
2205
- for (var i in attr) {
2206
- if (i == 'width' || i == 'height' || i == 'margin' || i == 'fontSize') {
2207
- obj.style[i] = parseInt(attr[i]) + 'px';
2208
- }
2209
- obj.style[i] = attr[i];
2210
- }
2211
- } else {
2212
- obj.style[attr] = val;
2213
- }
2214
- });
2215
- return this;
2216
- }
2217
- }, {
2218
- key: 'ready',
2219
- value: function ready(callback) {
2220
- var _this = this;
2221
-
2222
- document.addEventListener('DOMContentLoaded', function (e) {
2223
- callback.call(_this, e);
2224
- });
2225
- }
2226
- }, {
2227
- key: 'click',
2228
- value: function click(callback) {
2229
- this.each(function (obj) {
2230
- var _this2 = this;
2231
-
2232
- obj.onclick = function (e) {
2233
- callback.call(_this2, e, obj);
2234
- };
2235
- });
2236
- return this;
2237
- }
2238
- }, {
2239
- key: 'on',
2240
- value: function on(type, callback) {
2241
- var _this3 = this;
2242
-
2243
- this.each(function (obj) {
2244
- obj.removeEventListener(type, function (e) {
2245
- callback.call(_this3, e);
2246
- });
2247
- obj.addEventListener(type, function (e) {
2248
- callback.call(_this3, e);
2249
- });
2250
- });
2251
- }
2252
- }, {
2253
- key: 'appendTo',
2254
- value: function appendTo(dom) {
2255
- if (typeof dom == 'string') {
2256
- var all = document.querySelectorAll(dom);
2257
- var ele = this[0];
2258
- for (var i = 0; i < all.length; i++) {
2259
- this[i] = ele.cloneNode(true);
2260
- all[i].appendChild(this[i]);
2261
- this.length = all.length;
2262
- }
2263
- } else {
2264
- dom.appendChild(this[0]);
2265
- }
2266
- return this;
2267
- }
2268
- }]);
2269
-
2270
- return ElQuery;
2271
- }();
2272
-
2273
- /* harmony default export */ var core_ElQuery = (ElQuery);
2274
-
2275
- window.$ = function (selector, el) {
2276
- return new ElQuery(selector, el);
2277
- };
2278
- // CONCATENATED MODULE: ./src/core/EventDispatcher.js
2279
- function EventDispatcher() {}
2280
-
2281
- Object.assign(EventDispatcher.prototype, {
2282
- /**
2283
- * 添加监听器
2284
- * @param type{string}
2285
- * @param listener{function}
2286
- * @param mutexStatus{boolean}
2287
- */
2288
- addEventListener: function addEventListener(type, listener, context) {
2289
- var mutexStatus = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
2290
-
2291
- if (this._listeners === undefined) this._listeners = {};
2292
- this._mutex = this._mutex || {};
2293
- this._context = context;
2294
- var mutex = this._mutex;
2295
- var listeners = this._listeners;
2296
-
2297
- if (listeners[type] === undefined) {
2298
- listeners[type] = [];
2299
- }
2300
-
2301
- if (listeners[type].indexOf(listener) === -1) {
2302
- // 如果启用功能独占
2303
- if (mutexStatus) {
2304
- mutex[type] = listener;
2305
- }
2306
- listeners[type].push(listener);
2307
- }
2308
- return this;
2309
- },
2310
- hasEventListener: function hasEventListener(type, listener) {
2311
- if (this._listeners === undefined) return false;
2312
-
2313
- var listeners = this._listeners;
2314
-
2315
- return listeners[type] !== undefined && listeners[type].indexOf(listener) !== -1;
2316
- },
2317
- removeEventListener: function removeEventListener(type, listener) {
2318
- if (this._listeners === undefined) return;
2319
-
2320
- var listeners = this._listeners;
2321
- var listenerArray = listeners[type];
2322
-
2323
- // 移除指定的功能独占
2324
- if (this._mutex[type] === listener) {
2325
- this._mutex[type] = null;
2326
- }
2327
-
2328
- if (listenerArray !== undefined) {
2329
- var index = listenerArray.map(function (d) {
2330
- return d.toString();
2331
- }).indexOf(listener.toString());
2332
-
2333
- if (index !== -1) {
2334
- listenerArray.splice(index, 1);
2335
- }
2336
- }
2337
- },
2338
-
2339
-
2340
- /**
2341
- * 派发事件
2342
- * @param event{{type: string, message: {}}}
2343
- */
2344
- dispatchEvent: function dispatchEvent(event) {
2345
- var _this = this;
2346
-
2347
- if (this._listeners === undefined) return;
2348
-
2349
- var listeners = this._listeners;
2350
- var listenerArray = listeners[event.type];
2351
-
2352
- if (listenerArray !== undefined) {
2353
- event.target = this;
2354
-
2355
- // Make a copy, in case listeners are removed while iterating.
2356
- var array = listenerArray.slice(0);
2357
- if (this._mutex[event.type]) {
2358
- var find = array.find(function (item) {
2359
- return item === _this._mutex[event.type];
2360
- });
2361
- find.call(this._context || this, event);
2362
- return;
2363
- }
2364
- for (var i = 0, l = array.length; i < l; i++) {
2365
- array[i].call(this._context || this, event);
2366
- }
2367
- }
2368
- },
2369
- removeAllListener: function removeAllListener() {
2370
- this._mutex = {};
2371
- for (var key in this._listeners) {
2372
- this._listeners[key] = [];
2373
- }
2374
- }
2375
- });
2376
-
2377
- /* harmony default export */ var core_EventDispatcher = (EventDispatcher);
2378
- // CONCATENATED MODULE: ./src/core/HashMap.js
2379
- var HashMap_createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
2380
-
2381
- function HashMap_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
2382
-
2383
- var HashMap = function () {
2384
- function HashMap() {
2385
- HashMap_classCallCheck(this, HashMap);
2386
-
2387
- this.elements = [];
2388
- return new Map();
2389
- }
2390
-
2391
- HashMap_createClass(HashMap, [{
2392
- key: "set",
2393
- value: function set(key, value) {
2394
- Map.prototype.set.call(this, key, value);
2395
- this.elements.push({ key: key, value: value });
2396
- }
2397
- }, {
2398
- key: "delete",
2399
- value: function _delete(key) {
2400
- Map.prototype.delete.call(this, key);
2401
- this.elements = this.elements.filter(function (d) {
2402
- return d.key !== key;
2403
- });
2404
- }
2405
- }, {
2406
- key: "isEmpty",
2407
- value: function isEmpty() {
2408
- return this.size === 0;
2409
- }
2410
- }, {
2411
- key: "clear",
2412
- value: function clear() {
2413
- Map.prototype.clear.call(this);
2414
- this.elements = [];
2415
- }
2416
- /**
2417
- * 通过数组创建Map对象
2418
- *
2419
- * @static
2420
- * @param {*} array
2421
- */
2422
-
2423
- }], [{
2424
- key: "fromEntries",
2425
- value: function fromEntries() {
2426
- var array = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
2427
-
2428
- var hashMap = new HashMap();
2429
- array.forEach(function (element) {
2430
- if (Array.isArray(element) && element.length === 2) {
2431
- hashMap.set(element[0], element[1]);
2432
- }
2433
- });
2434
- return hashMap;
2435
- }
2436
- }]);
2437
-
2438
- return HashMap;
2439
- }();
2440
-
2441
- /* harmony default export */ var core_HashMap = (HashMap);
2442
- // CONCATENATED MODULE: ./src/core/WebSocketClient.js
2443
- var WebSocketClient_createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
2444
-
2445
- function WebSocketClient_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
2446
-
2447
- function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
2448
-
2449
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
2450
-
2451
-
2452
-
2453
-
2454
- var WebSocketClient_WebSocketClient = function (_EventDispatcher) {
2455
- _inherits(WebSocketClient, _EventDispatcher);
2456
-
2457
- function WebSocketClient() {
2458
- var url = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'ws://127.0.0.1:10088';
2459
-
2460
- WebSocketClient_classCallCheck(this, WebSocketClient);
2461
-
2462
- var _this = _possibleConstructorReturn(this, (WebSocketClient.__proto__ || Object.getPrototypeOf(WebSocketClient)).call(this));
2463
-
2464
- _this.maxCheckTimes = 10;
2465
- _this.url = url;
2466
- _this.checkTimes = 0;
2467
- _this.connectStatus = false;
2468
- _this.connect();
2469
- _this.connCheckStatus(_this.maxCheckTimes);
2470
- // this.heartbeat()
2471
- WebSocketClient.instance = _this;
2472
- return _this;
2473
- }
2474
-
2475
- WebSocketClient_createClass(WebSocketClient, [{
2476
- key: 'connect',
2477
- value: function connect() {
2478
- this.disconnect();
2479
- if (this.url) {
2480
- try {
2481
- console.info('创建ws连接>>>' + this.url);
2482
- this.client = new WebSocket(this.url);
2483
- if (this.client) {
2484
- var self = this;
2485
- this.client.onopen = function (message) {
2486
- self.dispatchEvent({
2487
- type: EventTypeConstant.WEB_SOCKET_CONNECT,
2488
- message: message
2489
- });
2490
- };
2491
- this.client.onmessage = function (message) {
2492
- self.connectStatus = true;
2493
- self.dispatchEvent({
2494
- type: EventTypeConstant.WEB_SOCKET_MESSAGE,
2495
- message: message
2496
- });
2497
- };
2498
- this.client.onclose = function (message) {
2499
- self.dispatchEvent({
2500
- type: EventTypeConstant.WEB_SOCKET_CLOSE,
2501
- message: message
2502
- });
2503
- };
2504
- if (this.checkTimes === this.maxCheckTimes) {
2505
- this.client.onerror = function (message) {
2506
- self.dispatchEvent({
2507
- type: EventTypeConstant.WEB_SOCKET_ERROR,
2508
- message: message
2509
- });
2510
- };
2511
- }
2512
- }
2513
- } catch (ex) {
2514
- console.error('创建ws连接失败' + this.url + ':' + ex);
2515
- }
2516
- }
2517
- }
2518
- }, {
2519
- key: 'disconnect',
2520
- value: function disconnect() {
2521
- if (this.client) {
2522
- try {
2523
- console.log('ws断开连接' + this.url);
2524
- this.client.close();
2525
- this.client = null;
2526
- } catch (ex) {
2527
- this.client = null;
2528
- }
2529
- }
2530
- }
2531
- }, {
2532
- key: 'connCheckStatus',
2533
- value: function connCheckStatus(times) {
2534
- var _this2 = this;
2535
-
2536
- if (this.checkTimes > times) return;
2537
- setTimeout(function () {
2538
- _this2.checkTimes++;
2539
- if (_this2.client && _this2.client.readyState !== 0 && _this2.client.readyState !== 1) {
2540
- _this2.connect();
2541
- }
2542
- _this2.connCheckStatus(times);
2543
- }, 2000);
2544
- }
2545
- }, {
2546
- key: 'send',
2547
- value: function send(message) {
2548
- if (this.client && this.client.readyState === 1) {
2549
- this.client.send(message);
2550
- return true;
2551
- }
2552
- console.error(this.url + '消息发送失败:' + message);
2553
- return false;
2554
- }
2555
- }, {
2556
- key: 'heartbeat',
2557
- value: function heartbeat() {
2558
- var _this3 = this;
2559
-
2560
- setTimeout(function () {
2561
- if (_this3.client && _this3.client.readyState === 1) {
2562
- _this3.send('HeartBeat');
2563
- }
2564
- console.log('HeartBeat,' + _this3.url);
2565
- setTimeout(_this3.heartbeat, 30000);
2566
- }, 1000);
2567
- }
2568
- }], [{
2569
- key: 'getInstance',
2570
- value: function getInstance() {
2571
- if (WebSocketClient.instance) {
2572
- return WebSocketClient.instance;
2573
- } else {
2574
- return Object.freeze(new WebSocketClient());
2575
- }
2576
- }
2577
- }, {
2578
- key: '_instance',
2579
- get: function get() {
2580
- return this.getInstance();
2581
- }
2582
- }]);
2583
-
2584
- return WebSocketClient;
2585
- }(core_EventDispatcher);
2586
-
2587
- /* harmony default export */ var core_WebSocketClient = (WebSocketClient_WebSocketClient);
2588
- // CONCATENATED MODULE: ./src/core/WebStorage.js
2589
- var WebStorage_createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
2590
-
2591
- function WebStorage_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
2592
-
2593
-
2594
-
2595
- var WebStorage_WebStorage = function () {
2596
- function WebStorage() {
2597
- var type = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;
2598
-
2599
- WebStorage_classCallCheck(this, WebStorage);
2600
-
2601
- this.cacheType = type;
2602
- if (type === 1) {
2603
- this.storage = window.localStorage;
2604
- } else if (type === 2) {
2605
- this.storage = window.sessionStorage;
2606
- } else {
2607
- throw new Error(ErrorTypeConstant.PARAMETER_ERROR);
2608
- }
2609
- }
2610
-
2611
- /**
2612
- * 设置带过期时间的LocalStorage
2613
- * @param key 缓存关键字
2614
- * @param value 缓存对象,可以是任意类型
2615
- * @param expired 以秒为单位,默认为1小时
2616
- * @returns {Object}
2617
- */
2618
-
2619
-
2620
- WebStorage_createClass(WebStorage, [{
2621
- key: "setItem",
2622
- value: function setItem(key, value, expired) {
2623
- var tempObj = { key: key, value: value };
2624
- if (this.cacheType === 1) {
2625
- var currTime = Date.now();
2626
- if (expired) {
2627
- tempObj.expired = currTime + expired * 1000;
2628
- }
2629
- }
2630
- this.storage[key] = JSON.stringify(tempObj);
2631
- return tempObj;
2632
- }
2633
-
2634
- /***
2635
- * 获取带过期时间的缓存
2636
- * @param key
2637
- * @returns {null|*}
2638
- */
2639
-
2640
- }, {
2641
- key: "getItem",
2642
- value: function getItem(key) {
2643
- var storageData = this.storage.getItem(key) || null;
2644
- var tempObj = JSON.parse(storageData) || {};
2645
- if (this.cacheType === 1) {
2646
- var expired = tempObj.expired || Date.now();
2647
- if (Date.now() > expired) {
2648
- this.remove(key);
2649
- return null;
2650
- }
2651
- }
2652
- return tempObj.value;
2653
- }
2654
-
2655
- /**
2656
- * 移除指定缓存
2657
- * @param keys
2658
- */
2659
-
2660
- }, {
2661
- key: "remove",
2662
- value: function remove(keys) {
2663
- var _this = this;
2664
-
2665
- if (keys) {
2666
- if (keys.indexOf(",") > -1) {
2667
- keys.split(",").forEach(function (key) {
2668
- _this.storage.removeItem(key);
2669
- });
2670
- } else {
2671
- this.storage.removeItem(keys);
2672
- }
2673
- }
2674
- }
2675
-
2676
- /**
2677
- * 移出全部缓存
2678
- */
2679
-
2680
- }, {
2681
- key: "clear",
2682
- value: function clear() {
2683
- this.storage.clear();
2684
- }
2685
- }]);
2686
-
2687
- return WebStorage;
2688
- }();
2689
-
2690
- /* harmony default export */ var core_WebStorage = (WebStorage_WebStorage);
2691
- // CONCATENATED MODULE: ./src/core/DevicePixelRatio.js
2692
- var DevicePixelRatio_createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
2693
-
2694
- function DevicePixelRatio_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
2695
-
2696
- var DevicePixelRatio = function () {
2697
- function DevicePixelRatio() {
2698
- var magnification = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;
2699
-
2700
- DevicePixelRatio_classCallCheck(this, DevicePixelRatio);
2701
-
2702
- this.magnification = magnification;
2703
- }
2704
- // 获取系统类型
2705
-
2706
-
2707
- DevicePixelRatio_createClass(DevicePixelRatio, [{
2708
- key: '_getSystem',
2709
- value: function _getSystem() {
2710
- // let flag = false;
2711
- var agent = navigator.userAgent.toLowerCase();
2712
- // var isMac = /macintosh|mac os x/i.test(navigator.userAgent);
2713
- // if(isMac) {
2714
- // return false;
2715
- // }
2716
- // 现只针对windows处理,其它系统暂无该情况,如有,继续在此添加
2717
- if (agent.indexOf('windows') >= 0) {
2718
- return true;
2719
- }
2720
- }
2721
- // 获取页面缩放比例
2722
- // _getDevicePixelRatio() {
2723
- // let t = this;
2724
- // }
2725
- // 监听方法兼容写法
2726
-
2727
- }, {
2728
- key: '_addHandler',
2729
- value: function _addHandler(element, type, handler) {
2730
- if (element.addEventListener) {
2731
- element.addEventListener(type, handler, false);
2732
- } else if (element.attachEvent) {
2733
- element.attachEvent('on' + type, handler);
2734
- } else {
2735
- element['on' + type] = handler;
2736
- }
2737
- }
2738
- // 校正浏览器缩放比例
2739
-
2740
- }, {
2741
- key: '_correct',
2742
- value: function _correct() {
2743
- // 配合px2rem插件进行自适应布局
2744
- var pageWidth = window.innerWidth;
2745
- //为了ie也能拿到可视窗口宽度
2746
- if (typeof pageWidth != 'number') {
2747
- //标准模式
2748
- if (document.compatMode == 'CSS1Compat') {
2749
- pageWidth = document.documentElement.clientWidth;
2750
- //怪异模式
2751
- } else {
2752
- pageWidth = document.body.clientWidth;
2753
- }
2754
- }
2755
- if (pageWidth <= 750) {
2756
- var baseSize = 75;
2757
- // 当前页面宽度相对于 750 宽的缩放比例,可根据自己需要修改。
2758
- var scale = document.documentElement.clientWidth / pageWidth;
2759
- // 设置页面根节点字体大小
2760
- document.documentElement.style.fontSize = this.magnification * baseSize * Math.min(scale, 2) + 'px';
2761
- } else if (pageWidth > 750 && pageWidth <= 1200) {
2762
- var _baseSize = 85;
2763
- // 当前页面宽度相对于 750 宽的缩放比例,可根据自己需要修改。
2764
- var _scale = document.documentElement.clientWidth / pageWidth;
2765
- // 设置页面根节点字体大小
2766
- document.documentElement.style.fontSize = this.magnification * _baseSize * Math.min(_scale, 2) + 'px';
2767
- } else {
2768
- var _baseSize2 = 100;
2769
- // 当前页面宽度相对于 750 宽的缩放比例,可根据自己需要修改。
2770
- var _scale2 = document.documentElement.clientWidth / 1920;
2771
- // 设置页面根节点字体大小
2772
- document.documentElement.style.fontSize = this.magnification * _baseSize2 * Math.min(_scale2, 2) + 'px';
2773
- }
2774
- }
2775
- // 监听页面缩放
2776
-
2777
- }, {
2778
- key: '_watch',
2779
- value: function _watch() {
2780
- var t = this;
2781
- t._addHandler(window, 'resize', function () {
2782
- // 注意这个方法是解决全局有两个window.resize
2783
- // 重新校正
2784
- t._correct();
2785
- });
2786
- }
2787
- // 初始化页面比例
2788
-
2789
- }, {
2790
- key: 'init',
2791
- value: function init() {
2792
- var t = this;
2793
- if (t._getSystem()) {
2794
- // 判断设备,目前只在windows系统下校正浏览器缩放比例
2795
- // 初始化页面校正浏览器缩放比例
2796
- t._correct();
2797
- // 开启监听页面缩放
2798
- t._watch();
2799
- }
2800
- }
2801
- }]);
2802
-
2803
- return DevicePixelRatio;
2804
- }();
2805
-
2806
- /* harmony default export */ var core_DevicePixelRatio = (DevicePixelRatio);
2807
- // CONCATENATED MODULE: ./src/index.js
2808
-
2809
-
2810
-
2811
-
2812
-
2813
-
2814
-
2815
-
2816
-
2817
-
2818
-
2819
- /***/ })
2820
- /******/ ]);
2821
- });
1
+ !function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define("Gis",[],e):"object"==typeof exports?exports.Gis=e():t.Gis=e()}(window,(function(){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var a=e[r]={i:r,l:!1,exports:{}};return t[r].call(a.exports,a,a.exports,n),a.l=!0,a.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var a in t)n.d(r,a,function(e){return t[e]}.bind(null,a));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="/dist/",n(n.s=0)}([function(t,e,n){"use strict";n.r(e),n.d(e,"AnimateUtils",(function(){return r})),n.d(e,"ArrayUtils",(function(){return h})),n.d(e,"BrowserUtils",(function(){return f})),n.d(e,"Cookie",(function(){return d})),n.d(e,"CoordsUtils",(function(){return p})),n.d(e,"DateUtils",(function(){return y})),n.d(e,"DomUtils",(function(){return m})),n.d(e,"GeoUtils",(function(){return E})),n.d(e,"FileUtils",(function(){return b})),n.d(e,"MathUtils",(function(){return w})),n.d(e,"OptimizeUtils",(function(){return R})),n.d(e,"StringUtils",(function(){return O})),n.d(e,"AssertUtils",(function(){return S})),n.d(e,"Utils",(function(){return u})),n.d(e,"EventType",(function(){return a})),n.d(e,"ErrorType",(function(){return i})),n.d(e,"LayerType",(function(){return o})),n.d(e,"GraphicType",(function(){return s})),n.d(e,"MeasureMode",(function(){return c})),n.d(e,"AudioPlayer",(function(){return D})),n.d(e,"CanvasDrawer",(function(){return x})),n.d(e,"ElQuery",(function(){return P})),n.d(e,"EventDispatcher",(function(){return N})),n.d(e,"HashMap",(function(){return U})),n.d(e,"WebSocketClient",(function(){return G})),n.d(e,"WebStorage",(function(){return Y})),n.d(e,"DevicePixelRatio",(function(){return K}));var r={animate:function(t,e,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"swing",a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:5;for(var i in e)e[i]={target:"opacity"===i?parseInt(100*e[i]):e[i],iNow:"opacity"===i?parseInt(100*getComputedStyle(t)[i]):parseInt(getComputedStyle(t)[i])};"liner"===r&&(a=e[i].iNow<e[i].target?Math.abs(a):-Math.abs(a)),clearInterval(t.timer),t.timer=setInterval((function(){for(var i in e){var o=e[i].target,s=e[i].iNow;if("swing"===r&&(a=(a=(o-s)/20)>0?Math.ceil(a):Math.floor(a)),Math.abs(o-s)<=Math.abs(a)){for(var c in t.style[i]="opacity"===i?o/100:o+"px",delete e[i],e)return!1;clearInterval(t.timer),"function"==typeof n&&n()}else e[i].iNow+=a,t.style[i]="opacity"===i?e[i].iNow/100:e[i].iNow+"px"}}),30)}},a={MAP_RENDER:"mapRender",MAP_READY:"mapReady",MOUSE_CLICK:"click",MOUSE_DOUBLE_CLICK:"dblclick",MOUSE_MOVE:"mousemove",MOUSE_IN:"mousein",MOUSE_OUT:"mouseout",MOUSE_RIGHT_CLICK:"mouseRightClick",KEY_DOWN:"keyDown",KEY_UP:"keyUp",DRAW_ACTIVE:"drawActive",DRAW_MOVE:"drawMove",DRAW_COMPLETE:"drawComplete",MQTT_CONNECT:"mqttConnect",MQTT_ERROR:"mqttError",MQTT_MESSAGE:"mqttMessage",MQTT_CLOSE:"mqttClose",WEB_SOCKET_CONNECT:"webSocketConnect",WEB_SOCKET_ERROR:"webSocketError",WEB_SOCKET_MESSAGE:"webSocketMessage",WEB_SOCKET_CLOSE:"webSocketClose"},i={LOGIN_EXPIRED:"登录信息过期,请重新登录",CROSS_ERROR:"跨域访问",UNEXIST_RESOURCE:"资源不存在",TIMEOUT:"请求超时",INTERNAL_ERROR:"内部错误",NETWORK_ERROR:"请求失败,请检查网络是否已连接",PROCESS_FAIL:"处理失败",AUTH_VERIFY_ERROR:"权限验证失败",NO_DATA_FOUND:"未找到数据",DUPLICATE_INSTANCE:"实例为单例模式,不允许重复构建",COORDINATE_ERROR:"坐标验证失败",JSON_PARSE_ERROR:"JSON解析失败,格式有误",JSON_VALUE_ERROR:"JSON无此键",PARAMETER_ERROR:"验证数据类型失败",PARAMETER_ERROR_ARRAY:"格式类型验证失败:必须是数组",PARAMETER_ERROR_STRING:"格式类型验证失败:必须是字符",PARAMETER_ERROR_FUNCTION:"格式类型验证失败:必须是函数",PARAMETER_ERROR_OBJECT:"格式类型验证失败:必须是对象",PARAMETER_ERROR_LACK:"参数缺失"},o={SUPER_MAP_IMAGES:"SuperMapImages",SUPER_MAP_DATA:"SuperMapData",ARC_GIS_MAP_IMAGES:"ArcGisMapImages",ARC_GIS_MAP_DATA:"ArcGisMapData",OSGB_LAYER:"OSGBLayer",S3M_GROUP:"S3MGroup",TERRAIN_LAYER:"TerrainFileLayer"},s={POINT:"point",POLYLINE:"polyline",POLYGON:"polygon",BILLBOARD:"billboard",CYLINDER:"cylinder",ELLIPSOID:"ellipsoid",LABEL:"label",MODEL:"model",WALL:"wall"},c={DISTANCE:"distance",AREA:"area",HEIGHT:"height"},u={getDataType:function(t){return Object.prototype.toString.call(t).slice(8,-1)},isEmpty:function(t){if(null==t)return!0;switch(this.getDataType(t)){case"String":return""===t.trim();case"Array":return!t.length;case"Object":return!Object.keys(t).length;case"Boolean":return!t;default:return!1}},isNotEmpty:function(t){return!this.isEmpty(t)},json2form:function(t){var e=new FormData;return Object.keys(t).forEach((function(n){e.append(n,t[n]instanceof Object?JSON.stringify(t[n]):t[n])})),e},json2Query:function(t){var e=[];for(var n in t){var r=n,a=t[n];e.push(r+"="+a)}return e.join("&")},generateGuid:function(){var t=function(){return(65536*(1+Math.random())|0).toString(16).substring(1)};return t()+t()+t()+t()+t()+t()+t()+t()},decodeDict:function(){for(var t="",e=arguments.length,n=Array(e),r=0;r<e;r++)n[r]=arguments[r];if(n.length>1){for(var a=n.slice(1,n.length%2==0?n.length-1:n.length),i=0;i<a.length;i+=2){var o=a[i];n[0]===o&&(t=a[i+1])}t||n.length%2!=0||(t=n[n.length-1])}else t=n[0];return t},extend:function(t){for(var e=void 0,n=void 0,r=void 0,a=void 0,i=arguments.length,o=Array(i>1?i-1:0),s=1;s<i;s++)o[s-1]=arguments[s];for(n=0,r=o.length;n<r;n++)for(e in a=o[n])t[e]=a[e];return t},rgb2hex:function(t){return"#"+((1<<24)+(t[0]<<16)+(t[1]<<8)+t[2]).toString(16).slice(1)},convertToTree2:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"id",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"parentId",r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"children",a=[];function i(a){var o=a[e],s=t.filter((function(t){return t.hasOwnProperty(n)&&t[n]===o}));s.length>0&&(s.forEach(i),a[r]=s)}var o=function(r){-1===t.findIndex((function(t){return t[e]===r[n]}))&&(i(r),a.push(r))},s=!0,c=!1,u=void 0;try{for(var l,h=t[Symbol.iterator]();!(s=(l=h.next()).done);s=!0){var f=l.value;o(f)}}catch(t){c=!0,u=t}finally{try{!s&&h.return&&h.return()}finally{if(c)throw u}}return a},asyncLoadScript:function(t){return new Promise((function(e,n){try{var r=document.createElement("script");r.readyState?r.onreadystatechange=function(){"complete"!==r.readyState&&"loaded"!==r.readyState||e(r)}:r.onload=function(){e(r)},r.type="text/javascript",r.src=t,document.body.appendChild(r)}catch(t){n(t)}}))},loadStyle:function(t){t.forEach((function(t){var e=document.createElement("link");e.href=t,e.rel="stylesheet",e.type="text/css",document.head.appendChild(e)}))},template:function(t,e){return t.replace(/\{ *([\w_-]+) *\}/g,(function(t,n){var r=e[n];if(void 0===r)throw new Error(i.JSON_VALUE_ERROR+t);return"function"==typeof r&&(r=r(e)),r}))},deleteEmptyProperty:function(t){var e=this;return Object.fromEntries(Object.keys(t).filter((function(n){return!e.isEmpty(t[n])})).map((function(e){return[e,t[e]]})))},deepAssign:function(){var t=arguments.length,e=arguments[0];"Object"!==this.getDataType(e)&&(e={});for(var n=1;n<t;n++){var r=arguments[n];if("Object"===this.getDataType(r))for(var a in r)"__proto__"!==a&&e!==r[a]&&("Object"===this.getDataType(r[a])?e[a]=this.deepAssign(e[a],r[a]):e[a]=r[a])}return e},handleCopyValue:function(t){if(!navigator.clipboard&&window.isSecureContext)return navigator.clipboard.writeText(t);var e=document.createElement("textarea");return e.style.position="fixed",e.style.top=e.style.left="-100vh",e.style.opacity="0",e.value=t,document.body.appendChild(e),e.focus(),e.select(),new Promise((function(t,n){document.execCommand("copy")?t():n(new Error("copy failed")),e.remove()}))}};function l(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e<t.length;e++)n[e]=t[e];return n}return Array.from(t)}Array.prototype.groupBy=function(t){var e={};return this.forEach((function(n){var r=JSON.stringify(t(n));e[r]=e[r]||[],e[r].push(n)})),Object.keys(e).map((function(t){return e[t]}))},Array.prototype.distinct=function(t){var e=[],n={};return this.forEach((function(r){var a=t(r);!n[a]&&(n[a]=e.push(r))})),e},Array.prototype.max=function(){return Math.max.apply({},this)},Array.prototype.min=function(){return Math.min.apply({},this)},Array.prototype.sum=function(){return this.length>0?this.reduce((function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return t+e})):0},Array.prototype.avg=function(){return this.length?this.sum()/this.length:0},Array.prototype.desc=function(t){return this.sort((function(e,n){return(t?t(n):n)-(t?t(e):e)}))},Array.prototype.asc=function(t){return this.sort((function(e,n){return(t?t(e):e)-(t?t(n):n)}))},Array.prototype.clear=function(){return this.length=0,this};var h={asArray:function(t){return u.isEmpty(t)?[]:Array.isArray(t)?t:[t]},generateArray:function(t){return[].concat(l(new Array(t).keys()))},union:function(){for(var t=[],e=arguments.length,n=Array(e),r=0;r<e;r++)n[r]=arguments[r];return n.forEach((function(e){Array.isArray(e)&&(t=t.concat(e.filter((function(e){return!t.includes(e)}))))})),t},intersection:function(){for(var t=arguments.length,e=Array(t),n=0;n<t;n++)e[n]=arguments[n];var r=e[0]||[];return e.forEach((function(t){Array.isArray(t)&&(r=r.filter((function(e){return t.includes(e)})))})),r},unionAll:function(){for(var t=arguments.length,e=Array(t),n=0;n<t;n++)e[n]=arguments[n];return[].concat(l(e)).flat().filter((function(t){return!!t}))},difference:function(){for(var t=this,e=arguments.length,n=Array(e),r=0;r<e;r++)n[r]=arguments[r];return this.union.apply(this,l(n)).filter((function(e){return!t.intersection.apply(t,l(n)).includes(e)}))}},f={getUrlParams:function(){for(var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window.location.href,e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=/([^&=]+)=([\w\W]*?)(&|$|#)/g,r=new URL(t),a=r.search,i=r.hash,o=[a,i],s={},c=0;c<o.length;c++){var u=o[c];if(u){var l=u.replace(/#|\//g,""),h=l.split("?");if(h.length>1)for(var f=1;f<h.length;f++)for(var d=void 0;d=n.exec(h[f]);)s[d[1]]=e?decodeURIComponent(d[2]):d[2]}}return s},getExplorer:function(){var t=window.navigator.userAgent;return t.indexOf("MSIE")>=0||window.ActiveXObject||"ActiveXObject"in window?"IE":t.indexOf("Firefox")>=0?"Firefox":t.indexOf("Chrome")>=0?"Chrome":t.indexOf("Opera")>=0?"Opera":t.indexOf("Safari")>=0?"Safari":void 0},detectOS:function(){var t="",e=-1!=navigator.userAgent.indexOf("Windows",0)?1:0,n=-1!=navigator.userAgent.indexOf("mac",0)?1:0,r=-1!=navigator.userAgent.indexOf("Linux",0)?1:0,a=-1!=navigator.userAgent.indexOf("X11",0)?1:0;return e?t="MS Windows":n?t="Apple mac":r?t="Linux":a&&(t="Unix"),t},switchFullScreen:function(t){if(t){var e=document.documentElement;e.requestFullscreen?e.requestFullscreen():e.msRequestFullscreen?e.msRequestFullscreen():e.mozRequestFullScreen?e.mozRequestFullScreen():e.webkitRequestFullscreen&&e.webkitRequestFullscreen()}else document.exitFullscreen?document.exitFullscreen():document.msExitFullscreen?document.msExitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.webkitExitFullscreen&&document.webkitExitFullscreen()},refreshScale:function(){var t=document.documentElement.clientWidth,e=document.documentElement.clientHeight,n=document.getElementById("app").style,r=t/1920;t/e>16/9&&(r=e/1080),n.transformOrigin="left top",n.transform="scale("+r+") translateX(-49.99%)",n.width=t/r+"px"},getHtmlFontSize:function(){var t=document.documentElement.clientWidth||document.body.clientWidth;document.querySelector("html").style.fontSize=t/192+"px"}},d={set:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:30,r=new Date;r.setTime(r.getTime()+24*n*60*60*1e3),document.cookie=t+"="+escape(e)+";expires="+r.toGMTString()},remove:function(t){var e=new Date;e.setTime(e.getTime()-1);var n=this.get(t);null!=n&&(document.cookie=t+"="+n+";expires="+e.toGMTString())},get:function(t){var e=document.cookie.match(new RegExp("(^| )"+t+"=([^;]*)(;|$)"));return null!=e?e[2]:""}},p={PI:3.141592653589793,XPI:52.35987755982988,delta:function(t,e){var n=6378245,r=.006693421622965943,a=this.transformLat(e-105,t-35),i=this.transformLon(e-105,t-35),o=t/180*this.PI,s=Math.sin(o);s=1-r*s*s;var c=Math.sqrt(s);return{lat:a=180*a/(n*(1-r)/(s*c)*this.PI),lng:i=180*i/(n/c*Math.cos(o)*this.PI)}},gcjEncrypt:function(t,e){if(this.outOfChina(t,e))return{lat:t,lng:e};var n=this.delta(t,e);return{lat:t+n.lat,lng:e+n.lng}},gcjDecrypt:function(t,e){if(this.outOfChina(t,e))return{lat:t,lng:e};var n=this.delta(t,e);return{lat:t-n.lat,lng:e-n.lng}},gcjDecryptExact:function(t,e){for(var n=.01,r=.01,a=t-n,i=e-r,o=t+n,s=e+r,c=void 0,u=void 0,l=0;;){c=(a+o)/2,u=(i+s)/2;var h=this.gcj_encrypt(c,u);if(n=h.lat-t,r=h.lng-e,Math.abs(n)<1e-9&&Math.abs(r)<1e-9)break;if(n>0?o=c:a=c,r>0?s=u:i=u,++l>1e4)break}return{lat:c,lng:u}},bdEncrypt:function(t,e){var n=e,r=t,a=Math.sqrt(n*n+r*r)+2e-5*Math.sin(r*this.XPI),i=Math.atan2(r,n)+3e-6*Math.cos(n*this.XPI),o=a*Math.cos(i)+.0065;return{lat:a*Math.sin(i)+.006,lng:o}},bdDecrypt:function(t,e){var n=e-.0065,r=t-.006,a=Math.sqrt(n*n+r*r)-2e-5*Math.sin(r*this.XPI),i=Math.atan2(r,n)-3e-6*Math.cos(n*this.XPI),o=a*Math.cos(i);return{lat:a*Math.sin(i),lng:o}},mercatorEncrypt:function(t,e){var n=20037508.34*e/180,r=Math.log(Math.tan((90+t)*this.PI/360))/(this.PI/180);return{lat:r=20037508.34*r/180,lng:n}},mercatorDecrypt:function(t,e){var n=e/20037508.34*180,r=t/20037508.34*180;return{lat:r=180/this.PI*(2*Math.atan(Math.exp(r*this.PI/180))-this.PI/2),lng:n}},distance:function(t,e,n,r){var a=Math.cos(t*this.PI/180)*Math.cos(n*this.PI/180)*Math.cos((e-r)*this.PI/180)+Math.sin(t*this.PI/180)*Math.sin(n*this.PI/180);a>1&&(a=1),a<-1&&(a=-1);var i=6371e3*Math.acos(a);return i},outOfChina:function(t,e){return e<72.004||e>137.8347||(t<.8293||t>55.8271)},transformLat:function(t,e){var n=2*t-100+3*e+.2*e*e+.1*t*e+.2*Math.sqrt(Math.abs(t));return n+=2*(20*Math.sin(6*t*this.PI)+20*Math.sin(2*t*this.PI))/3,n+=2*(20*Math.sin(e*this.PI)+40*Math.sin(e/3*this.PI))/3,n+=2*(160*Math.sin(e/12*this.PI)+320*Math.sin(e*this.PI/30))/3},transformLon:function(t,e){var n=300+t+2*e+.1*t*t+.1*t*e+.1*Math.sqrt(Math.abs(t));return n+=2*(20*Math.sin(6*t*this.PI)+20*Math.sin(2*t*this.PI))/3,n+=2*(20*Math.sin(t*this.PI)+40*Math.sin(t/3*this.PI))/3,n+=2*(150*Math.sin(t/12*this.PI)+300*Math.sin(t/30*this.PI))/3}};Date.prototype.format=function(t){var e={"M+":this.getMonth()+1,"d+":this.getDate(),"h+":this.getHours(),"m+":this.getMinutes(),"s+":this.getSeconds(),"q+":Math.floor((this.getMonth()+3)/3),S:this.getMilliseconds()};for(var n in/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(this.getFullYear()+"").substr(4-RegExp.$1.length))),e)new RegExp("("+n+")").test(t)&&(t=t.replace(RegExp.$1,1===RegExp.$1.length?e[n]:("00"+e[n]).substr((""+e[n]).length)));return t},Date.prototype.addDate=function(t,e){var n=new Date(this);switch(t){case"y":n.setFullYear(this.getFullYear()+e);break;case"q":n.setMonth(this.getMonth()+3*e);break;case"M":n.setMonth(this.getMonth()+e);break;case"w":n.setDate(this.getDate()+7*e);break;case"d":n.setDate(this.getDate()+e);break;case"h":n.setHours(this.getHours()+e);break;case"m":n.setMinutes(this.getMinutes()+e);break;case"s":n.setSeconds(this.getSeconds()+e);break;default:n.setDate(this.getDate()+e)}return n};var y={lastMonthDate:new Date((new Date).getFullYear(),(new Date).getMonth()-1,1),thisMonthDate:new Date((new Date).getFullYear(),(new Date).getMonth(),1),nextMonthDate:new Date((new Date).getFullYear(),(new Date).getMonth()+1,1),lastWeekDate:new Date((new Date).getFullYear(),(new Date).getMonth(),(new Date).getDate()+1-7-(new Date).getDay()),thisWeekDate:new Date((new Date).getFullYear(),(new Date).getMonth(),(new Date).getDate()+1-(new Date).getDay()),nextWeekDate:new Date((new Date).getFullYear(),(new Date).getMonth(),(new Date).getDate()+1+7-(new Date).getDay()),lastDayDate:new Date((new Date).getFullYear(),(new Date).getMonth(),(new Date).getDate()-1),thisDayDate:new Date((new Date).setHours(0,0,0,0)),nextDayDate:new Date((new Date).getFullYear(),(new Date).getMonth(),(new Date).getDate()+1),parseDate:function(t){if("string"==typeof t){var e=t.match(/^ *(\d{4})-(\d{1,2})-(\d{1,2}) *$/);if(e&&e.length>3)return new Date(parseInt(e[1]),parseInt(e[2])-1,parseInt(e[3]));if((e=t.match(/^ *(\d{4})-(\d{1,2})-(\d{1,2}) +(\d{1,2}):(\d{1,2}):(\d{1,2}) *$/))&&e.length>6)return new Date(parseInt(e[1]),parseInt(e[2])-1,parseInt(e[3]),parseInt(e[4]),parseInt(e[5]),parseInt(e[6]));if((e=t.match(/^ *(\d{4})-(\d{1,2})-(\d{1,2}) +(\d{1,2}):(\d{1,2}):(\d{1,2})\.(\d{1,9}) *$/))&&e.length>7)return new Date(parseInt(e[1]),parseInt(e[2])-1,parseInt(e[3]),parseInt(e[4]),parseInt(e[5]),parseInt(e[6]),parseInt(e[7]))}return null},formatDateInterval:function(t,e){var n=new Date(t),r=new Date(e).getTime()-n.getTime(),a=Math.floor(r/864e5),i=r%864e5,o=Math.floor(i/36e5),s=i%36e5,c=Math.floor(s/6e4),u=s%6e4,l=Math.round(u/1e3),h="";return a>0&&(h+=a+"天"),o>0&&(h+=o+"时"),c>0&&(h+=c+"分"),l>0&&(h+=l+"秒"),0===a&&0===o&&0===c&&0===l&&(h="少于1秒"),h},formatterCounter:function(t){var e=function(t){return(t>10?"":"0")+(t||0)},n=t%3600,r=n%60;return e(Math.floor(t/3600))+":"+e(Math.floor(n/60))+":"+e(Math.round(r))},sleep:function(t){for(var e=Date.now();Date.now()-e<=t;);}};function v(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}function g(t){return v(t).split(/\s+/)}var m={getStyle:function(t,e){var n=t.style[e]||t.currentStyle&&t.currentStyle[e];if((!n||"auto"===n)&&document.defaultView){var r=document.defaultView.getComputedStyle(t,null);n=r?r[e]:null}return"auto"===n?null:n},create:function(t,e,n){var r=document.createElement(t);return r.className=e||"",n&&n.appendChild(r),r},remove:function(t){var e=t.parentNode;e&&e.removeChild(t)},empty:function(t){for(;t.firstChild;)t.removeChild(t.firstChild)},toFront:function(t){var e=t.parentNode;e&&e.lastChild!==t&&e.appendChild(t)},toBack:function(t){var e=t.parentNode;e&&e.firstChild!==t&&e.insertBefore(t,e.firstChild)},getClass:function(t){return t.correspondingElement&&(t=t.correspondingElement),void 0===t.className.baseVal?t.className:t.className.baseVal},hasClass:function(t,e){if(void 0!==t.classList)return t.classList.contains(e);var n=this.getClass(t);return n.length>0&&new RegExp("(^|\\s)"+e+"(\\s|$)").test(n)},addClass:function(t,e){if(void 0!==t.classList)for(var n=g(e),r=0,a=n.length;r<a;r++)t.classList.add(n[r]);else if(!this.hasClass(t,e)){var i=this.getClass(t);this.setClass(t,(i?i+" ":"")+e)}},removeClass:function(t,e){void 0!==t.classList?g(e).forEach((function(e){return t.classList.remove(e)})):this.setClass(t,v((" "+this.getClass(t)+" ").replace(" "+e+" "," ")))},setClass:function(t,e){void 0===t.className.baseVal?t.className=e:t.className.baseVal=e},parseFromString:function(t){return(new DOMParser).parseFromString(t,"text/xml").children[0]}},w={DEG2RAD:Math.PI/180,RAD2DEG:180/Math.PI,randInt:function(t,e){return t+Math.floor(Math.random()*(e-t+1))},randFloat:function(t,e){return t+Math.random()*(e-t)},degreesToRadians:function(t){return t*this.DEG2RAD},toRadians:function(t){return t*this.DEG2RAD},radiansToDegrees:function(t){return t*this.RAD2DEG},toDegrees:function(t){return t*this.RAD2DEG},formatFloat:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2;return Math.round(t*Math.pow(10,e))/Math.pow(10,e)}},E={toRadian:Math.PI/180,R:6371393,isLnglat:function(t,e){return!!(+e>-90&&+e<90&&+t>-180&&+t<180)},formatLnglat:function(t,e){var n="";function r(t){var e=parseFloat(t),n=parseInt(e),r=parseInt(60*(e-n));return n+"°"+r+"′"+(3600*(e-n)-60*r).toFixed(2)+"″"}return t&&e&&(n=r(t)+","+r(e)),n},transformLnglat:function(t,e){function n(t){for(var e=/[sw]/i.test(t)?-1:1,n=t.match(/[\d.]+/g),r=0,a=0,i=n.length;a<i;a++)r+=n[a]/e,e*=60;return r}if(t&&e)return{lng:n(t),lat:n(e)}},rayCasting:function(t,e){for(var n=t.x,r=t.y,a=!1,i=0,o=e.length,s=o-1;i<o;s=i,i++){var c=e[i].x,u=e[i].y,l=e[s].x,h=e[s].y;if(c===n&&u===r||l===n&&h===r)return"on";if(u<r&&h>=r||u>=r&&h<r){var f=c+(r-u)*(l-c)/(h-u);if(f===n)return"on";f>n&&(a=!a)}}return a?"in":"out"},wgs84PointsDistance:function(t,e){var n=Math.PI;function r(t){return t*n/180}if(2!=arguments.length)return 0;lon1=t.x,lat1=t.y,lon2=e.x,lat2=e.y;var a,i=6378137,o=6356752.3142,s=1/298.257223563,c=r(lon2-lon1),u=Math.atan((1-s)*Math.tan(r(lat1))),l=Math.atan((1-s)*Math.tan(r(lat2))),h=Math.sin(u),f=Math.cos(u),d=Math.sin(l),p=Math.cos(l),y=c,v=100;do{var g=Math.sin(y),m=Math.cos(y),w=Math.sqrt(p*g*(p*g)+(f*d-h*p*m)*(f*d-h*p*m));if(0==w)return 0;var E=h*d+f*p*m,M=Math.atan2(w,E),b=f*p*g/w,R=1-b*b,O=E-2*h*d/R;isNaN(O)&&(O=0);var S=s/16*R*(4+s*(4-3*R));a=y,y=c+(1-S)*s*b*(M+S*w*(O+S*E*(2*O*O-1)))}while(Math.abs(y-a)>1e-12&&--v>0);if(0==v)return NaN;var A=R*(i*i-o*o)/(o*o),D=1+A/16384*(4096+A*(A*(320-175*A)-768)),_=A/1024*(256+A*(A*(74-47*A)-128)),x=_*w*(O+_/4*(E*(2*O*O-1)-_/6*O*(4*w*w-3)*(4*O*O-3))),T=o*D*(M-x);Math.atan2(p*g,f*d-h*p*m),Math.atan2(f*g,-h*p+f*d*m);return T},rotatePoint:function(t,e,n){return{x:(t.x-e.x)*Math.cos(Math.PI/180*-n)-(t.y-e.y)*Math.sin(Math.PI/180*-n)+e.x,y:(t.x-e.x)*Math.sin(Math.PI/180*-n)+(t.y-e.y)*Math.cos(Math.PI/180*-n)+e.y}},calcBearAndDisByPoints:function(t,e){var n=parseFloat(t.lat),r=parseFloat(t.lng),a=parseFloat(e.lat),i=parseFloat(e.lng),o=Math.sin((i-r)*this.toRadian)*Math.cos(a*this.toRadian),s=Math.cos(n*this.toRadian)*Math.sin(a*this.toRadian)-Math.sin(n*this.toRadian)*Math.cos(a*this.toRadian)*Math.cos((i-r)*this.toRadian),c=Math.atan2(o,s)*(180/Math.PI),u=(a-n)*this.toRadian,l=(i-r)*this.toRadian,h=Math.sin(u/2)*Math.sin(u/2)+Math.cos(n*this.toRadian)*Math.cos(a*this.toRadian)*Math.sin(l/2)*Math.sin(l/2),f=2*Math.atan2(Math.sqrt(h),Math.sqrt(1-h));return{angle:c,distance:this.R*f}},calcPointByBearAndDis:function(t,e,n){var r=w.toRadians(parseFloat(t.lat)),a=w.toRadians(parseFloat(t.lng));e=parseFloat(e);var i=(n=parseFloat(n))/this.R;e=w.toRadians(e);var o=Math.asin(Math.sin(r)*Math.cos(i)+Math.cos(r)*Math.sin(i)*Math.cos(e)),s=a+Math.atan2(Math.sin(e)*Math.sin(i)*Math.cos(r),Math.cos(i)-Math.sin(r)*Math.sin(o));return{lat:w.toDegrees(o),lng:w.toDegrees(s)}},mercatorTolonlat:function(t,e){var n=e/20037508.34*180;return{lng:t/20037508.34*180,lat:180/Math.PI*(2*Math.atan(Math.exp(n*Math.PI/180))-Math.PI/2)}},lonlatToMercator:function(t,e){var n=t*Math.PI/180*6378137,r=e*Math.PI/180;return{x:n,y:3189068.5*Math.log((1+Math.sin(r))/(1-Math.sin(r)))}}},M="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},b={convertBase64ToBlob:function(t){for(var e=t.split(",")[0].split(":")[1].split(";")[0],n=window.atob(t.split(",")[1]),r=new ArrayBuffer(n.length),a=new Uint8Array(r),i=0;i<n.length;i++)a[i]=n.charCodeAt(i);var o=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder;return o?((o=new(window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder)).append(r),o.getBlob(e)):o=new Blob([r],{type:e})},convertUrlToBase64:function(t,e,n){return new Promise((function(r,a){var i=new Image;i.crossOrigin="Anonymous",i.src=t,i.onload=function(){var t=document.createElement("canvas");t.width=e||i.width,t.height=n||i.height,t.getContext("2d").drawImage(i,0,0,i.width,i.height);var a=i.src.substring(i.src.lastIndexOf(".")+1).toLowerCase(),o=t.toDataURL("image/"+a);r({dataURL:o,type:"image/"+a,ext:a})}}))},convertBase64ToFile:function(t,e){for(var n=t.split(","),r=n[0].match(/:(.*?);/)[1],a=atob(n[1]),i=a.length,o=new Uint8Array(i);i--;)o[i]=a.charCodeAt(i);return new File([o],e,{type:r})},downloadFromFile:function(t,e){if("object"==(void 0===t?"undefined":M(t)))if(t instanceof Blob)t=URL.createObjectURL(t);else{var n=JSON.stringify(t),r=new Blob([n],{type:"text/json"});t=window.URL.createObjectURL(r)}else if("string"==typeof t&&-1===t.indexOf("http")){var a=new Blob([t],{type:"text/json"});t=window.URL.createObjectURL(a)}var i=document.createElement("a");i.href=t,i.download=e||"",i.click(),window.URL.revokeObjectURL(i.href)}},R={debounce:function(t,e){var n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],r=void 0,a=void 0,i=void 0,o=void 0,s=void 0,c=function c(){var u=+new Date-o;u<e&&u>0?r=setTimeout(c,e-u):(r=null,n||(s=t.apply(i,a),r||(i=a=null)))};return function(){for(var a=arguments.length,u=Array(a),l=0;l<a;l++)u[l]=arguments[l];i=this,o=+new Date;var h=n&&!r;return r||(r=setTimeout(c,e)),h&&(s=t.apply(i,u),i=u=null),s}},throttle:function(t,e,n){if(1===n)var r=0;else if(2===n)var a;return function(){var i=this,o=arguments;if(1===n){var s=Date.now();s-r>e&&(t.apply(i,o),r=s)}else 2===n&&(a||(a=setTimeout((function(){a=null,t.apply(i,o)}),e)))}},recurve:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:500,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:5e3,r=0;setTimeout((function a(){++r<Math.floor(n/e)&&(t.call(this),setTimeout(a,e))}))}},O={checkStr:function(t,e){switch(e){case"phone":return/^1[3|4|5|6|7|8|9][0-9]{9}$/.test(t);case"tel":return/^(0\d{2,3}-\d{7,8})(-\d{1,4})?$/.test(t);case"card":return/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(t);case"pwd":return/^[a-zA-Z]\w{5,17}$/.test(t);case"postal":return/[1-9]\d{5}(?!\d)/.test(t);case"QQ":return/^[1-9][0-9]{4,9}$/.test(t);case"email":return/^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/.test(t);case"money":return/^\d*(?:\.\d{0,2})?$/.test(t);case"URL":return/(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?/.test(t);case"IP":return/((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d))/.test(t);case"date":return/^(\d{4})\-(\d{2})\-(\d{2}) (\d{2})(?:\:\d{2}|:(\d{2}):(\d{2}))$/.test(t)||/^(\d{4})\-(\d{2})\-(\d{2})$/.test(t);case"number":return/^[0-9]$/.test(t);case"english":return/^[a-zA-Z]+$/.test(t);case"chinese":return/^[\u4E00-\u9FA5]+$/.test(t);case"lower":return/^[a-z]+$/.test(t);case"upper":return/^[A-Z]+$/.test(t);case"HTML":return/<("[^"]*"|'[^']*'|[^'">])*>/.test(t);default:return!0}},changeCase:function(t,e){switch(e=e||4){case 1:return t.replace(/\b\w+\b/g,(function(t){return t.substring(0,1).toUpperCase()+t.substring(1).toLowerCase()}));case 2:return t.replace(/\b\w+\b/g,(function(t){return t.substring(0,1).toLowerCase()+t.substring(1).toUpperCase()}));case 3:return t.split("").map((function(t){return/[a-z]/.test(t)?t.toUpperCase():t.toLowerCase()})).join("");case 4:return t.toUpperCase();case 5:return t.toLowerCase();default:return t}},tag:function(t){for(var e=arguments.length,n=Array(e>1?e-1:0),r=1;r<e;r++)n[r-1]=arguments[r];return n=n.map((function(t){switch(u.getDataType(t)){case"Object":return t||"{}";case"Array":return t||"[]";default:return t||""}})),t.reduce((function(t,e,r){return""+t+n[r-1]+e}))},getByteLength:function(t){return t.replace(/[\u0391-\uFFE5]/g,"aa").length},subStringByte:function(t,e,n){var r=/[^\x00-\xff]/g;if(t.replace(r,"mm").length<=n)return t;for(var a=Math.floor(n/2);a<t.length;a++){var i=t.substring(e,a);if(i.replace(r,"mm").length>=n)return i}return t},asString:function(t){if(u.isEmpty(t))return"";switch(u.getDataType()){case"Object":case"Array":return JSON.stringify(t);default:return t}}},S={notNull:function(t){if(u.isEmpty())throw Error("不能为空:>>>"+t)},legalLnglat:function(t,e){if(!E.isLnglat(t,e))throw Error(i.COORDINATE_ERROR)},verify:{array:function(t){if("Array"!==u.getDataType(t))throw Error(i.PARAMETER_ERROR_ARRAY+":>>>"+t)},function:function(t){if("Function"!==u.getDataType(t))throw Error(i.PARAMETER_ERROR_FUNCTION+":>>>"+t)},object:function(t){if("Object"!==u.getDataType(t))throw Error(i.PARAMETER_ERROR_OBJECT+":>>>"+t)}},legalJSON:function(t){try{JSON.parse(t)}catch(e){throw Error(i.JSON_PARSE_ERROR+":>>>"+t)}},legalData:function(t,e){var n=O.checkStr(t,e),r="";switch(e){case"phone":r="电话";break;case"tel":r="座机";break;case"card":r="身份证";break;case"pwd":r="密码";break;case"postal":r="邮政编码";break;case"QQ":r="QQ";break;case"email":r="邮箱";break;case"money":r="金额";break;case"URL":r="网址";break;case"IP":r="IP";break;case"date":r="日期时间";break;case"number":r="数字";break;case"english":r="英文";break;case"chinese":r="中文";break;case"lower":r="小写";break;case"upper":r="大写";break;case"HTML":r="HTML标记"}if(!n)throw Error(i.PARAMETER_ERROR+":>>>不是"+r)}},A=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}();var D=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.audio=new Audio,this.audio.src=e}return A(t,[{key:"play",value:function(){!this.muted&&this.audio.play()}},{key:"pause",value:function(){this.audio.pause()}},{key:"muted",get:function(){return this.audio.muted},set:function(t){this.audio.muted=t}}]),t}(),_=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}();var x=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),"String"===u.getDataType(e)&&(e=document.querySelector("#"+e)),this.ctx=e.getContext("2d")}return _(t,[{key:"drawLine",value:function(t,e,n,r){var a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{};this.cxt.beginPath();var i=a.width||1,o=a.color||"#000";this.cxt.lineWidth=i,this.cxt.fillStyle=o,this.cxt.moveTo(t,e),this.cxt.lineTo(n,r),this.cxt.closePath(),this.cxt.fill()}},{key:"drawArc",value:function(t,e,n,r,a,i,o,s){o?(this.cxt.fillStyle=s,this.cxt.beginPath(),this.cxt.arc(t,e,n,w.degreesToRadians(r),w.degreesToRadians(a),i),this.cxt.closePath(),this.cxt.fill()):(this.cxt.strokeStyle=s,this.cxt.beginPath(),this.cxt.arc(t,e,n,w.degreesToRadians(r),w.degreesToRadians(a),i),this.cxt.stroke())}}]),t}(),T="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},I=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}();function C(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var k=function(){function t(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document;if(C(this,t),"string"==typeof e)if("<"==e.charAt(0)&&">"==e.slice(-1)){var r=e.slice(1,-1);this[0]=document.createElement(r),this.length=1}else{for(var a=n.querySelectorAll(e),i=0;i<a.length;i++)this[i]=a[i];this.length=a.length}else{if(void 0===e)return this;"function"==typeof e?this.ready(e):1==e.nodeType&&(this[0]=e,this.length=1)}}return I(t,[{key:"each",value:function(t){for(var e=0;e<this.length;e++)t(this[e],e)}},{key:"html",value:function(t){return this.each((function(e){e.innerHTML=t})),this}},{key:"css",value:function(t,e){return this.each((function(n){if("object"==(void 0===t?"undefined":T(t)))for(var r in t)"width"!=r&&"height"!=r&&"margin"!=r&&"fontSize"!=r||(n.style[r]=parseInt(t[r])+"px"),n.style[r]=t[r];else n.style[t]=e})),this}},{key:"ready",value:function(t){var e=this;document.addEventListener("DOMContentLoaded",(function(n){t.call(e,n)}))}},{key:"click",value:function(t){return this.each((function(e){var n=this;e.onclick=function(r){t.call(n,r,e)}})),this}},{key:"on",value:function(t,e){var n=this;this.each((function(r){r.removeEventListener(t,(function(t){e.call(n,t)})),r.addEventListener(t,(function(t){e.call(n,t)}))}))}},{key:"appendTo",value:function(t){if("string"==typeof t)for(var e=document.querySelectorAll(t),n=this[0],r=0;r<e.length;r++)this[r]=n.cloneNode(!0),e[r].appendChild(this[r]),this.length=e.length;else t.appendChild(this[0]);return this}}]),t}(),P=k;function L(){}window.$=function(t,e){return new k(t,e)},Object.assign(L.prototype,{addEventListener:function(t,e,n){var r=arguments.length>3&&void 0!==arguments[3]&&arguments[3];void 0===this._listeners&&(this._listeners={}),this._mutex=this._mutex||{},this._context=n;var a=this._mutex,i=this._listeners;return void 0===i[t]&&(i[t]=[]),-1===i[t].indexOf(e)&&(r&&(a[t]=e),i[t].push(e)),this},hasEventListener:function(t,e){if(void 0===this._listeners)return!1;var n=this._listeners;return void 0!==n[t]&&-1!==n[t].indexOf(e)},removeEventListener:function(t,e){if(void 0!==this._listeners){var n=this._listeners[t];if(this._mutex[t]===e&&(this._mutex[t]=null),void 0!==n){var r=n.map((function(t){return t.toString()})).indexOf(e.toString());-1!==r&&n.splice(r,1)}}},dispatchEvent:function(t){var e=this;if(void 0!==this._listeners){var n=this._listeners[t.type];if(void 0!==n){t.target=this;var r=n.slice(0);if(this._mutex[t.type])return void r.find((function(n){return n===e._mutex[t.type]})).call(this._context||this,t);for(var a=0,i=r.length;a<i;a++)r[a].call(this._context||this,t)}}},removeAllListener:function(){for(var t in this._mutex={},this._listeners)this._listeners[t]=[]}});var N=L,F=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}();var U=function(){function t(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.elements=[],new Map}return F(t,[{key:"set",value:function(t,e){Map.prototype.set.call(this,t,e),this.elements.push({key:t,value:e})}},{key:"delete",value:function(t){Map.prototype.delete.call(this,t),this.elements=this.elements.filter((function(e){return e.key!==t}))}},{key:"isEmpty",value:function(){return 0===this.size}},{key:"clear",value:function(){Map.prototype.clear.call(this),this.elements=[]}}],[{key:"fromEntries",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],n=new t;return e.forEach((function(t){Array.isArray(t)&&2===t.length&&n.set(t[0],t[1])})),n}}]),t}(),j=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}();function B(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function W(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}var G=function(t){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"ws://127.0.0.1:10088";B(this,e);var n=W(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return n.maxCheckTimes=10,n.url=t,n.checkTimes=0,n.connectStatus=!1,n.connect(),n.connCheckStatus(n.maxCheckTimes),e.instance=n,n}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),j(e,[{key:"connect",value:function(){if(this.disconnect(),this.url)try{if(console.info("创建ws连接>>>"+this.url),this.client=new WebSocket(this.url),this.client){var t=this;this.client.onopen=function(e){t.dispatchEvent({type:a.WEB_SOCKET_CONNECT,message:e})},this.client.onmessage=function(e){t.connectStatus=!0,t.dispatchEvent({type:a.WEB_SOCKET_MESSAGE,message:e})},this.client.onclose=function(e){t.dispatchEvent({type:a.WEB_SOCKET_CLOSE,message:e})},this.checkTimes===this.maxCheckTimes&&(this.client.onerror=function(e){t.dispatchEvent({type:a.WEB_SOCKET_ERROR,message:e})})}}catch(t){console.error("创建ws连接失败"+this.url+":"+t)}}},{key:"disconnect",value:function(){if(this.client)try{console.log("ws断开连接"+this.url),this.client.close(),this.client=null}catch(t){this.client=null}}},{key:"connCheckStatus",value:function(t){var e=this;this.checkTimes>t||setTimeout((function(){e.checkTimes++,e.client&&0!==e.client.readyState&&1!==e.client.readyState&&e.connect(),e.connCheckStatus(t)}),2e3)}},{key:"send",value:function(t){return this.client&&1===this.client.readyState?(this.client.send(t),!0):(console.error(this.url+"消息发送失败:"+t),!1)}},{key:"heartbeat",value:function(){var t=this;setTimeout((function(){t.client&&1===t.client.readyState&&t.send("HeartBeat"),console.log("HeartBeat,"+t.url),setTimeout(t.heartbeat,3e4)}),1e3)}}],[{key:"getInstance",value:function(){return e.instance?e.instance:Object.freeze(new e)}},{key:"_instance",get:function(){return this.getInstance()}}]),e}(N),$=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}();function q(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var Y=function(){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;if(q(this,t),this.cacheType=e,1===e)this.storage=window.localStorage;else{if(2!==e)throw new Error(i.PARAMETER_ERROR);this.storage=window.sessionStorage}}return $(t,[{key:"setItem",value:function(t,e,n){var r={key:t,value:e};if(1===this.cacheType){var a=Date.now();n&&(r.expired=a+1e3*n)}return this.storage[t]=JSON.stringify(r),r}},{key:"getItem",value:function(t){var e=this.storage.getItem(t)||null,n=JSON.parse(e)||{};if(1===this.cacheType){var r=n.expired||Date.now();if(Date.now()>r)return this.remove(t),null}return n.value}},{key:"remove",value:function(t){var e=this;t&&(t.indexOf(",")>-1?t.split(",").forEach((function(t){e.storage.removeItem(t)})):this.storage.removeItem(t))}},{key:"clear",value:function(){this.storage.clear()}}]),t}(),z=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}();function H(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var K=function(){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;H(this,t),this.magnification=e}return z(t,[{key:"_getSystem",value:function(){if(navigator.userAgent.toLowerCase().indexOf("windows")>=0)return!0}},{key:"_addHandler",value:function(t,e,n){t.addEventListener?t.addEventListener(e,n,!1):t.attachEvent?t.attachEvent("on"+e,n):t["on"+e]=n}},{key:"_correct",value:function(){var t=window.innerWidth;if("number"!=typeof t&&(t="CSS1Compat"==document.compatMode?document.documentElement.clientWidth:document.body.clientWidth),t<=750){var e=document.documentElement.clientWidth/t;document.documentElement.style.fontSize=75*this.magnification*Math.min(e,2)+"px"}else if(t>750&&t<=1200){var n=document.documentElement.clientWidth/t;document.documentElement.style.fontSize=85*this.magnification*Math.min(n,2)+"px"}else{var r=document.documentElement.clientWidth/1920;document.documentElement.style.fontSize=100*this.magnification*Math.min(r,2)+"px"}}},{key:"_watch",value:function(){var t=this;t._addHandler(window,"resize",(function(){t._correct()}))}},{key:"init",value:function(){var t=this;t._getSystem()&&(t._correct(),t._watch())}}]),t}()}])}));