gdmap-utils 1.2.3 → 1.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.husky/pre-commit +1 -1
- package/.prettierrc.json +17 -17
- package/README.md +2 -2
- package/dist/index.js +126 -6
- package/dist/index.js.map +1 -1
- package/docs/README.md +5 -0
- package/docs/classes/MapUtils.md +153 -0
- package/docs/functions/createMapUtils.md +18 -0
- package/docs/functions/initMapSource.md +14 -0
- package/docs/globals.md +11 -0
- package/examples/1_init.html +23 -23
- package/examples/2_mapInit.html +48 -48
- package/examples/3_MarkerLayer.html +565 -565
- package/examples/4_LabelMarkerLayer.html +574 -574
- package/examples/5_markerCluster.html +528 -0
- package/index.html +134 -134
- package/package.json +54 -51
- package/scripts/cleanDocs.js +220 -0
- package/scripts/mergeDocs.js +129 -0
- package/src/LayerManager.ts +65 -57
- package/src/MapSourceImport.ts +23 -23
- package/src/MapUtils.ts +329 -167
- package/src/gdMap/gdHelper.ts +113 -85
- package/src/index.ts +3 -1
- package/src/layers/baseMarkerLayer/LabelMarkerLayer.ts +240 -240
- package/src/layers/baseMarkerLayer/MarkerLayer.ts +208 -208
- package/src/layers/baseMarkerLayer/index.ts +369 -354
- package/src/layers/clusterMarkerLayer/MarkerClusterLayer.ts +53 -53
- package/src/layers/clusterMarkerLayer/index.ts +204 -177
- package/src/layers/index.ts +9 -9
- package/src/types/MapUtils.d.ts +53 -53
- package/src/types/amap.d.ts +11 -11
- package/src/types/{BaseMarkerLayer.d.ts → baseMarkerLayer.d.ts} +87 -87
- package/src/types/clusterMarkerLayer.d.ts +89 -88
- package/src/types/index.d.ts +14 -14
- package/tsconfig.json +26 -26
- package/typedoc.json +22 -0
- package/webpack.config.js +125 -126
- package/src/gdMap/gdHelper.js +0 -194
package/.husky/pre-commit
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
npx lint-staged
|
|
1
|
+
npx lint-staged
|
package/.prettierrc.json
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
{
|
|
2
|
-
"printWidth": 80,
|
|
3
|
-
"tabWidth": 2,
|
|
4
|
-
"useTabs": false,
|
|
5
|
-
"semi": true,
|
|
6
|
-
"singleQuote": true,
|
|
7
|
-
"quoteProps": "as-needed",
|
|
8
|
-
"jsxSingleQuote": false,
|
|
9
|
-
"trailingComma": "es5",
|
|
10
|
-
"bracketSpacing": true,
|
|
11
|
-
"bracketSameLine": false,
|
|
12
|
-
"arrowParens": "avoid",
|
|
13
|
-
"requirePragma": false,
|
|
14
|
-
"insertPragma": false,
|
|
15
|
-
"proseWrap": "preserve",
|
|
16
|
-
"htmlWhitespaceSensitivity": "css",
|
|
17
|
-
"endOfLine": "auto"
|
|
1
|
+
{
|
|
2
|
+
"printWidth": 80,
|
|
3
|
+
"tabWidth": 2,
|
|
4
|
+
"useTabs": false,
|
|
5
|
+
"semi": true,
|
|
6
|
+
"singleQuote": true,
|
|
7
|
+
"quoteProps": "as-needed",
|
|
8
|
+
"jsxSingleQuote": false,
|
|
9
|
+
"trailingComma": "es5",
|
|
10
|
+
"bracketSpacing": true,
|
|
11
|
+
"bracketSameLine": false,
|
|
12
|
+
"arrowParens": "avoid",
|
|
13
|
+
"requirePragma": false,
|
|
14
|
+
"insertPragma": false,
|
|
15
|
+
"proseWrap": "preserve",
|
|
16
|
+
"htmlWhitespaceSensitivity": "css",
|
|
17
|
+
"endOfLine": "auto"
|
|
18
18
|
}
|
package/README.md
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
1. 高德地图AMap常用函数:统一管理、调用。
|
|
2
|
-
2. `LabelMarker, Marker ClusterMarker`常用覆盖物统一管理
|
|
1
|
+
1. 高德地图AMap常用函数:统一管理、调用。
|
|
2
|
+
2. `LabelMarker, Marker ClusterMarker`常用覆盖物统一管理
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
!function(e,r){"object"==typeof exports&&"object"==typeof module?module.exports=r(require("@amap/amap-jsapi-loader")):"function"==typeof define&&define.amd?define("
|
|
1
|
+
!function(e,r){"object"==typeof exports&&"object"==typeof module?module.exports=r(require("@amap/amap-jsapi-loader")):"function"==typeof define&&define.amd?define("GdMapUtils",["@amap/amap-jsapi-loader"],r):"object"==typeof exports?exports.GdMapUtils=r(require("@amap/amap-jsapi-loader")):e.GdMapUtils=r(e.AMapLoader)}(this,e=>(()=>{"use strict";var r={591(r){r.exports=e}},t={};function __webpack_require__(e){var a=t[e];if(void 0!==a)return a.exports;var n=t[e]={exports:{}};return r[e](n,n.exports,__webpack_require__),n.exports}__webpack_require__.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return __webpack_require__.d(r,{a:r}),r},__webpack_require__.d=(e,r)=>{for(var t in r)__webpack_require__.o(r,t)&&!__webpack_require__.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},__webpack_require__.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),__webpack_require__.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var a={};__webpack_require__.r(a),__webpack_require__.d(a,{BaseMarkerLayer:()=>u,ClusterMarkerLayer:()=>v,MapUtils:()=>d,createMapUtils:()=>createMapUtils,initMapSource:()=>initMapSource});var n=__webpack_require__(591),o=__webpack_require__.n(n),__awaiter=function(e,r,t,a){return new(t||(t=Promise))(function(n,o){function fulfilled(e){try{step(a.next(e))}catch(e){o(e)}}function rejected(e){try{step(a.throw(e))}catch(e){o(e)}}function step(e){var r;e.done?n(e.value):(r=e.value,r instanceof t?r:new t(function(e){e(r)})).then(fulfilled,rejected)}step((a=a.apply(e,r||[])).next())})},__generator=function(e,r){var t,a,n,o={label:0,sent:function(){if(1&n[0])throw n[1];return n[1]},trys:[],ops:[]},i=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return i.next=verb(0),i.throw=verb(1),i.return=verb(2),"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function verb(s){return function(l){return function(s){if(t)throw new TypeError("Generator is already executing.");for(;i&&(i=0,s[0]&&(o=0)),o;)try{if(t=1,a&&(n=2&s[0]?a.return:s[0]?a.throw||((n=a.return)&&n.call(a),0):a.next)&&!(n=n.call(a,s[1])).done)return n;switch(a=0,n&&(s=[2&s[0],n.value]),s[0]){case 0:case 1:n=s;break;case 4:return o.label++,{value:s[1],done:!1};case 5:o.label++,a=s[1],s=[0];continue;case 7:s=o.ops.pop(),o.trys.pop();continue;default:if(!(n=o.trys,(n=n.length>0&&n[n.length-1])||6!==s[0]&&2!==s[0])){o=0;continue}if(3===s[0]&&(!n||s[1]>n[0]&&s[1]<n[3])){o.label=s[1];break}if(6===s[0]&&o.label<n[1]){o.label=n[1],n=s;break}if(n&&o.label<n[2]){o.label=n[2],o.ops.push(s);break}n[2]&&o.ops.pop(),o.trys.pop();continue}s=r.call(e,o)}catch(e){s=[6,e],a=0}finally{t=n=0}if(5&s[0])throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}([s,l])}}};const i=function(){function MapSourceImport(){}return MapSourceImport.loadScript=function(e){return __awaiter(this,void 0,void 0,function(){return __generator(this,function(r){return[2,o().load(e).then(function(e){return e}).catch(function(e){throw console.error(e),new Error(e)})]})})},MapSourceImport}();var __assign=function(){return __assign=Object.assign||function(e){for(var r,t=1,a=arguments.length;t<a;t++)for(var n in r=arguments[t])Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n]);return e},__assign.apply(this,arguments)},__rest=function(e,r){var t={};for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&r.indexOf(a)<0&&(t[a]=e[a]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var n=0;for(a=Object.getOwnPropertySymbols(e);n<a.length;n++)r.indexOf(a[n])<0&&Object.prototype.propertyIsEnumerable.call(e,a[n])&&(t[a[n]]=e[a[n]])}return t},__spreadArray=function(e,r,t){if(t||2===arguments.length)for(var a,n=0,o=r.length;n<o;n++)!a&&n in r||(a||(a=Array.prototype.slice.call(r,0,n)),a[n]=r[n]);return e.concat(a||Array.prototype.slice.call(r))};const s={
|
|
2
2
|
/**
|
|
3
3
|
* 创建高德地图标注
|
|
4
4
|
* @param {AMap.MarkerOptions} options 标注配置
|
|
@@ -35,7 +35,13 @@ Pixel:function(){for(var e,r=[],t=0;t<arguments.length;t++)r[t]=arguments[t];ret
|
|
|
35
35
|
* @param {boolean} noWrap 是否不进行标准化处理
|
|
36
36
|
* @returns {AMap.LngLat} 经纬度对象
|
|
37
37
|
*/
|
|
38
|
-
LngLat:function(e,r,t){return new AMap.LngLat(e,r,t)},createAMapInfoWindow:function(e){var r=e,t=r.isCustom,a=void 0===t||t,n=r.closeWhenClickMap,o=void 0===n||n,i=__rest(r,["isCustom","closeWhenClickMap"]);return new AMap.InfoWindow(__assign({isCustom:a,closeWhenClickMap:o},i))}
|
|
38
|
+
LngLat:function(e,r,t){return new AMap.LngLat(e,r,t)},createAMapInfoWindow:function(e){var r=e,t=r.isCustom,a=void 0===t||t,n=r.closeWhenClickMap,o=void 0===n||n,i=__rest(r,["isCustom","closeWhenClickMap"]);return new AMap.InfoWindow(__assign({isCustom:a,closeWhenClickMap:o},i))},
|
|
39
|
+
/**
|
|
40
|
+
* 创建高德地图折线
|
|
41
|
+
* @param {Object} options 折线配置
|
|
42
|
+
* @returns {AMap.Polyline} 折线对象
|
|
43
|
+
*/
|
|
44
|
+
createAMapPolyline:function(e){var r=Object.assign(e,{showDir:!0,lineJoin:"round",strokeColor:"#28F",strokeOpacity:1,strokeWeight:6});return new AMap.Polyline(r)},loadPlugins:function(e){return new Promise(function(r){AMap.plugin(e,function(){r()})})}};var LabelMarkerLayer_assign=function(){return LabelMarkerLayer_assign=Object.assign||function(e){for(var r,t=1,a=arguments.length;t<a;t++)for(var n in r=arguments[t])Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n]);return e},LabelMarkerLayer_assign.apply(this,arguments)};const l=function(){function LabelMarkerLayer(e,r){this.events=new Map,this.map=e,this.rawLayer=new AMap.LabelsLayer(LabelMarkerLayer_assign({collision:!0,opacity:1,zIndex:120,allowCollision:!0},r)),this.map.add(this.rawLayer)}
|
|
39
45
|
/**
|
|
40
46
|
* 将覆盖物数据转换为标记配置
|
|
41
47
|
* @param item 覆盖物数据
|
|
@@ -72,18 +78,44 @@ LabelMarkerLayer.prototype.on=function(e,r){this.getAllOverlay().forEach(functio
|
|
|
72
78
|
* @param overlayList 覆盖物数据列表
|
|
73
79
|
* @returns 覆盖物配置列表
|
|
74
80
|
*/
|
|
75
|
-
BaseMarkerLayer.prototype.convertOverlayDataToOpts=function(e){var r=this,t=BaseMarkerLayer.layerClassMap.get(this.layerType);return e.map(function(e,a){return t.convertOverlayDataToOvlOpts(e,a,r.getIconUrl,r.getOverlayOpts,d)})},BaseMarkerLayer.prototype.createOverlays=function(e){var r=this.convertOverlayDataToOpts(e);return this.rawLayerIns.createOverlays(r)},BaseMarkerLayer.prototype.overlayFitMap=function(){this.rawLayerIns.overlayFitMap()},BaseMarkerLayer.prototype.bindEventOverlays=function(e,r){this.rawLayerIns.bindEventOverlay(e,r)},BaseMarkerLayer.prototype.hide=function(){this.layerVisible=!1,this.rawLayerIns.hide()},BaseMarkerLayer.prototype.show=function(){this.layerVisible=!0,this.rawLayerIns.show()},BaseMarkerLayer.prototype.getAllOverlay=function(){return baseMarkerLayer_spreadArray([],this.rawLayerIns.getAllOverlay(),!0)},BaseMarkerLayer.prototype.destroy=function(){this.mapUtils.removeLayer(this),this.rawLayerIns.destroy(),this.overlayList=[]},BaseMarkerLayer.prototype.clearAllOverlay=function(){this.overlayList=[],this.rawLayerIns.clearAllOvl()},BaseMarkerLayer.prototype.reload=function(){this.rawLayerIns.reload(),this.createOverlays(this.overlayList)},BaseMarkerLayer.prototype.findLayerOverlay=function(e){return this.rawLayerIns.findLayerOverlay(e)},BaseMarkerLayer.prototype.add=function(e){var r,t=this.convertOverlayDataToOpts(e);(r=this.overlayList).push.apply(r,e),(this.rawLayerIns instanceof p||this.rawLayerIns instanceof l)&&this.rawLayerIns.add(t)},BaseMarkerLayer.prototype.remove=function(e){var r=this;if(this.rawLayerIns instanceof p){if(e[0]instanceof AMap.Marker){var t=e.map(function(e){return e.getExtData().id});this.overlayList=this.overlayList.filter(function(e){return!t.includes(e.id)}),this.rawLayerIns.remove(e)}else{var a=e.map(function(e){return r.findLayerOverlay(e)}).filter(function(e){return!!e});this.rawLayerIns.remove(a),this.overlayList=this.overlayList.filter(function(r){return!e.includes(r.id)})}}else if(this.rawLayerIns instanceof l){if(function(e){return e[0]instanceof AMap.LabelMarker}(e)){var n=e.map(function(e){return e.getExtData().id});this.overlayList=this.overlayList.filter(function(e){return!n.includes(e.id)}),this.rawLayerIns.remove(e)}else{a=e.map(function(e){return r.findLayerOverlay(e)}).filter(function(e){return!!e});this.rawLayerIns.remove(a),this.overlayList=this.overlayList.filter(function(r){return!e.includes(r.id)})}}},BaseMarkerLayer.prototype.refreshOverlayIcon=function(e){var r=this.overlayList.findIndex(function(r){return r.id===e});if(-1===r)return d.error("[BaseMarkerLayer Error]: Invalid overlayId ".concat(e));var t,a=BaseMarkerLayer.layerClassMap.get(this.layerType),n=this.rawLayerIns.findLayerOverlay(e),o=a.convertOverlayDataToOvlOpts(this.overlayList[r],r,this.getIconUrl,this.getOverlayOpts,d),i=this.getIconUrl(this.overlayList[r]);this.rawLayerIns instanceof p?("string"==typeof(t=o.icon)?t=i:t.setImage(i),this.rawLayerIns.refreshOverlayIcon(n,t)):((t=o.icon).image=i,this.rawLayerIns.refreshOverlayIcon(n,t))},BaseMarkerLayer.prototype.refreshOverlayLabel=function(e){var r=this.overlayList.findIndex(function(r){return r.id===e});if(-1===r)return d.error("[Layer Error]: Invalid overlayId ".concat(e));var t=BaseMarkerLayer.layerClassMap.get(this.layerType),a=this.rawLayerIns.findLayerOverlay(e),n=t.convertOverlayDataToOvlOpts(this.overlayList[r],r,this.getIconUrl,this.getOverlayOpts,d);this.rawLayerIns instanceof p?this.rawLayerIns.refreshOverlayLabel(a,n.label):this.rawLayerIns.refreshOverlayLabel(a,n.text)},BaseMarkerLayer.prototype.getRawLayer=function(){return this.rawLayerIns.rawLayer},BaseMarkerLayer.layerClassMap=new Map,BaseMarkerLayer}();c.registerLayer("markerLayer",p),c.registerLayer("labelMarkerLayer",l);const u=c;const f=function(){function MarkerClusterLayer(e,r,t){this.map=e,this.rawLayer=new AMap.MarkerCluster(e,r,t)}return MarkerClusterLayer.prototype.bindEventMarker=function(e,r){this.rawLayer.on(e,r)},MarkerClusterLayer.prototype.add=function(e){this.rawLayer.addData(e)},MarkerClusterLayer.prototype.remove=function(e){this.rawLayer.setData(e)},MarkerClusterLayer.prototype.hide=function(){this.rawLayer.setData([])},MarkerClusterLayer.prototype.show=function(e){this.rawLayer.setData(e)},MarkerClusterLayer.prototype.destroy=function(){this.rawLayer.setData([]),this.rawLayer.setMap(null),this.rawLayer=null},MarkerClusterLayer.prototype.clearAllOvl=function(){this.rawLayer.setData([])},MarkerClusterLayer}();var clusterMarkerLayer_rest=function(e,r){var t={};for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&r.indexOf(a)<0&&(t[a]=e[a]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var n=0;for(a=Object.getOwnPropertySymbols(e);n<a.length;n++)r.indexOf(a[n])<0&&Object.prototype.propertyIsEnumerable.call(e,a[n])&&(t[a[n]]=e[a[n]])}return t},h=function(){function ClusterMarkerLayer(e,r){this.layerVisible=!0;var t=e.layerType,a=e.layerName,n=clusterMarkerLayer_rest(e,["layerType","layerName"]),o=ClusterMarkerLayer.layerClassMap.get(t);if(!o)throw new Error("[ClusterMarkerLayer Error]: Invalid layer type ".concat(t));var i=this.convertOverlayDataToClusterData(e.overlayList);this.rawLayerIns=new o(r.map,i,e.layerOpts),this.layerName=a,this.mapUtils=r,this.overlayList=e.overlayList,this.layerType=e.layerType,Object.assign(this,n)}
|
|
81
|
+
BaseMarkerLayer.prototype.convertOverlayDataToOpts=function(e){var r=this,t=BaseMarkerLayer.layerClassMap.get(this.layerType);return e.map(function(e,a){return t.convertOverlayDataToOvlOpts(e,a,r.getIconUrl,r.getOverlayOpts,d)})},BaseMarkerLayer.prototype.createOverlays=function(e){var r=this.convertOverlayDataToOpts(e);return this.rawLayerIns.createOverlays(r)},BaseMarkerLayer.prototype.overlayFitMap=function(){this.rawLayerIns.overlayFitMap()},BaseMarkerLayer.prototype.bindEventOverlays=function(e,r){this.rawLayerIns.bindEventOverlay(e,r)},BaseMarkerLayer.prototype.hide=function(){this.layerVisible=!1,this.rawLayerIns.hide()},BaseMarkerLayer.prototype.show=function(){this.layerVisible=!0,this.rawLayerIns.show()},BaseMarkerLayer.prototype.getAllOverlay=function(){return baseMarkerLayer_spreadArray([],this.rawLayerIns.getAllOverlay(),!0)},BaseMarkerLayer.prototype.destroy=function(){this.mapUtils.removeLayer(this),this.rawLayerIns.destroy(),this.overlayList=[]},BaseMarkerLayer.prototype.clearAllOverlay=function(){this.overlayList=[],this.rawLayerIns.clearAllOvl()},BaseMarkerLayer.prototype.reload=function(){this.rawLayerIns.reload(),this.createOverlays(this.overlayList)},BaseMarkerLayer.prototype.findLayerOverlay=function(e){return this.rawLayerIns.findLayerOverlay(e)},BaseMarkerLayer.prototype.add=function(e){var r,t=this.convertOverlayDataToOpts(e);(r=this.overlayList).push.apply(r,e),(this.rawLayerIns instanceof p||this.rawLayerIns instanceof l)&&this.rawLayerIns.add(t)},BaseMarkerLayer.prototype.remove=function(e){var r=this;if(this.rawLayerIns instanceof p){if(e[0]instanceof AMap.Marker){var t=e.map(function(e){return e.getExtData().id});this.overlayList=this.overlayList.filter(function(e){return!t.includes(e.id)}),this.rawLayerIns.remove(e)}else{var a=e.map(function(e){return r.findLayerOverlay(e)}).filter(function(e){return!!e});this.rawLayerIns.remove(a),this.overlayList=this.overlayList.filter(function(r){return!e.includes(r.id)})}}else if(this.rawLayerIns instanceof l){if(function(e){return e[0]instanceof AMap.LabelMarker}(e)){var n=e.map(function(e){return e.getExtData().id});this.overlayList=this.overlayList.filter(function(e){return!n.includes(e.id)}),this.rawLayerIns.remove(e)}else{a=e.map(function(e){return r.findLayerOverlay(e)}).filter(function(e){return!!e});this.rawLayerIns.remove(a),this.overlayList=this.overlayList.filter(function(r){return!e.includes(r.id)})}}},BaseMarkerLayer.prototype.refreshOverlayIcon=function(e){var r=this.overlayList.findIndex(function(r){return r.id===e});if(-1===r)return d.error("[BaseMarkerLayer Error]: Invalid overlayId ".concat(e));var t,a=BaseMarkerLayer.layerClassMap.get(this.layerType),n=this.rawLayerIns.findLayerOverlay(e),o=a.convertOverlayDataToOvlOpts(this.overlayList[r],r,this.getIconUrl,this.getOverlayOpts,d),i=this.getIconUrl(this.overlayList[r]);this.rawLayerIns instanceof p?("string"==typeof(t=o.icon)?t=i:t.setImage(i),this.rawLayerIns.refreshOverlayIcon(n,t)):((t=o.icon).image=i,this.rawLayerIns.refreshOverlayIcon(n,t))},BaseMarkerLayer.prototype.refreshOverlayLabel=function(e){var r=this.overlayList.findIndex(function(r){return r.id===e});if(-1===r)return d.error("[Layer Error]: Invalid overlayId ".concat(e));var t=BaseMarkerLayer.layerClassMap.get(this.layerType),a=this.rawLayerIns.findLayerOverlay(e),n=t.convertOverlayDataToOvlOpts(this.overlayList[r],r,this.getIconUrl,this.getOverlayOpts,d);this.rawLayerIns instanceof p?this.rawLayerIns.refreshOverlayLabel(a,n.label):this.rawLayerIns.refreshOverlayLabel(a,n.text)},BaseMarkerLayer.prototype.getRawLayer=function(){return this.rawLayerIns.rawLayer},BaseMarkerLayer.layerClassMap=new Map,BaseMarkerLayer}();c.registerLayer("markerLayer",p),c.registerLayer("labelMarkerLayer",l);const u=c;const f=function(){function MarkerClusterLayer(e,r,t){this.map=e,this.rawLayer=new AMap.MarkerCluster(e,r,t)}return MarkerClusterLayer.prototype.bindEventMarker=function(e,r){this.rawLayer.on(e,r)},MarkerClusterLayer.prototype.add=function(e){this.rawLayer.addData(e)},MarkerClusterLayer.prototype.remove=function(e){this.rawLayer.setData(e)},MarkerClusterLayer.prototype.hide=function(){this.rawLayer.setData([])},MarkerClusterLayer.prototype.show=function(e){this.rawLayer.setData(e)},MarkerClusterLayer.prototype.destroy=function(){this.rawLayer.setData([]),this.rawLayer.setMap(null),this.rawLayer=null},MarkerClusterLayer.prototype.clearAllOvl=function(){this.rawLayer.setData([])},MarkerClusterLayer}();var clusterMarkerLayer_assign=function(){return clusterMarkerLayer_assign=Object.assign||function(e){for(var r,t=1,a=arguments.length;t<a;t++)for(var n in r=arguments[t])Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n]);return e},clusterMarkerLayer_assign.apply(this,arguments)},clusterMarkerLayer_rest=function(e,r){var t={};for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&r.indexOf(a)<0&&(t[a]=e[a]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var n=0;for(a=Object.getOwnPropertySymbols(e);n<a.length;n++)r.indexOf(a[n])<0&&Object.prototype.propertyIsEnumerable.call(e,a[n])&&(t[a[n]]=e[a[n]])}return t},h=function(){function ClusterMarkerLayer(e,r){this.layerVisible=!0;var t=e.layerType,a=e.layerName,n=clusterMarkerLayer_rest(e,["layerType","layerName"]),o=ClusterMarkerLayer.layerClassMap.get(t);if(!o)throw new Error("[ClusterMarkerLayer Error]: Invalid layer type ".concat(t));var i=this.convertOverlayDataToClusterData(e.overlayList);this.rawLayerIns=new o(r.map,i,e.layerOpts),this.layerName=a,this.mapUtils=r,this.overlayList=e.overlayList,this.layerType=e.layerType,Object.assign(this,n)}
|
|
76
82
|
/**
|
|
77
83
|
* 注册图层类型与控制器类的关联
|
|
78
84
|
* @param {string} layerType - 图层类型
|
|
79
85
|
* @param {Function} layerClass - 图层控制器类
|
|
80
|
-
|
|
86
|
+
* @ignore
|
|
87
|
+
*/return ClusterMarkerLayer.registerLayer=function(e,r){"string"==typeof e&&"function"==typeof r?ClusterMarkerLayer.layerClassMap.set(e,r):d.error("[ClusterMarkerLayer Error]: Invalid layer type or layer class")},
|
|
81
88
|
/**
|
|
82
89
|
* 将覆盖物数据转换为聚合标记所需的数据格式
|
|
83
90
|
* @param overlayList 覆盖物数据列表
|
|
84
91
|
* @returns 聚合标记数据列表
|
|
85
92
|
*/
|
|
86
|
-
ClusterMarkerLayer.prototype.convertOverlayDataToClusterData=function(e){return e.map(function(e){return{lnglat:[e.overlayData.lon,e.overlayData.lat],weight:e.overlayData.weight||1}})},ClusterMarkerLayer.prototype.bindEventOverlays=function(e,r){this.rawLayerIns.bindEventMarker(e,r)},ClusterMarkerLayer.prototype.hide=function(){this.layerVisible=!1,this.rawLayerIns.hide()},ClusterMarkerLayer.prototype.show=function(){this.layerVisible=!0;var e=this.convertOverlayDataToClusterData(this.overlayList);this.rawLayerIns.show(e)},ClusterMarkerLayer.prototype.destroy=function(){this.mapUtils.removeLayer(this),this.rawLayerIns.destroy(),this.overlayList=[]},ClusterMarkerLayer.prototype.clearAllOverlay=function(){this.overlayList=[],this.rawLayerIns.clearAllOvl()},ClusterMarkerLayer.prototype.add=function(e){var r,t=this
|
|
93
|
+
ClusterMarkerLayer.prototype.convertOverlayDataToClusterData=function(e){return e.map(function(e){return clusterMarkerLayer_assign(clusterMarkerLayer_assign({},e),{lnglat:[e.overlayData.lon,e.overlayData.lat],weight:e.overlayData.weight||1})})},ClusterMarkerLayer.prototype.bindEventOverlays=function(e,r){this.rawLayerIns.bindEventMarker(e,r)},ClusterMarkerLayer.prototype.hide=function(){this.layerVisible=!1,this.rawLayerIns.hide()},ClusterMarkerLayer.prototype.show=function(){this.layerVisible=!0;var e=this.convertOverlayDataToClusterData(this.overlayList);this.rawLayerIns.show(e)},ClusterMarkerLayer.prototype.destroy=function(){this.mapUtils.removeLayer(this),this.rawLayerIns.destroy(),this.overlayList=[]},ClusterMarkerLayer.prototype.clearAllOverlay=function(){this.overlayList=[],this.rawLayerIns.clearAllOvl()},ClusterMarkerLayer.prototype.add=function(e){var r,t=this.convertOverlayDataToClusterData(e);(r=this.overlayList).push.apply(r,e),this.rawLayerIns.add(t)},
|
|
94
|
+
/**
|
|
95
|
+
* `remove`
|
|
96
|
+
*
|
|
97
|
+
* @param {(Array<number | string>)} ovs
|
|
98
|
+
* @memberof ClusterMarkerLayer
|
|
99
|
+
*/
|
|
100
|
+
ClusterMarkerLayer.prototype.remove=function(e){if(Array.isArray(e)){var r=e;this.overlayList=this.overlayList.filter(function(e){return!r.includes(e.id)});var t=this.convertOverlayDataToClusterData(this.overlayList);this.rawLayerIns.remove(t)}},ClusterMarkerLayer.prototype.getRawLayer=function(){return this.rawLayerIns.rawLayer},ClusterMarkerLayer.layerClassMap=new Map,ClusterMarkerLayer}();h.registerLayer("markerClusterLayer",f);const v=h;const L=function(){function LayerManager(){this.layers=new Map}return LayerManager.prototype.addLayer=function(e){if(this.hasLayer(e)){var r='Layer with name "'.concat(e.layerName,'" already exists');return d.error(r)}this.layers.set(e.layerName,e)},LayerManager.prototype.removeLayer=function(e){this.layers.delete(e.layerName)},LayerManager.prototype.show=function(e){var r=this.layers.get(e);if(!r){var t='Layer with name "'.concat(e,'" not found');return d.error(t)}r.show()},LayerManager.prototype.hide=function(e){var r=this.layers.get(e);if(!r){var t='Layer with name "'.concat(e,'" not found');return d.error(t)}r.hide()},LayerManager.prototype.showAll=function(){this.layers.forEach(function(e){return e.show()})},LayerManager.prototype.hideAll=function(){this.layers.forEach(function(e){return e.hide()})},LayerManager.prototype.reload=function(){this.layers.forEach(function(e){"function"==typeof e.reload&&e.reload()})},LayerManager.prototype.hasLayer=function(e){return this.layers.has(e.layerName)},LayerManager}();var MapUtils_awaiter=function(e,r,t,a){return new(t||(t=Promise))(function(n,o){function fulfilled(e){try{step(a.next(e))}catch(e){o(e)}}function rejected(e){try{step(a.throw(e))}catch(e){o(e)}}function step(e){var r;e.done?n(e.value):(r=e.value,r instanceof t?r:new t(function(e){e(r)})).then(fulfilled,rejected)}step((a=a.apply(e,r||[])).next())})},MapUtils_generator=function(e,r){var t,a,n,o={label:0,sent:function(){if(1&n[0])throw n[1];return n[1]},trys:[],ops:[]},i=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return i.next=verb(0),i.throw=verb(1),i.return=verb(2),"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function verb(s){return function(l){return function(s){if(t)throw new TypeError("Generator is already executing.");for(;i&&(i=0,s[0]&&(o=0)),o;)try{if(t=1,a&&(n=2&s[0]?a.return:s[0]?a.throw||((n=a.return)&&n.call(a),0):a.next)&&!(n=n.call(a,s[1])).done)return n;switch(a=0,n&&(s=[2&s[0],n.value]),s[0]){case 0:case 1:n=s;break;case 4:return o.label++,{value:s[1],done:!1};case 5:o.label++,a=s[1],s=[0];continue;case 7:s=o.ops.pop(),o.trys.pop();continue;default:if(!(n=o.trys,(n=n.length>0&&n[n.length-1])||6!==s[0]&&2!==s[0])){o=0;continue}if(3===s[0]&&(!n||s[1]>n[0]&&s[1]<n[3])){o.label=s[1];break}if(6===s[0]&&o.label<n[1]){o.label=n[1],n=s;break}if(n&&o.label<n[2]){o.label=n[2],o.ops.push(s);break}n[2]&&o.ops.pop(),o.trys.pop();continue}s=r.call(e,o)}catch(e){s=[6,e],a=0}finally{t=n=0}if(5&s[0])throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}([s,l])}}},MapUtils_rest=function(e,r){var t={};for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&r.indexOf(a)<0&&(t[a]=e[a]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var n=0;for(a=Object.getOwnPropertySymbols(e);n<a.length;n++)r.indexOf(a[n])<0&&Object.prototype.propertyIsEnumerable.call(e,a[n])&&(t[a[n]]=e[a[n]])}return t},d=function(){function MapUtils(e,r){if(this.LayerManager=new L,"object"!=typeof r||!("Map"in r))throw MapUtils.error("AMap is not exist");if("mapIns"in e&&e.mapIns instanceof r.Map){e.mapIns;var t=MapUtils_rest(e,["mapIns"]);this.map=e.mapIns,this.options=t}else{if(!("mountSelector"in e))throw MapUtils.error("mountSelector is not exist");this.options=e;var a=e.mountSelector;t=MapUtils_rest(e,["mountSelector"]);this.map=this.initMap(a,t)}}
|
|
101
|
+
/**
|
|
102
|
+
* @param {AMap.EventType} type 地图事件类型
|
|
103
|
+
* @param {(e: any) => void} fn 回调函数
|
|
104
|
+
* @param {*} [context] 事件上下文,缺省为当前实例
|
|
105
|
+
* @param {boolean} [once] 事件是否执行一次
|
|
106
|
+
* @memberof MapUtils
|
|
107
|
+
*/return MapUtils.prototype.bindMapClickEvent=function(e,r,t,a){this.map.on(e,r,t,a)},MapUtils.prototype.initMap=function(e,r){return new window.AMap.Map(e,r)},MapUtils.prototype.createBaseMarkerLayer=function(e){var r=new u(e,this);return this.LayerManager.addLayer(r),r},
|
|
108
|
+
/**
|
|
109
|
+
* 高德地图中 `MarkerCluster, MassMarks`用于渲染海量点,它们调用方式也比较接近,将其聚合为一个统一的图层管理
|
|
110
|
+
* 目前, 聚合图层只包装`MarkerCluster`
|
|
111
|
+
* @param {ClusterMarkerLayerOpts<U, T>} opts - 图层配置选项
|
|
112
|
+
*/
|
|
113
|
+
MapUtils.prototype.createClusterMarkerLayer=function(e){var r=new v(e,this);return this.LayerManager.addLayer(r),r},
|
|
114
|
+
/**
|
|
115
|
+
* `removeLayer`接收图层实例将其从mapUtils的关联中移除
|
|
116
|
+
* @param {(BaseMarkerLayerIns | ClusterMarkerLayerIns)} layer
|
|
117
|
+
*/
|
|
118
|
+
MapUtils.prototype.removeLayer=function(e){this.LayerManager.hasLayer(e)?this.LayerManager.removeLayer(e):MapUtils.error("".concat(e.layerName," is not exist"))},
|
|
87
119
|
/**
|
|
88
120
|
* 根据地图上添加的覆盖物分布情况,自动缩放地图到合适的视野级别
|
|
89
121
|
* @param {Array} overlays - 覆盖物数组,缺省为全部覆盖物
|
|
@@ -91,5 +123,93 @@ ClusterMarkerLayer.prototype.convertOverlayDataToClusterData=function(e){return
|
|
|
91
123
|
* @param {Array<Number>} avoid - 四周边距,上、下、左、右
|
|
92
124
|
* @param {number} maxZoom - 最大地图zoom级别
|
|
93
125
|
*/
|
|
94
|
-
MapUtils.prototype.setFitView=function(){for(var e,r=[],t=0;t<arguments.length;t++)r[t]=arguments[t];(e=this.map).setFitView.apply(e,r)},MapUtils.prototype.clearInfoWindow=function(){this.map.clearInfoWindow()},
|
|
126
|
+
MapUtils.prototype.setFitView=function(){for(var e,r=[],t=0;t<arguments.length;t++)r[t]=arguments[t];(e=this.map).setFitView.apply(e,r)},MapUtils.prototype.clearInfoWindow=function(){this.map.clearInfoWindow()},
|
|
127
|
+
/**
|
|
128
|
+
* 地图跳转参数
|
|
129
|
+
* @typedef {Object} GotoOpts
|
|
130
|
+
* @property {number} zoom - 目标缩放级别
|
|
131
|
+
* @property {AMap.LngLat|[number,number]} center - 目标中心点(高德坐标实例或 [lng,lat] 数组)
|
|
132
|
+
* @property {boolean} [immediately=false] - 是否立即跳转,默认平滑过渡
|
|
133
|
+
* @property {number} [duration] - 过渡动画时长(毫秒)
|
|
134
|
+
*/
|
|
135
|
+
/**
|
|
136
|
+
* 将地图视图切换到指定状态
|
|
137
|
+
* @param {GotoOpts} opts 跳转配置
|
|
138
|
+
*/
|
|
139
|
+
MapUtils.prototype.seZoomAndCenter=function(e){var r=this.map.getZoom(),t=this.map.getCenter(),a=[t.lng,t.lat],n=e.center,o=void 0===n?a:n,i=e.zoom,s=void 0===i?r:i,l=e.immediately,y=e.duration;this.map.setZoomAndCenter(s,o,l,y)},
|
|
140
|
+
/**
|
|
141
|
+
* 图层`layerName`显示, `layerName`为创建图层所传递的参数,用于标识图层名称。
|
|
142
|
+
* @param {string} layerName - 图层名称
|
|
143
|
+
*/
|
|
144
|
+
MapUtils.prototype.showLayer=function(e){this.LayerManager.show(e)},
|
|
145
|
+
/**
|
|
146
|
+
* 图层`layerName`隐藏, `layerName`为创建图层所传递的参数,用于标识图层名称。
|
|
147
|
+
* @param {string} layerName - 图层名称
|
|
148
|
+
*/
|
|
149
|
+
MapUtils.prototype.hideLayer=function(e){this.LayerManager.hide(e)},MapUtils.prototype.showAllLayers=function(){this.LayerManager.showAll()},MapUtils.prototype.hideAllLayers=function(){this.LayerManager.hideAll()},MapUtils.prototype.reloadLayers=function(){this.LayerManager.reload()},
|
|
150
|
+
/**
|
|
151
|
+
* @ignore
|
|
152
|
+
* @param msg
|
|
153
|
+
*/
|
|
154
|
+
MapUtils.error=function(e){console.error("[MapUtils Error]:".concat(e))},MapUtils.createAMapMarker=s.createAMapMarker,MapUtils.createIcon=s.createIcon,MapUtils.Size=s.Size,MapUtils.Pixel=s.Pixel,MapUtils.LngLat=s.LngLat,MapUtils.createAMapInfoWindow=s.createAMapInfoWindow,MapUtils.createAMapPolyline=s.createAMapPolyline,MapUtils.loadPlugins=s.loadPlugins,MapUtils}();
|
|
155
|
+
/**
|
|
156
|
+
*
|
|
157
|
+
* `createMapUtils`功能如下:
|
|
158
|
+
* 1. 支持将高德地图实例包装成工具函数 (为其扩展功能),
|
|
159
|
+
* 2. 地图创建并为其扩展功能,
|
|
160
|
+
* 3. 高德地图依赖加载 ( 高德AMap函数加载 )
|
|
161
|
+
* @param {MapUtilsOpts[keyof MapUtilsOpts]} opts
|
|
162
|
+
* - 工具函数配置选项,支持两种模式:
|
|
163
|
+
* 1. 使用现有地图实例(MapUtilsUseExistingOpts)
|
|
164
|
+
* 2. 创建新地图实例(MapUtilsCreateOpts)
|
|
165
|
+
*
|
|
166
|
+
* [MapOptions文档地址](https://lbs.amap.com/api/javascript-api-v2/documentation#map)
|
|
167
|
+
* ```
|
|
168
|
+
* interface MapUtilsCreateOpts extends MapOptions {
|
|
169
|
+
mountSelector: string; //选择器
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
interface MapUtilsUseExistingOpts extends MapOptions {
|
|
173
|
+
mapIns: mapIns; //高德地图实例
|
|
174
|
+
}
|
|
175
|
+
* ```
|
|
176
|
+
* @param {loaderOpts} [loaderOPts]
|
|
177
|
+
* - 高德地图环境加载所传递的配置对象
|
|
178
|
+
* ```
|
|
179
|
+
* type loaderOpts = {
|
|
180
|
+
key: string;
|
|
181
|
+
version: string;
|
|
182
|
+
plugins?: string[] | undefined;
|
|
183
|
+
AMapUI?: {
|
|
184
|
+
version?: string | undefined;
|
|
185
|
+
plugins?: string[] | undefined;
|
|
186
|
+
} | undefined;
|
|
187
|
+
Loca?: {
|
|
188
|
+
version?: string | undefined;
|
|
189
|
+
} | undefined;
|
|
190
|
+
}
|
|
191
|
+
* ```
|
|
192
|
+
* @return {*}
|
|
193
|
+
*/
|
|
194
|
+
function createMapUtils(e,r){return MapUtils_awaiter(this,void 0,void 0,function(){var t;return MapUtils_generator(this,function(a){switch(a.label){case 0:return t=window.AMap,r?[4,initMapSource(r)]:[3,2];case 1:t=a.sent(),a.label=2;case 2:return[2,new d(e,t)]}})})}
|
|
195
|
+
/**
|
|
196
|
+
*
|
|
197
|
+
* @param {loaderOpts} Opts
|
|
198
|
+
* - 高德地图环境加载所传递的配置对象
|
|
199
|
+
* ```
|
|
200
|
+
* type loaderOpts = {
|
|
201
|
+
key: string;
|
|
202
|
+
version: string;
|
|
203
|
+
plugins?: string[] | undefined;
|
|
204
|
+
AMapUI?: {
|
|
205
|
+
version?: string | undefined;
|
|
206
|
+
plugins?: string[] | undefined;
|
|
207
|
+
} | undefined;
|
|
208
|
+
Loca?: {
|
|
209
|
+
version?: string | undefined;
|
|
210
|
+
} | undefined;
|
|
211
|
+
}
|
|
212
|
+
* ```
|
|
213
|
+
* @return {*}
|
|
214
|
+
*/function initMapSource(e){return MapUtils_awaiter(this,void 0,void 0,function(){return MapUtils_generator(this,function(r){switch(r.label){case 0:return[4,i.loadScript(e)];case 1:return[2,r.sent()]}})})}return a})());
|
|
95
215
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","mappings":"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","sources":["webpack://MapUtils/webpack/universalModuleDefinition","webpack://MapUtils/external umd {\"commonjs\":\"@amap/amap-jsapi-loader\",\"commonjs2\":\"@amap/amap-jsapi-loader\",\"amd\":\"@amap/amap-jsapi-loader\",\"root\":\"AMapLoader\"}","webpack://MapUtils/webpack/bootstrap","webpack://MapUtils/webpack/runtime/compat get default export","webpack://MapUtils/webpack/runtime/define property getters","webpack://MapUtils/webpack/runtime/hasOwnProperty shorthand","webpack://MapUtils/webpack/runtime/make namespace object","webpack://MapUtils/./src/MapSourceImport.ts","webpack://MapUtils/./src/gdMap/gdHelper.ts","webpack://MapUtils/./src/layers/baseMarkerLayer/LabelMarkerLayer.ts","webpack://MapUtils/./src/layers/baseMarkerLayer/MarkerLayer.ts","webpack://MapUtils/./src/layers/baseMarkerLayer/index.ts","webpack://MapUtils/./src/layers/clusterMarkerLayer/MarkerClusterLayer.ts","webpack://MapUtils/./src/layers/clusterMarkerLayer/index.ts","webpack://MapUtils/./src/LayerManager.ts","webpack://MapUtils/./src/MapUtils.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"@amap/amap-jsapi-loader\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"MapUtils\", [\"@amap/amap-jsapi-loader\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"MapUtils\"] = factory(require(\"@amap/amap-jsapi-loader\"));\n\telse\n\t\troot[\"MapUtils\"] = factory(root[\"AMapLoader\"]);\n})(this, (__WEBPACK_EXTERNAL_MODULE__591__) => {\nreturn ","module.exports = __WEBPACK_EXTERNAL_MODULE__591__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import AMapLoader from '@amap/amap-jsapi-loader';\r\nimport type { AMap, loaderOpts } from './types/amap.d.ts'; //TODO 项目配置ts自动引入,移除导入信息\r\n\r\nclass MapSourceImport {\r\n static async loadScript(opts: loaderOpts) {\r\n // 某些API加载前必须设置秘钥\r\n // window._AMapSecurityConfig = {\r\n // securityJsCode: process.env.VUE_APP_GD_MAP_CODE, // 安全密钥\r\n // };\r\n // 确保每次的AMap都是合法的所以不分开创建\r\n return AMapLoader.load(opts)\r\n .then((rawAMap: typeof AMap) => {\r\n // 将 AMap 全局对象挂载到 window 上\r\n return rawAMap;\r\n })\r\n .catch(e => {\r\n console.error(e);\r\n throw new Error(e);\r\n });\r\n }\r\n}\r\n\r\nexport default MapSourceImport;\r\n","const gdHelperMixin = {\r\n /**\r\n * 创建高德地图标注\r\n * @param {AMap.MarkerOptions} options 标注配置\r\n * @returns {AMap.Marker} 标注对象\r\n */\r\n createAMapMarker(options: AMap.MarkerOptions): AMap.Marker {\r\n return new AMap.Marker({\r\n ...options,\r\n });\r\n },\r\n\r\n /**\r\n * 创建一个图标\r\n * @param {[number, number]} size - 图标尺寸,格式为 [width, height]\r\n * @param {string} image - 图片的 URL 地址\r\n * @param {[number, number]} imageSize - 图标所用图片的大小,格式为 [width, height]\r\n * @param {[number, number]} imageOffset - 图标取图的偏移量,格式为 [x, y]\r\n * @returns {AMap.Icon} 图标对象\r\n */\r\n createIcon(opts: {\r\n size: [number, number];\r\n image: string;\r\n imageSize: [number, number];\r\n imageOffset: [number, number];\r\n }): AMap.Icon {\r\n return new AMap.Icon({\r\n size: this.Size(...opts.size),\r\n image: opts.image,\r\n imageSize: this.Size(...opts.imageSize),\r\n imageOffset: this.Pixel(...opts.imageOffset),\r\n });\r\n },\r\n\r\n /**\r\n * 地物对象的像素尺寸\r\n * @param {number} width 宽度\r\n * @param {number} height 高度\r\n * @returns {AMap.Size} 尺寸对象\r\n */\r\n Size(width: number, height: number): AMap.Size {\r\n return new AMap.Size(width, height);\r\n },\r\n\r\n /**\r\n * 像素坐标,确定地图上的一个像素点\r\n * @param {number} x x坐标\r\n * @param {number} y y坐标\r\n * @returns {AMap.Pixel} 像素对象\r\n */\r\n Pixel(...rest: [number, number]): AMap.Pixel {\r\n return new AMap.Pixel(...rest);\r\n },\r\n\r\n /**\r\n * 经纬度坐标,用来描述地图上的一个点位置\r\n * @param {number} lng 经度值\r\n * @param {number} lat 纬度值\r\n * @param {boolean} noWrap 是否不进行标准化处理\r\n * @returns {AMap.LngLat} 经纬度对象\r\n */\r\n LngLat(lng: number, lat: number, noWrap?: boolean): AMap.LngLat {\r\n return new AMap.LngLat(lng, lat, noWrap);\r\n },\r\n\r\n /*\r\n 创建点位信息窗体\r\n */\r\n createAMapInfoWindow(opts: ConstructorParameters<typeof AMap.InfoWindow>[0]) {\r\n const defIsCustom = true;\r\n const defCloseWhenClickMap = true;\r\n const {\r\n isCustom = defIsCustom,\r\n closeWhenClickMap = defCloseWhenClickMap,\r\n ...rest\r\n } = opts!;\r\n return new AMap.InfoWindow({\r\n isCustom,\r\n closeWhenClickMap,\r\n ...rest,\r\n });\r\n },\r\n};\r\n\r\nexport default gdHelperMixin;\r\n","import type { OverlaysLayer, mapIns, OverlayData } from '@/types';\r\nimport type { MapUtilsConstructor } from '@/MapUtils';\r\nimport { MapUtils } from '@/MapUtils';\r\n\r\nclass LabelMarkerLayer {\r\n rawLayer: AMap.LabelsLayer;\r\n\r\n map: mapIns;\r\n\r\n events = new Map<AMap.EventType, () => void>();\r\n\r\n constructor(map: mapIns, opts?: AMap.LabelsLayerOptions) {\r\n this.map = map;\r\n\r\n this.rawLayer = new AMap.LabelsLayer({\r\n collision: true,\r\n opacity: 1,\r\n zIndex: 120,\r\n allowCollision: true,\r\n ...opts,\r\n });\r\n\r\n this.map.add(this.rawLayer);\r\n }\r\n\r\n /**\r\n * 将覆盖物数据转换为标记配置\r\n * @param item 覆盖物数据\r\n * @param index 索引\r\n * @param getIconUrl 获取图标URL的方法\r\n * @param getOverlayOpts 动态获取覆盖物配置的方法\r\n * @param MapUtils MapUtils构造函数\r\n * @returns 标记配置\r\n */\r\n static convertOverlayDataToOvlOpts<U extends {}>(\r\n item: OverlayData<U>,\r\n index: number,\r\n getIconUrl: (item: OverlayData<U>) => string,\r\n getOverlayOpts: (\r\n item: OverlayData<U>,\r\n index: number,\r\n MapUtils: MapUtilsConstructor\r\n ) => any,\r\n MapUtils: MapUtilsConstructor\r\n ): AMap.LabelMarkerOptions {\r\n const {\r\n overlayData: { lon, lat, extData, title },\r\n } = item;\r\n\r\n // 获取当前覆盖物项的动态配置\r\n const itemOpts = getOverlayOpts(item, index, MapUtils);\r\n\r\n const ovlOpts: AMap.LabelMarkerOptions = {\r\n position: [lon, lat],\r\n extData,\r\n ...itemOpts,\r\n };\r\n\r\n if (!item.labelShowed) {\r\n const textOpts = ovlOpts.text ?? {\r\n content: title,\r\n direction: 'top',\r\n style: {\r\n fontSize: 16,\r\n strokeWidth: 5,\r\n },\r\n zooms: [5, 20],\r\n };\r\n\r\n textOpts.content = '';\r\n\r\n ovlOpts.text = textOpts;\r\n } else {\r\n ovlOpts.text = ovlOpts.text ?? {\r\n content: title,\r\n direction: 'top',\r\n style: {\r\n fontSize: 16,\r\n strokeWidth: 5,\r\n },\r\n zooms: [5, 20],\r\n };\r\n }\r\n\r\n const imageUrl = getIconUrl(item);\r\n\r\n const icon = {\r\n image: '',\r\n size: [25, 34] as [number, number],\r\n anchor: 'bottom-center',\r\n };\r\n\r\n ovlOpts.icon = ovlOpts.icon ?? icon;\r\n\r\n ovlOpts.icon.image = imageUrl;\r\n\r\n return ovlOpts as AMap.LabelMarkerOptions;\r\n }\r\n\r\n bindEventOverlay(clickType: AMap.EventType, callback: () => void) {\r\n if (typeof callback !== 'function') {\r\n MapUtils.error('Please provide an event callback function');\r\n return;\r\n }\r\n\r\n this.on(clickType, callback);\r\n\r\n this.events.set(clickType, callback);\r\n }\r\n\r\n addOverlayBindEvent(marker: InstanceType<typeof AMap.LabelMarker>) {\r\n this.events.forEach((callback, clickType) => {\r\n marker.on(clickType, callback);\r\n });\r\n }\r\n\r\n createOverlays(ovOptList: Array<AMap.LabelMarkerOptions>) {\r\n const labelMarkers = ovOptList.map(item => {\r\n const labelMarker = new AMap.LabelMarker(item); //包装吗?\r\n this.addOverlayBindEvent(labelMarker);\r\n return labelMarker;\r\n });\r\n\r\n //@ts-expect-error\r\n this.rawLayer.add(labelMarkers);\r\n\r\n return labelMarkers;\r\n }\r\n\r\n add(markers: Array<AMap.LabelMarkerOptions>) {\r\n this.createOverlays(markers);\r\n }\r\n\r\n remove(markers: Array<AMap.LabelMarker>) {\r\n //@ts-expect-error\r\n this.rawLayer.remove(markers);\r\n }\r\n\r\n hide() {\r\n this.rawLayer.hide();\r\n }\r\n\r\n show() {\r\n this.rawLayer.show();\r\n }\r\n\r\n getAllOverlay(): AMap.LabelMarker[] {\r\n //@ts-expect-error\r\n return this.rawLayer.getAllOverlays();\r\n }\r\n\r\n destroy() {\r\n // @ts-expect-error\r\n this.rawLayer.clear();\r\n\r\n this.map.remove(this.rawLayer);\r\n //@ts-expect-error\r\n this.rawLayer = null;\r\n }\r\n\r\n reload() {\r\n // @ts-expect-error\r\n this.rawLayer.clear();\r\n }\r\n\r\n clearAllOvl() {\r\n // @ts-expect-error\r\n this.rawLayer.clear();\r\n }\r\n\r\n overlayFitMap() {\r\n const labelMarkers = this.getAllOverlay();\r\n this.map.setFitView(labelMarkers);\r\n }\r\n\r\n findLayerOverlay(markerId: string | number) {\r\n if (!markerId) {\r\n MapUtils.error('Please provide a markerId');\r\n return null;\r\n }\r\n\r\n const labelMarkers: InstanceType<typeof AMap.LabelMarker>[] =\r\n this.getAllOverlay();\r\n\r\n const labelMarker = labelMarkers.find(item => {\r\n return item.getExtData().id === markerId;\r\n });\r\n\r\n return labelMarker;\r\n }\r\n\r\n refreshOverlayIcon(\r\n labelMarker: InstanceType<typeof AMap.LabelMarker>,\r\n iconOpts: AMap.LabelMarkerIconOptions\r\n ) {\r\n if (!labelMarker) {\r\n MapUtils.error('labelMarker is not found');\r\n return;\r\n }\r\n\r\n labelMarker.setIcon(iconOpts);\r\n }\r\n\r\n refreshOverlayLabel(\r\n labelMarker: InstanceType<typeof AMap.LabelMarker>,\r\n labelOpts?: AMap.LabelMarkerTextOptions\r\n ) {\r\n if (!labelMarker) {\r\n MapUtils.error('labelMarker is not found');\r\n return;\r\n }\r\n\r\n if (labelOpts) {\r\n labelMarker.setText(labelOpts);\r\n } else {\r\n const currentLabel = labelMarker.getText();\r\n labelMarker.setText({\r\n ...currentLabel,\r\n content: '', //清空可以生效吗\r\n });\r\n }\r\n }\r\n\r\n /**\r\n *\r\n * labelLayer不存在on方法\r\n * @param {AMap.EventType} clickType 事件类型\r\n * @param {() => void} callback 事件函数\r\n * @memberof LabelMarkerLayer\r\n */\r\n on(clickType: AMap.EventType, callback: () => void) {\r\n const labelMarkers = this.getAllOverlay();\r\n\r\n labelMarkers.forEach(labelMarker => {\r\n labelMarker.on(clickType, callback);\r\n });\r\n }\r\n}\r\n\r\nexport default LabelMarkerLayer;\r\n","import type { OverlaysLayer, mapIns, OverlayData } from '@/types/index.d';\r\nimport { MapUtils } from '@/MapUtils';\r\nimport type { MapUtilsConstructor } from '@/MapUtils';\r\n\r\n// 接口约束类暂时去掉implements OverlaysLayer<AMap.Marker, AMap.OverlayGroup>\r\nclass MarkerLayer {\r\n rawLayer = new AMap.OverlayGroup();\r\n\r\n map: mapIns;\r\n\r\n events = new Map<AMap.EventType, () => void>();\r\n\r\n constructor(map: mapIns) {\r\n this.map = map;\r\n //@ts-ignore\r\n this.map.add(this.rawLayer);\r\n }\r\n\r\n /**\r\n * 将覆盖物数据转换为标记配置\r\n * @param item 覆盖物数据\r\n * @param index 索引\r\n * @param getIconUrl 获取图标URL的方法\r\n * @param getOverlayOpts 动态获取覆盖物配置的方法\r\n * @param MapUtils MapUtils构造函数\r\n * @returns 标记配置\r\n */\r\n static convertOverlayDataToOvlOpts<U extends {}>(\r\n item: OverlayData<U>,\r\n index: number,\r\n getIconUrl: (item: OverlayData<U>) => string,\r\n getOverlayOpts: (\r\n item: OverlayData<U>,\r\n index: number,\r\n MapUtils: MapUtilsConstructor\r\n ) => any,\r\n MapUtils: MapUtilsConstructor\r\n ): AMap.MarkerOptions {\r\n const {\r\n overlayData: { lon, lat, extData },\r\n } = item;\r\n\r\n // 获取当前覆盖物项的动态配置\r\n const itemOpts = getOverlayOpts(item, index, MapUtils);\r\n\r\n const ovlOpts: AMap.MarkerOptions = {\r\n position: [lon, lat],\r\n extData,\r\n ...itemOpts,\r\n };\r\n\r\n if (!item.labelShowed) {\r\n ovlOpts.label = undefined;\r\n } else {\r\n ovlOpts.label = ovlOpts.label ?? {\r\n content: `<div class=\"markerLayer\">${item.overlayData.title}</div>`,\r\n offset: MapUtils.Pixel(0, -5),\r\n direction: 'top',\r\n };\r\n }\r\n\r\n ovlOpts.icon =\r\n ovlOpts.icon ??\r\n MapUtils.createIcon({\r\n size: [25, 34],\r\n image: '',\r\n imageSize: [25, 34],\r\n imageOffset: [0, 0],\r\n });\r\n\r\n const imageUrl = getIconUrl(item);\r\n\r\n if (typeof ovlOpts.icon === 'string') {\r\n ovlOpts.icon = imageUrl;\r\n } else {\r\n (ovlOpts.icon as AMap.Icon).setImage(imageUrl);\r\n }\r\n\r\n return ovlOpts as AMap.MarkerOptions;\r\n }\r\n\r\n bindEventOverlay(clickType: AMap.EventType, callback: () => void) {\r\n if (typeof callback !== 'function') {\r\n MapUtils.error('Please provide an event callback function');\r\n return;\r\n }\r\n\r\n // 获取地图的所有点位,绑定上事件\r\n this.rawLayer.on(clickType, callback);\r\n\r\n // 保存事件\r\n this.events.set(clickType, callback);\r\n }\r\n //高德地图,marker新添加会自动绑定事件\r\n addOverlayBindEvent(marker: InstanceType<typeof AMap.Marker>) {\r\n this.events.forEach((callback, clickType) => {\r\n marker.on(clickType, callback);\r\n });\r\n }\r\n\r\n createOverlays(ovOptList: Array<AMap.MarkerOptions>) {\r\n const markers = ovOptList.map(item => MapUtils.createAMapMarker(item));\r\n\r\n this.rawLayer.addOverlays(markers);\r\n\r\n return markers;\r\n }\r\n\r\n add(markers: Array<AMap.MarkerOptions>) {\r\n this.createOverlays(markers);\r\n }\r\n\r\n remove(markers: Array<AMap.Marker>) {\r\n this.rawLayer.removeOverlays(markers);\r\n }\r\n\r\n hide() {\r\n this.rawLayer.hide();\r\n }\r\n\r\n show() {\r\n this.rawLayer.show();\r\n }\r\n\r\n getAllOverlay(): Array<AMap.Marker> {\r\n return this.rawLayer.getOverlays();\r\n }\r\n\r\n destroy() {\r\n this.rawLayer.clearOverlays();\r\n //@ts-expect-error\r\n this.rawLayer.setMap(null);\r\n //@ts-expect-error\r\n this.rawLayer = null;\r\n }\r\n\r\n reload() {\r\n this.rawLayer.clearOverlays();\r\n }\r\n\r\n clearAllOvl() {\r\n this.rawLayer.clearOverlays();\r\n }\r\n\r\n overlayFitMap() {\r\n const makers = this.getAllOverlay();\r\n\r\n this.map.setFitView(makers);\r\n }\r\n\r\n findLayerOverlay(markerId: string | number) {\r\n if (!markerId) {\r\n MapUtils.error('Please provide a markerId');\r\n return;\r\n }\r\n\r\n const markers: InstanceType<typeof AMap.Marker>[] = this.getAllOverlay();\r\n\r\n const marker = markers.find(item => {\r\n return item.getExtData().id === markerId;\r\n });\r\n\r\n return marker; // 如果没有找到,返回null\r\n }\r\n\r\n // 设置激活的marker\r\n refreshOverlayIcon(\r\n marker: InstanceType<typeof AMap.Marker>,\r\n icon: string | AMap.Icon\r\n ) {\r\n if (!marker) {\r\n // 如果没有找到对应的marker\r\n return MapUtils.error('marker is not found');\r\n }\r\n // 获取点击的标记对象\r\n marker.setIcon(icon);\r\n }\r\n\r\n /* \r\n DOM过多页面会卡顿, 用到才创建\r\n */\r\n refreshOverlayLabel(\r\n marker: InstanceType<typeof AMap.Marker>,\r\n labelOpts?: {\r\n content: string;\r\n direction: string;\r\n offset: [number, number] | Array<number>;\r\n }\r\n ) {\r\n if (!marker) {\r\n // 如果没有找到对应的marker\r\n return MapUtils.error('marker is not found');\r\n }\r\n\r\n if (labelOpts) {\r\n marker.setLabel(labelOpts);\r\n } else {\r\n let labelOpts = marker.getLabel();\r\n\r\n marker.setLabel({\r\n ...labelOpts,\r\n content: '',\r\n });\r\n }\r\n }\r\n}\r\n\r\nexport default MarkerLayer;\r\n","import LabelMarkerLayer from './LabelMarkerLayer';\r\nimport MarkerLayer from './MarkerLayer';\r\nimport type {\r\n MarkerLayerBaseType,\r\n LayerOpts,\r\n BaseMarkerLayerInfo,\r\n OverlayData,\r\n} from '@/types';\r\nimport { MapUtils } from '@/MapUtils';\r\nimport type { MapUtilsConstructor, mapUtilsIns } from '@/MapUtils';\r\n\r\nclass BaseMarkerLayer<\r\n U extends object,\r\n T extends MarkerLayerBaseType = 'markerLayer',\r\n V extends BaseMarkerLayerInfo[T] = BaseMarkerLayerInfo[T],\r\n> {\r\n // 图层类型与控制器类的映射关系\r\n static layerClassMap = new Map<string, BaseMarkerLayerTypeClass>();\r\n /**\r\n * 注册图层类型与控制器类的关联\r\n * @param {string} layerType - 图层类型\r\n * @param {Function} layerClass - 图层控制器类\r\n */\r\n static registerLayer(\r\n layerType: MarkerLayerBaseType,\r\n layerClass: BaseMarkerLayerTypeClass\r\n ) {\r\n if (typeof layerType !== 'string' || typeof layerClass !== 'function') {\r\n MapUtils.error('[LayerManager Error]: Invalid layer type or layer class');\r\n return;\r\n }\r\n\r\n BaseMarkerLayer.layerClassMap.set(layerType, layerClass);\r\n }\r\n\r\n overlayList: Array<OverlayData<U>>;\r\n // 策略模式\r\n rawLayerIns: V['layerIns'];\r\n\r\n layerVisible: boolean = true;\r\n\r\n layerName: string;\r\n\r\n mapUtils: mapUtilsIns;\r\n\r\n getIconUrl: (item: OverlayData<U>) => string;\r\n\r\n layerType: MarkerLayerBaseType;\r\n\r\n getOverlayOpts: (\r\n item: OverlayData<U>,\r\n index: number,\r\n MapUtils: MapUtilsConstructor\r\n ) => V['overlayOpts'];\r\n\r\n constructor(opts: LayerOpts<U, T>, mapUtils: mapUtilsIns) {\r\n const { layerType, layerName, ...rest } = opts;\r\n\r\n const OverlaysLayer = BaseMarkerLayer.layerClassMap.get(layerType);\r\n\r\n if (OverlaysLayer) {\r\n this.rawLayerIns = new OverlaysLayer(mapUtils.map, opts.overlayLayer);\r\n } else {\r\n throw new Error(\r\n `[BaseMarkerLayer Error]: Invalid layer type ${layerType}`\r\n );\r\n }\r\n\r\n this.layerName = layerName;\r\n\r\n this.mapUtils = mapUtils; //上层,mapUtils的实例\r\n\r\n this.overlayList = opts.overlayList;\r\n\r\n this.getIconUrl = opts.getIconUrl;\r\n\r\n this.getOverlayOpts = opts.getOverlayOpts;\r\n\r\n this.layerType = opts.layerType;\r\n\r\n Object.assign(this, rest);\r\n\r\n this.initLayer();\r\n }\r\n\r\n // 图层事件,覆盖物初始化\r\n initLayer() {\r\n this.createOverlays(this.overlayList);\r\n }\r\n\r\n /**\r\n * 将覆盖物数据转换为覆盖物配置\r\n * @param overlayList 覆盖物数据列表\r\n * @returns 覆盖物配置列表\r\n */\r\n convertOverlayDataToOpts(\r\n overlayList: Array<OverlayData<U>>\r\n ): Array<V['overlayOpts']> {\r\n const OverlaysLayer = BaseMarkerLayer.layerClassMap.get(this.layerType)!;\r\n\r\n return overlayList.map((item, index) => {\r\n return OverlaysLayer.convertOverlayDataToOvlOpts(\r\n item,\r\n index,\r\n this.getIconUrl,\r\n this.getOverlayOpts,\r\n MapUtils\r\n );\r\n });\r\n }\r\n\r\n createOverlays(overlayList: Array<OverlayData>): Array<V['ovIns']> {\r\n const markerListOpts: Array<V['overlayOpts']> =\r\n this.convertOverlayDataToOpts(overlayList as Array<OverlayData<U>>);\r\n\r\n return this.rawLayerIns.createOverlays(\r\n // @ts-ignore\r\n markerListOpts\r\n );\r\n }\r\n\r\n overlayFitMap() {\r\n this.rawLayerIns.overlayFitMap();\r\n }\r\n\r\n bindEventOverlays(clickType: AMap.EventType, callback: () => void) {\r\n this.rawLayerIns.bindEventOverlay(clickType, callback);\r\n }\r\n\r\n hide() {\r\n this.layerVisible = false;\r\n this.rawLayerIns.hide();\r\n }\r\n\r\n show() {\r\n this.layerVisible = true;\r\n this.rawLayerIns.show();\r\n }\r\n\r\n getAllOverlay() {\r\n // 数据进行D会影响覆盖物,浅拷贝\r\n return [...this.rawLayerIns.getAllOverlay()!];\r\n }\r\n\r\n destroy() {\r\n // @ts-ignore\r\n this.mapUtils.removeLayer(this); //从MapUtils中移除\r\n this.rawLayerIns.destroy(); //地图层面移除\r\n this.overlayList = [];\r\n\r\n //TODO layer实例怎么销毁\r\n }\r\n\r\n clearAllOverlay() {\r\n this.overlayList = [];\r\n this.rawLayerIns.clearAllOvl();\r\n }\r\n\r\n reload() {\r\n this.rawLayerIns.reload();\r\n\r\n this.createOverlays(this.overlayList);\r\n }\r\n\r\n findLayerOverlay(ovId: string | number) {\r\n return this.rawLayerIns.findLayerOverlay(ovId);\r\n }\r\n\r\n add(overlayList: Array<OverlayData<U>>) {\r\n const markerListOpts: Array<V['overlayOpts']> =\r\n this.convertOverlayDataToOpts(overlayList as Array<OverlayData<U>>);\r\n\r\n this.overlayList.push(...overlayList);\r\n // 类型守卫 缩小实例范围\r\n if (this.rawLayerIns instanceof MarkerLayer) {\r\n this.rawLayerIns.add(markerListOpts as AMap.MarkerOptions[]);\r\n } else if (this.rawLayerIns instanceof LabelMarkerLayer) {\r\n this.rawLayerIns.add(markerListOpts as AMap.LabelMarkerOptions[]);\r\n }\r\n }\r\n\r\n remove(ovs: Array<V['ovIns']> | string[]) {\r\n // 处理MarkerLayer类型\r\n if (this.rawLayerIns instanceof MarkerLayer) {\r\n // 类型守卫:检查是否为Marker实例数组\r\n const isMarkerArray = (arr: any[]): arr is AMap.Marker[] =>\r\n arr[0] instanceof AMap.Marker;\r\n\r\n if (!isMarkerArray(ovs)) {\r\n // 根据ID查找覆盖物实例\r\n const overlayInstances = ovs\r\n .map(id => this.findLayerOverlay(id as string | number))\r\n .filter((ovl): ovl is AMap.Marker => !!ovl);\r\n\r\n this.rawLayerIns.remove(overlayInstances);\r\n\r\n this.overlayList = this.overlayList.filter(\r\n item => !(ovs as Array<string | number>).includes(item.id)\r\n );\r\n } else {\r\n const ids = ovs.map(item => item.getExtData().id);\r\n\r\n this.overlayList = this.overlayList.filter(\r\n item => !(ids as Array<string | number>).includes(item.id)\r\n );\r\n // 直接使用覆盖物实例数组\r\n this.rawLayerIns.remove(ovs as AMap.Marker[]);\r\n }\r\n }\r\n // 处理LabelMarkerLayer类型\r\n else if (this.rawLayerIns instanceof LabelMarkerLayer) {\r\n // 类型守卫:检查是否为LabelMarker实例数组\r\n const isLabelMarkerArray = (arr: any[]): arr is AMap.LabelMarker[] =>\r\n arr[0] instanceof AMap.LabelMarker;\r\n\r\n if (!isLabelMarkerArray(ovs)) {\r\n // 根据ID查找覆盖物实例\r\n const overlayInstances = ovs\r\n .map(id => this.findLayerOverlay(id as string | number))\r\n .filter((ovl): ovl is AMap.LabelMarker => !!ovl);\r\n\r\n this.rawLayerIns.remove(overlayInstances);\r\n\r\n this.overlayList = this.overlayList.filter(\r\n item => !(ovs as Array<string | number>).includes(item.id)\r\n );\r\n } else {\r\n const ids = ovs.map(item => item.getExtData().id);\r\n\r\n this.overlayList = this.overlayList.filter(\r\n item => !(ids as Array<string | number>).includes(item.id)\r\n );\r\n // 直接使用覆盖物实例数组\r\n this.rawLayerIns.remove(ovs as AMap.LabelMarker[]);\r\n }\r\n }\r\n }\r\n\r\n refreshOverlayIcon(overlayId: string) {\r\n const ovlDataIndex = this.overlayList.findIndex(\r\n ovl => ovl.id === overlayId\r\n );\r\n\r\n if (ovlDataIndex === -1) {\r\n //抛异常\r\n return MapUtils.error(\r\n `[BaseMarkerLayer Error]: Invalid overlayId ${overlayId}`\r\n );\r\n }\r\n const OvlLayer = BaseMarkerLayer.layerClassMap.get(this.layerType);\r\n\r\n const marker = this.rawLayerIns.findLayerOverlay(overlayId);\r\n // 函数可以动态计算label,\r\n const ovlOpts = OvlLayer!.convertOverlayDataToOvlOpts(\r\n this.overlayList[ovlDataIndex],\r\n ovlDataIndex,\r\n this.getIconUrl,\r\n this.getOverlayOpts,\r\n MapUtils\r\n );\r\n\r\n const iconImageUrl = this.getIconUrl(this.overlayList[ovlDataIndex]);\r\n\r\n if (this.rawLayerIns instanceof MarkerLayer) {\r\n let icon = ovlOpts.icon! as AMap.Icon | string;\r\n\r\n if (typeof icon === 'string') {\r\n icon = iconImageUrl;\r\n } else {\r\n (icon as AMap.Icon).setImage(iconImageUrl);\r\n }\r\n\r\n (this.rawLayerIns as MarkerLayerIns).refreshOverlayIcon(\r\n (marker as AMap.Marker)!,\r\n icon\r\n );\r\n } else {\r\n let icon = ovlOpts.icon! as AMap.LabelMarkerIconOptions;\r\n\r\n icon.image = iconImageUrl;\r\n\r\n this.rawLayerIns.refreshOverlayIcon((marker as AMap.LabelMarker)!, icon);\r\n }\r\n }\r\n\r\n refreshOverlayLabel(overlayId: string | number) {\r\n const ovlDataIndex = this.overlayList.findIndex(\r\n ovl => ovl.id === overlayId\r\n );\r\n\r\n if (ovlDataIndex === -1) {\r\n //抛异常\r\n return MapUtils.error(`[Layer Error]: Invalid overlayId ${overlayId}`);\r\n }\r\n const OvlLayer = BaseMarkerLayer.layerClassMap.get(this.layerType);\r\n\r\n // marker拿到手\r\n const marker = this.rawLayerIns.findLayerOverlay(overlayId)!;\r\n\r\n // 函数可以动态计算label,\r\n const ovlOpts = OvlLayer!.convertOverlayDataToOvlOpts(\r\n this.overlayList[ovlDataIndex],\r\n ovlDataIndex,\r\n this.getIconUrl,\r\n this.getOverlayOpts,\r\n MapUtils\r\n );\r\n\r\n if (this.rawLayerIns instanceof MarkerLayer) {\r\n this.rawLayerIns.refreshOverlayLabel(\r\n marker as AMap.Marker,\r\n (ovlOpts as AMap.MarkerOptions).label as {\r\n content: string;\r\n direction: string;\r\n offset: [number, number] | Array<number>;\r\n }\r\n );\r\n } else {\r\n this.rawLayerIns.refreshOverlayLabel(\r\n marker as AMap.LabelMarker,\r\n ovlOpts.text as AMap.LabelMarkerTextOptions\r\n );\r\n }\r\n }\r\n\r\n // 返回原始图层对象\r\n getRawLayer() {\r\n return this.rawLayerIns.rawLayer;\r\n }\r\n}\r\n\r\nBaseMarkerLayer.registerLayer('markerLayer', MarkerLayer);\r\nBaseMarkerLayer.registerLayer('labelMarkerLayer', LabelMarkerLayer);\r\n\r\n// MarkerLayer 类型\r\nexport type MarkerLayerIns = InstanceType<typeof MarkerLayer>;\r\n\r\n// LabelMarkerLayer 类型\r\nexport type LabelMarkerLayerIns = InstanceType<typeof LabelMarkerLayer>;\r\n\r\n// 所有图层类型的联合类型\r\nexport type BaseMarkerLayerTypeIns = MarkerLayerIns | LabelMarkerLayerIns;\r\n\r\nexport type BaseMarkerLayerTypeClass =\r\n | typeof MarkerLayer\r\n | typeof LabelMarkerLayer;\r\n\r\nexport type BaseMarkerLayerClass = typeof BaseMarkerLayer;\r\n\r\nexport type BaseMarkerLayerIns = InstanceType<BaseMarkerLayerClass>;\r\n\r\nexport { LabelMarkerLayer, MarkerLayer };\r\n\r\nexport default BaseMarkerLayer;\r\n","import type {\r\n mapIns,\r\n MarkerClusterDataOptions,\r\n MarkerClusterOptions,\r\n} from '@/types/index.d';\r\n\r\nclass MarkerClusterLayer {\r\n rawLayer: any; //高德未提供cluster的类型\r\n\r\n map: mapIns;\r\n\r\n constructor(\r\n map: mapIns,\r\n dataOptions: Array<MarkerClusterDataOptions>,\r\n opts: MarkerClusterOptions\r\n ) {\r\n this.map = map;\r\n //@ts-expect-error\r\n this.rawLayer = new AMap.MarkerCluster(map, dataOptions, opts);\r\n }\r\n\r\n bindEventMarker(clickType: AMap.EventType, callback: () => void) {\r\n this.rawLayer.on(clickType, callback);\r\n }\r\n\r\n add(dataOption: MarkerClusterDataOptions) {\r\n this.rawLayer.addData(dataOption);\r\n }\r\n\r\n remove(dataOptions: Array<MarkerClusterDataOptions>) {\r\n this.rawLayer.setData(dataOptions);\r\n }\r\n\r\n hide() {\r\n this.rawLayer.setData([]);\r\n }\r\n\r\n show(dataOptions: Array<MarkerClusterDataOptions>) {\r\n this.rawLayer.setData(dataOptions);\r\n }\r\n\r\n destroy() {\r\n this.rawLayer.setData([]);\r\n this.rawLayer.setMap(null);\r\n this.rawLayer = null;\r\n }\r\n\r\n clearAllOvl() {\r\n this.rawLayer.setData([]);\r\n }\r\n}\r\n\r\nexport default MarkerClusterLayer;\r\n","import MarkerClusterLayer from './MarkerClusterLayer';\r\nimport type {\r\n MarkerClusterLayerType,\r\n OverlayData, //OverLayerData图层公共接口\r\n MarkerClusterDataOptions,\r\n ClusterMarkerLayerInfo,\r\n ClusterMarkerLayerOpts,\r\n} from '@/types';\r\nimport { MapUtils } from '@/MapUtils';\r\nimport type { mapUtilsIns } from '@/MapUtils';\r\n\r\nclass ClusterMarkerLayer<\r\n U extends object,\r\n T extends MarkerClusterLayerType = 'markerClusterLayer',\r\n V extends ClusterMarkerLayerInfo[T] = ClusterMarkerLayerInfo[T],\r\n> {\r\n // 图层类型与控制器类的映射关系\r\n static layerClassMap = new Map<string, ClusterMarkerLayerTypeClass>();\r\n /**\r\n * 注册图层类型与控制器类的关联\r\n * @param {string} layerType - 图层类型\r\n * @param {Function} layerClass - 图层控制器类\r\n */\r\n static registerLayer(\r\n layerType: MarkerClusterLayerType,\r\n layerClass: ClusterMarkerLayerTypeClass\r\n ) {\r\n if (typeof layerType !== 'string' || typeof layerClass !== 'function') {\r\n MapUtils.error('[LayerManager Error]: Invalid layer type or layer class');\r\n return;\r\n }\r\n\r\n ClusterMarkerLayer.layerClassMap.set(layerType, layerClass);\r\n }\r\n\r\n overlayList: Array<OverlayData<U>>;\r\n // 策略模式\r\n rawLayerIns: V['layerIns'];\r\n\r\n layerVisible: boolean = true;\r\n\r\n layerName: string;\r\n\r\n mapUtils: mapUtilsIns;\r\n\r\n layerType: MarkerClusterLayerType;\r\n\r\n constructor(opts: ClusterMarkerLayerOpts<U, T>, mapUtils: mapUtilsIns) {\r\n const { layerType, layerName, ...rest } = opts;\r\n\r\n const OverlaysLayer = ClusterMarkerLayer.layerClassMap.get(layerType);\r\n\r\n if (OverlaysLayer) {\r\n // 将OverlayData转换为MarkerClusterDataOptions\r\n const clusterData = this.convertOverlayDataToClusterData(\r\n opts.overlayList\r\n );\r\n\r\n this.rawLayerIns = new OverlaysLayer(\r\n mapUtils.map,\r\n clusterData,\r\n opts.layerOpts\r\n );\r\n } else {\r\n throw new Error(\r\n `[ClusterMarkerLayer Error]: Invalid layer type ${layerType}`\r\n );\r\n }\r\n\r\n this.layerName = layerName;\r\n\r\n this.mapUtils = mapUtils; //上层,mapUtils的实例\r\n\r\n this.overlayList = opts.overlayList;\r\n\r\n this.layerType = opts.layerType;\r\n\r\n Object.assign(this, rest);\r\n }\r\n\r\n /**\r\n * 将覆盖物数据转换为聚合标记所需的数据格式\r\n * @param overlayList 覆盖物数据列表\r\n * @returns 聚合标记数据列表\r\n */\r\n private convertOverlayDataToClusterData(\r\n overlayList: Array<OverlayData<U>>\r\n ): Array<MarkerClusterDataOptions> {\r\n return overlayList.map(item => {\r\n return {\r\n lnglat: [item.overlayData.lon, item.overlayData.lat],\r\n weight: item.overlayData.weight || 1,\r\n };\r\n });\r\n }\r\n\r\n bindEventOverlays(clickType: AMap.EventType, callback: () => void) {\r\n this.rawLayerIns.bindEventMarker(clickType, callback);\r\n }\r\n\r\n hide() {\r\n this.layerVisible = false;\r\n this.rawLayerIns.hide();\r\n }\r\n\r\n show() {\r\n this.layerVisible = true;\r\n const clusterData = this.convertOverlayDataToClusterData(this.overlayList);\r\n this.rawLayerIns.show(clusterData);\r\n }\r\n\r\n destroy() {\r\n // @ts-ignore\r\n this.mapUtils.removeLayer(this); //从MapUtils中移除\r\n this.rawLayerIns.destroy(); //地图层面移除\r\n this.overlayList = [];\r\n }\r\n\r\n clearAllOverlay() {\r\n this.overlayList = [];\r\n this.rawLayerIns.clearAllOvl();\r\n }\r\n\r\n add(overlayList: Array<OverlayData<U>>) {\r\n const clusterData = this.convertOverlayDataToClusterData(overlayList);\r\n\r\n this.overlayList.push(...overlayList);\r\n\r\n // 逐个添加聚合数据\r\n clusterData.forEach(data => {\r\n this.rawLayerIns.add(data);\r\n });\r\n }\r\n\r\n remove(ovs: Array<number | string>) {\r\n if (Array.isArray(ovs)) {\r\n // 根据ID移除覆盖物\r\n const ids = ovs as Array<string | number>;\r\n\r\n // 更新本地覆盖物列表\r\n this.overlayList = this.overlayList.filter(\r\n item => !ids.includes(item.id)\r\n );\r\n\r\n // 重新设置聚合数据\r\n const clusterData = this.convertOverlayDataToClusterData(\r\n this.overlayList\r\n );\r\n this.rawLayerIns.remove(clusterData);\r\n }\r\n // 聚合图层不支持直接移除单个实例\r\n }\r\n\r\n // 返回原始图层对象\r\n getRawLayer() {\r\n return this.rawLayerIns.rawLayer;\r\n }\r\n}\r\n\r\n// 注册聚合图层类型\r\nClusterMarkerLayer.registerLayer('markerClusterLayer', MarkerClusterLayer);\r\n\r\n// MarkerClusterLayer 类型\r\nexport type MarkerClusterLayerIns = InstanceType<typeof MarkerClusterLayer>;\r\n\r\n// 所有聚合图层类型的联合类型\r\nexport type ClusterMarkerLayerTypeIns = MarkerClusterLayerIns;\r\n\r\nexport type ClusterMarkerLayerTypeClass = typeof MarkerClusterLayer;\r\n\r\nexport type ClusterMarkerLayerClass = typeof ClusterMarkerLayer;\r\n\r\nexport type ClusterMarkerLayerIns = InstanceType<ClusterMarkerLayerClass>;\r\n\r\nexport { MarkerClusterLayer };\r\n\r\nexport default ClusterMarkerLayer;\r\n","import type {\r\n BaseMarkerLayerClass,\r\n ClusterMarkerLayerClass,\r\n} from '@/layers/index.ts';\r\n\r\ntype LayerIns =\r\n | InstanceType<BaseMarkerLayerClass>\r\n | InstanceType<ClusterMarkerLayerClass>;\r\nexport class LayerManager {\r\n layers: Map<string, LayerIns> = new Map(); //组合模式\r\n\r\n addLayer(layer: LayerIns) {\r\n if (this.hasLayer(layer)) {\r\n throw new Error(`Layer with name \"${layer.layerName}\" already exists`);\r\n }\r\n this.layers.set(layer.layerName, layer);\r\n }\r\n\r\n removeLayer(layer: LayerIns) {\r\n this.layers.delete(layer.layerName);\r\n }\r\n\r\n show(LayerName: string) {\r\n let layer = this.layers.get(LayerName);\r\n if (layer) {\r\n layer.show();\r\n }\r\n }\r\n\r\n hide(LayerName: string) {\r\n let layer = this.layers.get(LayerName);\r\n if (layer) {\r\n layer.hide();\r\n }\r\n }\r\n\r\n showAll() {\r\n this.layers.forEach(val => val.show());\r\n }\r\n\r\n hideAll() {\r\n this.layers.forEach(val => val.hide());\r\n }\r\n\r\n reload() {\r\n this.layers.forEach(val => {\r\n if (typeof (val as any).reload === 'function') {\r\n (val as any).reload();\r\n }\r\n });\r\n }\r\n\r\n hasLayer(layer: LayerIns): boolean {\r\n return this.layers.has(layer.layerName);\r\n }\r\n}\r\nexport default LayerManager;\r\n","import MapSourceImport from './MapSourceImport';\r\nimport MapMixin from './gdMap/gdHelper';\r\nimport type { AMap as gdAMap, loaderOpts, MapOptions } from './types/amap.d';\r\nimport type {\r\n MapUtilsOpts,\r\n mapIns,\r\n MarkerLayerBaseType,\r\n MarkerClusterLayerType,\r\n LayerOpts,\r\n ClusterMarkerLayerOpts,\r\n} from './types/index.d';\r\nimport { BaseMarkerLayer, ClusterMarkerLayer } from './layers/index';\r\nimport type { BaseMarkerLayerIns, ClusterMarkerLayerIns } from './layers';\r\nimport type { SetOptional, Simplify } from 'type-fest';\r\nimport LayerManager from './LayerManager';\r\n\r\ntype MapUtilsConstructor = typeof MapUtils;\r\n\r\ntype mapUtilsIns = InstanceType<typeof MapUtils>;\r\n\r\nexport class MapUtils {\r\n // 地图实例信息\r\n map: mapIns;\r\n\r\n options: SetOptional<MapUtilsOpts['MapUtilsCreateOpts'], 'mountSelector'>;\r\n\r\n LayerManager: LayerManager = new LayerManager();\r\n\r\n static createAMapMarker = MapMixin.createAMapMarker;\r\n\r\n static createIcon = MapMixin.createIcon;\r\n\r\n static Size = MapMixin.Size;\r\n\r\n static Pixel = MapMixin.Pixel;\r\n\r\n static LngLat = MapMixin.LngLat;\r\n\r\n static createAMapInfoWindow = MapMixin.createAMapInfoWindow;\r\n\r\n constructor(\r\n opts: MapUtilsOpts[keyof MapUtilsOpts],\r\n AMap: Simplify<typeof gdAMap>\r\n ) {\r\n if (!(typeof AMap === 'object' && 'Map' in AMap)) {\r\n throw MapUtils.error('AMap is not exist');\r\n }\r\n\r\n if ('mapIns' in opts && opts.mapIns instanceof AMap.Map) {\r\n const { mapIns, ...rest } = opts;\r\n this.map = opts.mapIns;\r\n this.options = rest;\r\n } else {\r\n if (!('mountSelector' in opts)) {\r\n throw MapUtils.error('mountSelector is not exist');\r\n } else {\r\n this.options = opts;\r\n\r\n const { mountSelector, ...rest } = opts;\r\n\r\n this.map = this.initMap(mountSelector, rest); //地图初始化\r\n }\r\n }\r\n\r\n this.bindMapClickEvent();\r\n }\r\n\r\n // 初始化绑定地图事件\r\n bindMapClickEvent() {\r\n this.map.on('click', () => {\r\n // if (this.clickMapRestMarkers) {\r\n // this.overlayGroupManagerMap.forEach((overlayGroup) => {\r\n // overlayGroup.resetActiveMarker(); // 清除图层上的所有覆盖物\r\n // });\r\n // }\r\n });\r\n }\r\n\r\n initMap(id: string, opts: MapOptions): mapIns {\r\n //参数要作检验吗\r\n return new window.AMap.Map(id, opts);\r\n }\r\n\r\n createBaseMarkerLayer<\r\n U extends {},\r\n T extends MarkerLayerBaseType = 'markerLayer',\r\n >(opts: LayerOpts<U, T>) {\r\n const layer = new BaseMarkerLayer<U, T>(opts, this);\r\n // @ts-ignore\r\n this.LayerManager.addLayer(layer);\r\n return layer;\r\n }\r\n\r\n createClusterMarkerLayer<\r\n U extends {},\r\n T extends MarkerClusterLayerType = 'markerClusterLayer',\r\n >(opts: ClusterMarkerLayerOpts<U, T>) {\r\n const layer = new ClusterMarkerLayer<U, T>(opts, this);\r\n\r\n this.LayerManager.addLayer(layer);\r\n return layer;\r\n }\r\n\r\n removeLayer(layer: BaseMarkerLayerIns | ClusterMarkerLayerIns) {\r\n const isLayerExist = this.LayerManager.hasLayer(layer);\r\n\r\n if (isLayerExist) {\r\n this.LayerManager.removeLayer(layer);\r\n } else {\r\n MapUtils.error(`${layer.layerName} is not exist`);\r\n }\r\n }\r\n\r\n /**\r\n * 根据地图上添加的覆盖物分布情况,自动缩放地图到合适的视野级别\r\n * @param {Array} overlays - 覆盖物数组,缺省为全部覆盖物\r\n * @param {Boolean} immediately - 是否立即过渡\r\n * @param {Array<Number>} avoid - 四周边距,上、下、左、右\r\n * @param {number} maxZoom - 最大地图zoom级别\r\n */\r\n setFitView(...opts: Parameters<mapIns['setFitView']>): void {\r\n this.map.setFitView(...opts);\r\n }\r\n\r\n clearInfoWindow() {\r\n this.map.clearInfoWindow();\r\n }\r\n\r\n seZoomAndCenter(opts: {\r\n zoom: number;\r\n center: AMap.LngLat | [number, number];\r\n immediately?: boolean;\r\n duration?: number;\r\n }): void {\r\n const curZoom = this.map.getZoom();\r\n const lngAndLat = this.map.getCenter();\r\n const curCenter: [number, number] = [lngAndLat.lng, lngAndLat.lat];\r\n let { center = curCenter, zoom = curZoom, immediately, duration } = opts;\r\n\r\n this.map.setZoomAndCenter(zoom, center, immediately, duration);\r\n }\r\n\r\n static error(msg: string) {\r\n console.error(`[MapUtils Error]:${msg}`);\r\n }\r\n}\r\n\r\nexport type { mapUtilsIns, MapUtilsConstructor };\r\n\r\nexport async function createMapUtils(\r\n opts: MapUtilsOpts[keyof MapUtilsOpts],\r\n loaderOPts?: loaderOpts\r\n) {\r\n // window上存在属性已经加载\r\n let AMap = window.AMap;\r\n\r\n if (loaderOPts) {\r\n AMap = await initMapSource(loaderOPts);\r\n }\r\n\r\n return new MapUtils(opts, AMap);\r\n}\r\n\r\n// 地图拆分\r\nexport async function initMapSource(Opts: loaderOpts) {\r\n return await MapSourceImport.loadScript(Opts);\r\n}\r\n"],"names":["root","factory","exports","module","require","define","amd","this","__WEBPACK_EXTERNAL_MODULE__591__","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","n","getter","__esModule","d","a","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","r","Symbol","toStringTag","value","loadScript","opts","then","rawAMap","catch","e","console","error","Error","createAMapMarker","options","AMap","Marker","createIcon","Icon","size","Size","image","imageSize","imageOffset","Pixel","width","height","rest","LngLat","lng","lat","noWrap","createAMapInfoWindow","isCustom","closeWhenClickMap","InfoWindow","map","events","Map","rawLayer","LabelsLayer","collision","opacity","zIndex","allowCollision","add","convertOverlayDataToOvlOpts","item","index","getIconUrl","getOverlayOpts","MapUtils","lon","extData","title","itemOpts","ovlOpts","position","labelShowed","text","content","direction","style","fontSize","strokeWidth","zooms","textOpts","imageUrl","icon","anchor","bindEventOverlay","clickType","callback","on","set","addOverlayBindEvent","marker","forEach","createOverlays","ovOptList","labelMarkers","labelMarker","LabelMarker","markers","remove","hide","show","getAllOverlay","getAllOverlays","destroy","clear","reload","clearAllOvl","overlayFitMap","setFitView","findLayerOverlay","markerId","find","getExtData","id","refreshOverlayIcon","iconOpts","setIcon","refreshOverlayLabel","labelOpts","setText","currentLabel","getText","OverlayGroup","label","overlayData","offset","setImage","addOverlays","removeOverlays","getOverlays","clearOverlays","setMap","makers","setLabel","getLabel","mapUtils","layerVisible","layerType","layerName","OverlaysLayer","BaseMarkerLayer","layerClassMap","rawLayerIns","overlayLayer","overlayList","assign","initLayer","registerLayer","layerClass","convertOverlayDataToOpts","markerListOpts","bindEventOverlays","removeLayer","clearAllOverlay","ovId","push","ovs","filter","includes","overlayInstances","ovl","arr","isLabelMarkerArray","overlayId","ovlDataIndex","findIndex","OvlLayer","iconImageUrl","getRawLayer","dataOptions","MarkerCluster","bindEventMarker","dataOption","addData","setData","ClusterMarkerLayer","clusterData","convertOverlayDataToClusterData","layerOpts","lnglat","weight","data","Array","isArray","layers","addLayer","layer","hasLayer","delete","LayerName","showAll","val","hideAll","has","LayerManager","mapIns","mountSelector","initMap","bindMapClickEvent","window","createBaseMarkerLayer","createClusterMarkerLayer","clearInfoWindow","seZoomAndCenter","curZoom","getZoom","lngAndLat","getCenter","curCenter","center","zoom","immediately","duration","setZoomAndCenter","msg","createMapUtils","loaderOPts","initMapSource","Opts"],"ignoreList":[],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"index.js","mappings":"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","sources":["webpack://GdMapUtils/webpack/universalModuleDefinition","webpack://GdMapUtils/external umd {\"commonjs\":\"@amap/amap-jsapi-loader\",\"commonjs2\":\"@amap/amap-jsapi-loader\",\"amd\":\"@amap/amap-jsapi-loader\",\"root\":\"AMapLoader\"}","webpack://GdMapUtils/webpack/bootstrap","webpack://GdMapUtils/webpack/runtime/compat get default export","webpack://GdMapUtils/webpack/runtime/define property getters","webpack://GdMapUtils/webpack/runtime/hasOwnProperty shorthand","webpack://GdMapUtils/webpack/runtime/make namespace object","webpack://GdMapUtils/./src/MapSourceImport.ts","webpack://GdMapUtils/./src/gdMap/gdHelper.ts","webpack://GdMapUtils/./src/layers/baseMarkerLayer/LabelMarkerLayer.ts","webpack://GdMapUtils/./src/layers/baseMarkerLayer/MarkerLayer.ts","webpack://GdMapUtils/./src/layers/baseMarkerLayer/index.ts","webpack://GdMapUtils/./src/layers/clusterMarkerLayer/MarkerClusterLayer.ts","webpack://GdMapUtils/./src/layers/clusterMarkerLayer/index.ts","webpack://GdMapUtils/./src/LayerManager.ts","webpack://GdMapUtils/./src/MapUtils.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"@amap/amap-jsapi-loader\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"GdMapUtils\", [\"@amap/amap-jsapi-loader\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"GdMapUtils\"] = factory(require(\"@amap/amap-jsapi-loader\"));\n\telse\n\t\troot[\"GdMapUtils\"] = factory(root[\"AMapLoader\"]);\n})(this, (__WEBPACK_EXTERNAL_MODULE__591__) => {\nreturn ","module.exports = __WEBPACK_EXTERNAL_MODULE__591__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import AMapLoader from '@amap/amap-jsapi-loader';\nimport type { AMap, loaderOpts } from './types/amap.d.ts'; //TODO 项目配置ts自动引入,移除导入信息\n\nclass MapSourceImport {\n static async loadScript(opts: loaderOpts) {\n // 某些API加载前必须设置秘钥\n // window._AMapSecurityConfig = {\n // securityJsCode: process.env.VUE_APP_GD_MAP_CODE, // 安全密钥\n // };\n // 确保每次的AMap都是合法的所以不分开创建\n return AMapLoader.load(opts)\n .then((rawAMap: typeof AMap) => {\n // 将 AMap 全局对象挂载到 window 上\n return rawAMap;\n })\n .catch(e => {\n console.error(e);\n throw new Error(e);\n });\n }\n}\n\nexport default MapSourceImport;\n","const gdHelperMixin = {\n /**\n * 创建高德地图标注\n * @param {AMap.MarkerOptions} options 标注配置\n * @returns {AMap.Marker} 标注对象\n */\n createAMapMarker(options: AMap.MarkerOptions): AMap.Marker {\n return new AMap.Marker({\n ...options,\n });\n },\n\n /**\n * 创建一个图标\n * @param {[number, number]} size - 图标尺寸,格式为 [width, height]\n * @param {string} image - 图片的 URL 地址\n * @param {[number, number]} imageSize - 图标所用图片的大小,格式为 [width, height]\n * @param {[number, number]} imageOffset - 图标取图的偏移量,格式为 [x, y]\n * @returns {AMap.Icon} 图标对象\n */\n createIcon(opts: {\n size: [number, number];\n image: string;\n imageSize: [number, number];\n imageOffset: [number, number];\n }): AMap.Icon {\n return new AMap.Icon({\n size: this.Size(...opts.size),\n image: opts.image,\n imageSize: this.Size(...opts.imageSize),\n imageOffset: this.Pixel(...opts.imageOffset),\n });\n },\n\n /**\n * 地物对象的像素尺寸\n * @param {number} width 宽度\n * @param {number} height 高度\n * @returns {AMap.Size} 尺寸对象\n */\n Size(width: number, height: number): AMap.Size {\n return new AMap.Size(width, height);\n },\n\n /**\n * 像素坐标,确定地图上的一个像素点\n * @param {number} x x坐标\n * @param {number} y y坐标\n * @returns {AMap.Pixel} 像素对象\n */\n Pixel(...rest: [number, number]): AMap.Pixel {\n return new AMap.Pixel(...rest);\n },\n\n /**\n * 经纬度坐标,用来描述地图上的一个点位置\n * @param {number} lng 经度值\n * @param {number} lat 纬度值\n * @param {boolean} noWrap 是否不进行标准化处理\n * @returns {AMap.LngLat} 经纬度对象\n */\n LngLat(lng: number, lat: number, noWrap?: boolean): AMap.LngLat {\n return new AMap.LngLat(lng, lat, noWrap);\n },\n\n /*\n 创建点位信息窗体\n */\n createAMapInfoWindow(opts: ConstructorParameters<typeof AMap.InfoWindow>[0]) {\n const defIsCustom = true;\n const defCloseWhenClickMap = true;\n const {\n isCustom = defIsCustom,\n closeWhenClickMap = defCloseWhenClickMap,\n ...rest\n } = opts!;\n return new AMap.InfoWindow({\n isCustom,\n closeWhenClickMap,\n ...rest,\n });\n },\n\n /**\n * 创建高德地图折线\n * @param {Object} options 折线配置\n * @returns {AMap.Polyline} 折线对象\n */\n createAMapPolyline(options: AMap.PolylineOptions) {\n const defOpts = {\n showDir: true,\n lineJoin: 'round',\n strokeColor: '#28F', //蓝色\n strokeOpacity: 1, //线透明度\n strokeWeight: 6,\n };\n\n const opts = Object.assign(options, defOpts);\n\n return new AMap.Polyline(opts);\n },\n\n loadPlugins(plugins: string | string[]) {\n return new Promise(resolve => {\n AMap.plugin(plugins, function () {\n //@ts-expect-error\n resolve();\n });\n });\n },\n};\n\nexport default gdHelperMixin;\n","import type { OverlaysLayer, mapIns, OverlayData } from '@/types';\nimport type { MapUtilsConstructor } from '@/MapUtils';\nimport { MapUtils } from '@/MapUtils';\n\nclass LabelMarkerLayer {\n rawLayer: AMap.LabelsLayer;\n\n map: mapIns;\n\n events = new Map<AMap.EventType, () => void>();\n\n constructor(map: mapIns, opts?: AMap.LabelsLayerOptions) {\n this.map = map;\n\n this.rawLayer = new AMap.LabelsLayer({\n collision: true,\n opacity: 1,\n zIndex: 120,\n allowCollision: true,\n ...opts,\n });\n\n this.map.add(this.rawLayer);\n }\n\n /**\n * 将覆盖物数据转换为标记配置\n * @param item 覆盖物数据\n * @param index 索引\n * @param getIconUrl 获取图标URL的方法\n * @param getOverlayOpts 动态获取覆盖物配置的方法\n * @param MapUtils MapUtils构造函数\n * @returns 标记配置\n */\n static convertOverlayDataToOvlOpts<U extends {}>(\n item: OverlayData<U>,\n index: number,\n getIconUrl: (item: OverlayData<U>) => string,\n getOverlayOpts: (\n item: OverlayData<U>,\n index: number,\n MapUtils: MapUtilsConstructor\n ) => any,\n MapUtils: MapUtilsConstructor\n ): AMap.LabelMarkerOptions {\n const {\n overlayData: { lon, lat, extData, title },\n } = item;\n\n // 获取当前覆盖物项的动态配置\n const itemOpts = getOverlayOpts(item, index, MapUtils);\n\n const ovlOpts: AMap.LabelMarkerOptions = {\n position: [lon, lat],\n extData,\n ...itemOpts,\n };\n\n if (!item.labelShowed) {\n const textOpts = ovlOpts.text ?? {\n content: title,\n direction: 'top',\n style: {\n fontSize: 16,\n strokeWidth: 5,\n },\n zooms: [5, 20],\n };\n\n textOpts.content = '';\n\n ovlOpts.text = textOpts;\n } else {\n ovlOpts.text = ovlOpts.text ?? {\n content: title,\n direction: 'top',\n style: {\n fontSize: 16,\n strokeWidth: 5,\n },\n zooms: [5, 20],\n };\n }\n\n const imageUrl = getIconUrl(item);\n\n const icon = {\n image: '',\n size: [25, 34] as [number, number],\n anchor: 'bottom-center',\n };\n\n ovlOpts.icon = ovlOpts.icon ?? icon;\n\n ovlOpts.icon.image = imageUrl;\n\n return ovlOpts as AMap.LabelMarkerOptions;\n }\n\n bindEventOverlay(clickType: AMap.EventType, callback: () => void) {\n if (typeof callback !== 'function') {\n MapUtils.error('Please provide an event callback function');\n return;\n }\n\n this.on(clickType, callback);\n\n this.events.set(clickType, callback);\n }\n\n addOverlayBindEvent(marker: InstanceType<typeof AMap.LabelMarker>) {\n this.events.forEach((callback, clickType) => {\n marker.on(clickType, callback);\n });\n }\n\n createOverlays(ovOptList: Array<AMap.LabelMarkerOptions>) {\n const labelMarkers = ovOptList.map(item => {\n const labelMarker = new AMap.LabelMarker(item); //包装吗?\n this.addOverlayBindEvent(labelMarker);\n return labelMarker;\n });\n\n //@ts-expect-error\n this.rawLayer.add(labelMarkers);\n\n return labelMarkers;\n }\n\n add(markers: Array<AMap.LabelMarkerOptions>) {\n this.createOverlays(markers);\n }\n\n remove(markers: Array<AMap.LabelMarker>) {\n //@ts-expect-error\n this.rawLayer.remove(markers);\n }\n\n hide() {\n this.rawLayer.hide();\n }\n\n show() {\n this.rawLayer.show();\n }\n\n getAllOverlay(): AMap.LabelMarker[] {\n //@ts-expect-error\n return this.rawLayer.getAllOverlays();\n }\n\n destroy() {\n // @ts-expect-error\n this.rawLayer.clear();\n\n this.map.remove(this.rawLayer);\n //@ts-expect-error\n this.rawLayer = null;\n }\n\n reload() {\n // @ts-expect-error\n this.rawLayer.clear();\n }\n\n clearAllOvl() {\n // @ts-expect-error\n this.rawLayer.clear();\n }\n\n overlayFitMap() {\n const labelMarkers = this.getAllOverlay();\n this.map.setFitView(labelMarkers);\n }\n\n findLayerOverlay(markerId: string | number) {\n if (!markerId) {\n MapUtils.error('Please provide a markerId');\n return null;\n }\n\n const labelMarkers: InstanceType<typeof AMap.LabelMarker>[] =\n this.getAllOverlay();\n\n const labelMarker = labelMarkers.find(item => {\n return item.getExtData().id === markerId;\n });\n\n return labelMarker;\n }\n\n refreshOverlayIcon(\n labelMarker: InstanceType<typeof AMap.LabelMarker>,\n iconOpts: AMap.LabelMarkerIconOptions\n ) {\n if (!labelMarker) {\n MapUtils.error('labelMarker is not found');\n return;\n }\n\n labelMarker.setIcon(iconOpts);\n }\n\n refreshOverlayLabel(\n labelMarker: InstanceType<typeof AMap.LabelMarker>,\n labelOpts?: AMap.LabelMarkerTextOptions\n ) {\n if (!labelMarker) {\n MapUtils.error('labelMarker is not found');\n return;\n }\n\n if (labelOpts) {\n labelMarker.setText(labelOpts);\n } else {\n const currentLabel = labelMarker.getText();\n labelMarker.setText({\n ...currentLabel,\n content: '', //清空可以生效吗\n });\n }\n }\n\n /**\n *\n * labelLayer不存在on方法\n * @param {AMap.EventType} clickType 事件类型\n * @param {() => void} callback 事件函数\n * @memberof LabelMarkerLayer\n */\n on(clickType: AMap.EventType, callback: () => void) {\n const labelMarkers = this.getAllOverlay();\n\n labelMarkers.forEach(labelMarker => {\n labelMarker.on(clickType, callback);\n });\n }\n}\n\nexport default LabelMarkerLayer;\n","import type { OverlaysLayer, mapIns, OverlayData } from '@/types/index.d';\nimport { MapUtils } from '@/MapUtils';\nimport type { MapUtilsConstructor } from '@/MapUtils';\n\n// 接口约束类暂时去掉implements OverlaysLayer<AMap.Marker, AMap.OverlayGroup>\nclass MarkerLayer {\n rawLayer = new AMap.OverlayGroup();\n\n map: mapIns;\n\n events = new Map<AMap.EventType, () => void>();\n\n constructor(map: mapIns) {\n this.map = map;\n //@ts-ignore\n this.map.add(this.rawLayer);\n }\n\n /**\n * 将覆盖物数据转换为标记配置\n * @param item 覆盖物数据\n * @param index 索引\n * @param getIconUrl 获取图标URL的方法\n * @param getOverlayOpts 动态获取覆盖物配置的方法\n * @param MapUtils MapUtils构造函数\n * @returns 标记配置\n */\n static convertOverlayDataToOvlOpts<U extends {}>(\n item: OverlayData<U>,\n index: number,\n getIconUrl: (item: OverlayData<U>) => string,\n getOverlayOpts: (\n item: OverlayData<U>,\n index: number,\n MapUtils: MapUtilsConstructor\n ) => any,\n MapUtils: MapUtilsConstructor\n ): AMap.MarkerOptions {\n const {\n overlayData: { lon, lat, extData },\n } = item;\n\n // 获取当前覆盖物项的动态配置\n const itemOpts = getOverlayOpts(item, index, MapUtils);\n\n const ovlOpts: AMap.MarkerOptions = {\n position: [lon, lat],\n extData,\n ...itemOpts,\n };\n\n if (!item.labelShowed) {\n ovlOpts.label = undefined;\n } else {\n ovlOpts.label = ovlOpts.label ?? {\n content: `<div class=\"markerLayer\">${item.overlayData.title}</div>`,\n offset: MapUtils.Pixel(0, -5),\n direction: 'top',\n };\n }\n\n ovlOpts.icon =\n ovlOpts.icon ??\n MapUtils.createIcon({\n size: [25, 34],\n image: '',\n imageSize: [25, 34],\n imageOffset: [0, 0],\n });\n\n const imageUrl = getIconUrl(item);\n\n if (typeof ovlOpts.icon === 'string') {\n ovlOpts.icon = imageUrl;\n } else {\n (ovlOpts.icon as AMap.Icon).setImage(imageUrl);\n }\n\n return ovlOpts as AMap.MarkerOptions;\n }\n\n bindEventOverlay(clickType: AMap.EventType, callback: () => void) {\n if (typeof callback !== 'function') {\n MapUtils.error('Please provide an event callback function');\n return;\n }\n\n // 获取地图的所有点位,绑定上事件\n this.rawLayer.on(clickType, callback);\n\n // 保存事件\n this.events.set(clickType, callback);\n }\n //高德地图,marker新添加会自动绑定事件\n addOverlayBindEvent(marker: InstanceType<typeof AMap.Marker>) {\n this.events.forEach((callback, clickType) => {\n marker.on(clickType, callback);\n });\n }\n\n createOverlays(ovOptList: Array<AMap.MarkerOptions>) {\n const markers = ovOptList.map(item => MapUtils.createAMapMarker(item));\n\n this.rawLayer.addOverlays(markers);\n\n return markers;\n }\n\n add(markers: Array<AMap.MarkerOptions>) {\n this.createOverlays(markers);\n }\n\n remove(markers: Array<AMap.Marker>) {\n this.rawLayer.removeOverlays(markers);\n }\n\n hide() {\n this.rawLayer.hide();\n }\n\n show() {\n this.rawLayer.show();\n }\n\n getAllOverlay(): Array<AMap.Marker> {\n return this.rawLayer.getOverlays();\n }\n\n destroy() {\n this.rawLayer.clearOverlays();\n //@ts-expect-error\n this.rawLayer.setMap(null);\n //@ts-expect-error\n this.rawLayer = null;\n }\n\n reload() {\n this.rawLayer.clearOverlays();\n }\n\n clearAllOvl() {\n this.rawLayer.clearOverlays();\n }\n\n overlayFitMap() {\n const makers = this.getAllOverlay();\n\n this.map.setFitView(makers);\n }\n\n findLayerOverlay(markerId: string | number) {\n if (!markerId) {\n MapUtils.error('Please provide a markerId');\n return;\n }\n\n const markers: InstanceType<typeof AMap.Marker>[] = this.getAllOverlay();\n\n const marker = markers.find(item => {\n return item.getExtData().id === markerId;\n });\n\n return marker; // 如果没有找到,返回null\n }\n\n // 设置激活的marker\n refreshOverlayIcon(\n marker: InstanceType<typeof AMap.Marker>,\n icon: string | AMap.Icon\n ) {\n if (!marker) {\n // 如果没有找到对应的marker\n return MapUtils.error('marker is not found');\n }\n // 获取点击的标记对象\n marker.setIcon(icon);\n }\n\n /* \n DOM过多页面会卡顿, 用到才创建\n */\n refreshOverlayLabel(\n marker: InstanceType<typeof AMap.Marker>,\n labelOpts?: {\n content: string;\n direction: string;\n offset: [number, number] | Array<number>;\n }\n ) {\n if (!marker) {\n // 如果没有找到对应的marker\n return MapUtils.error('marker is not found');\n }\n\n if (labelOpts) {\n marker.setLabel(labelOpts);\n } else {\n let labelOpts = marker.getLabel();\n\n marker.setLabel({\n ...labelOpts,\n content: '',\n });\n }\n }\n}\n\nexport default MarkerLayer;\n","import LabelMarkerLayer from './LabelMarkerLayer';\nimport MarkerLayer from './MarkerLayer';\nimport type {\n MarkerLayerBaseType,\n LayerOpts,\n BaseMarkerLayerInfo,\n OverlayData,\n} from '@/types';\nimport { MapUtils } from '@/MapUtils';\nimport type { MapUtilsConstructor, mapUtilsIns } from '@/MapUtils';\n\nclass BaseMarkerLayer<\n U extends object,\n T extends MarkerLayerBaseType = 'markerLayer',\n V extends BaseMarkerLayerInfo[T] = BaseMarkerLayerInfo[T],\n> {\n // 图层类型与控制器类的映射关系\n static layerClassMap = new Map<string, BaseMarkerLayerTypeClass>();\n /**\n * 注册图层类型与控制器类的关联\n * @param {string} layerType - 图层类型\n * @param {Function} layerClass - 图层控制器类\n */\n static registerLayer(\n layerType: MarkerLayerBaseType,\n layerClass: BaseMarkerLayerTypeClass\n ) {\n if (typeof layerType !== 'string' || typeof layerClass !== 'function') {\n MapUtils.error('[LayerManager Error]: Invalid layer type or layer class');\n return;\n }\n\n BaseMarkerLayer.layerClassMap.set(layerType, layerClass);\n }\n\n overlayList: Array<OverlayData<U>>;\n // 策略模式\n rawLayerIns: V['layerIns'];\n\n layerVisible: boolean = true;\n\n layerName: string;\n\n mapUtils: mapUtilsIns;\n\n getIconUrl: (item: OverlayData<U>) => string;\n\n layerType: MarkerLayerBaseType;\n\n getOverlayOpts: (\n item: OverlayData<U>,\n index: number,\n MapUtils: MapUtilsConstructor\n ) => V['overlayOpts'];\n\n constructor(opts: LayerOpts<U, T>, mapUtils: mapUtilsIns) {\n const { layerType, layerName, ...rest } = opts;\n\n const OverlaysLayer = BaseMarkerLayer.layerClassMap.get(layerType);\n\n if (OverlaysLayer) {\n this.rawLayerIns = new OverlaysLayer(mapUtils.map, opts.overlayLayer);\n } else {\n throw new Error(\n `[BaseMarkerLayer Error]: Invalid layer type ${layerType}`\n );\n }\n\n this.layerName = layerName;\n\n this.mapUtils = mapUtils; //上层,mapUtils的实例\n\n this.overlayList = opts.overlayList;\n\n this.getIconUrl = opts.getIconUrl;\n\n this.getOverlayOpts = opts.getOverlayOpts;\n\n this.layerType = opts.layerType;\n\n Object.assign(this, rest);\n\n this.initLayer();\n }\n\n // 图层事件,覆盖物初始化\n initLayer() {\n this.createOverlays(this.overlayList);\n }\n\n /**\n * 将覆盖物数据转换为覆盖物配置\n * @param overlayList 覆盖物数据列表\n * @returns 覆盖物配置列表\n */\n convertOverlayDataToOpts(\n overlayList: Array<OverlayData<U>>\n ): Array<V['overlayOpts']> {\n const OverlaysLayer = BaseMarkerLayer.layerClassMap.get(this.layerType)!;\n\n return overlayList.map((item, index) => {\n return OverlaysLayer.convertOverlayDataToOvlOpts(\n item,\n index,\n this.getIconUrl,\n this.getOverlayOpts,\n MapUtils\n );\n });\n }\n\n createOverlays(overlayList: Array<OverlayData>): Array<V['ovIns']> {\n const markerListOpts: Array<V['overlayOpts']> =\n this.convertOverlayDataToOpts(overlayList as Array<OverlayData<U>>);\n\n return this.rawLayerIns.createOverlays(\n // @ts-ignore\n markerListOpts\n );\n }\n\n overlayFitMap() {\n this.rawLayerIns.overlayFitMap();\n }\n\n bindEventOverlays(clickType: AMap.EventType, callback: () => void) {\n this.rawLayerIns.bindEventOverlay(clickType, callback);\n }\n\n hide() {\n this.layerVisible = false;\n this.rawLayerIns.hide();\n }\n\n show() {\n this.layerVisible = true;\n this.rawLayerIns.show();\n }\n\n getAllOverlay() {\n // 数据进行D会影响覆盖物,浅拷贝\n return [...this.rawLayerIns.getAllOverlay()!];\n }\n\n destroy() {\n // @ts-ignore\n this.mapUtils.removeLayer(this); //从MapUtils中移除\n this.rawLayerIns.destroy(); //地图层面移除\n this.overlayList = [];\n\n //TODO layer实例怎么销毁\n }\n\n clearAllOverlay() {\n this.overlayList = [];\n this.rawLayerIns.clearAllOvl();\n }\n\n reload() {\n this.rawLayerIns.reload();\n\n this.createOverlays(this.overlayList);\n }\n\n findLayerOverlay(ovId: string | number) {\n return this.rawLayerIns.findLayerOverlay(ovId);\n }\n\n add(overlayList: Array<OverlayData<U>>) {\n const markerListOpts: Array<V['overlayOpts']> =\n this.convertOverlayDataToOpts(overlayList as Array<OverlayData<U>>);\n\n this.overlayList.push(...overlayList);\n // 类型守卫 缩小实例范围\n if (this.rawLayerIns instanceof MarkerLayer) {\n this.rawLayerIns.add(markerListOpts as AMap.MarkerOptions[]);\n } else if (this.rawLayerIns instanceof LabelMarkerLayer) {\n this.rawLayerIns.add(markerListOpts as AMap.LabelMarkerOptions[]);\n }\n }\n\n remove(ovs: Array<V['ovIns']> | string[]) {\n // 处理MarkerLayer类型\n if (this.rawLayerIns instanceof MarkerLayer) {\n // 类型守卫:检查是否为Marker实例数组\n const isMarkerArray = (arr: any[]): arr is AMap.Marker[] =>\n arr[0] instanceof AMap.Marker;\n\n if (!isMarkerArray(ovs)) {\n // 根据ID查找覆盖物实例\n const overlayInstances = ovs\n .map(id => this.findLayerOverlay(id as string | number))\n .filter((ovl): ovl is AMap.Marker => !!ovl);\n\n this.rawLayerIns.remove(overlayInstances);\n\n this.overlayList = this.overlayList.filter(\n item => !(ovs as Array<string | number>).includes(item.id)\n );\n } else {\n const ids = ovs.map(item => item.getExtData().id);\n\n this.overlayList = this.overlayList.filter(\n item => !(ids as Array<string | number>).includes(item.id)\n );\n // 直接使用覆盖物实例数组\n this.rawLayerIns.remove(ovs as AMap.Marker[]);\n }\n }\n // 处理LabelMarkerLayer类型\n else if (this.rawLayerIns instanceof LabelMarkerLayer) {\n // 类型守卫:检查是否为LabelMarker实例数组\n const isLabelMarkerArray = (arr: any[]): arr is AMap.LabelMarker[] =>\n arr[0] instanceof AMap.LabelMarker;\n\n if (!isLabelMarkerArray(ovs)) {\n // 根据ID查找覆盖物实例\n const overlayInstances = ovs\n .map(id => this.findLayerOverlay(id as string | number))\n .filter((ovl): ovl is AMap.LabelMarker => !!ovl);\n\n this.rawLayerIns.remove(overlayInstances);\n\n this.overlayList = this.overlayList.filter(\n item => !(ovs as Array<string | number>).includes(item.id)\n );\n } else {\n const ids = ovs.map(item => item.getExtData().id);\n\n this.overlayList = this.overlayList.filter(\n item => !(ids as Array<string | number>).includes(item.id)\n );\n // 直接使用覆盖物实例数组\n this.rawLayerIns.remove(ovs as AMap.LabelMarker[]);\n }\n }\n }\n\n refreshOverlayIcon(overlayId: string) {\n const ovlDataIndex = this.overlayList.findIndex(\n ovl => ovl.id === overlayId\n );\n\n if (ovlDataIndex === -1) {\n //抛异常\n return MapUtils.error(\n `[BaseMarkerLayer Error]: Invalid overlayId ${overlayId}`\n );\n }\n const OvlLayer = BaseMarkerLayer.layerClassMap.get(this.layerType);\n\n const marker = this.rawLayerIns.findLayerOverlay(overlayId);\n // 函数可以动态计算label,\n const ovlOpts = OvlLayer!.convertOverlayDataToOvlOpts(\n this.overlayList[ovlDataIndex],\n ovlDataIndex,\n this.getIconUrl,\n this.getOverlayOpts,\n MapUtils\n );\n\n const iconImageUrl = this.getIconUrl(this.overlayList[ovlDataIndex]);\n\n if (this.rawLayerIns instanceof MarkerLayer) {\n let icon = ovlOpts.icon! as AMap.Icon | string;\n\n if (typeof icon === 'string') {\n icon = iconImageUrl;\n } else {\n (icon as AMap.Icon).setImage(iconImageUrl);\n }\n\n (this.rawLayerIns as MarkerLayerIns).refreshOverlayIcon(\n (marker as AMap.Marker)!,\n icon\n );\n } else {\n let icon = ovlOpts.icon! as AMap.LabelMarkerIconOptions;\n\n icon.image = iconImageUrl;\n\n this.rawLayerIns.refreshOverlayIcon((marker as AMap.LabelMarker)!, icon);\n }\n }\n\n refreshOverlayLabel(overlayId: string | number) {\n const ovlDataIndex = this.overlayList.findIndex(\n ovl => ovl.id === overlayId\n );\n\n if (ovlDataIndex === -1) {\n //抛异常\n return MapUtils.error(`[Layer Error]: Invalid overlayId ${overlayId}`);\n }\n const OvlLayer = BaseMarkerLayer.layerClassMap.get(this.layerType);\n\n // marker拿到手\n const marker = this.rawLayerIns.findLayerOverlay(overlayId)!;\n\n // 函数可以动态计算label,\n const ovlOpts = OvlLayer!.convertOverlayDataToOvlOpts(\n this.overlayList[ovlDataIndex],\n ovlDataIndex,\n this.getIconUrl,\n this.getOverlayOpts,\n MapUtils\n );\n\n if (this.rawLayerIns instanceof MarkerLayer) {\n this.rawLayerIns.refreshOverlayLabel(\n marker as AMap.Marker,\n (ovlOpts as AMap.MarkerOptions).label as {\n content: string;\n direction: string;\n offset: [number, number] | Array<number>;\n }\n );\n } else {\n this.rawLayerIns.refreshOverlayLabel(\n marker as AMap.LabelMarker,\n ovlOpts.text as AMap.LabelMarkerTextOptions\n );\n }\n }\n\n // 返回原始图层对象\n getRawLayer() {\n return this.rawLayerIns.rawLayer;\n }\n}\n\nBaseMarkerLayer.registerLayer('markerLayer', MarkerLayer);\nBaseMarkerLayer.registerLayer('labelMarkerLayer', LabelMarkerLayer);\n\n// MarkerLayer 类型\n/**\n * @ignore\n */\nexport type MarkerLayerIns = InstanceType<typeof MarkerLayer>;\n\n// LabelMarkerLayer 类型\n/**\n * @ignore\n */\nexport type LabelMarkerLayerIns = InstanceType<typeof LabelMarkerLayer>;\n\n// 所有图层类型的联合类型\n/**\n * @ignore\n */\nexport type BaseMarkerLayerTypeIns = MarkerLayerIns | LabelMarkerLayerIns;\n/**\n * @ignore\n */\nexport type BaseMarkerLayerTypeClass =\n | typeof MarkerLayer\n | typeof LabelMarkerLayer;\n/**\n * @ignore\n */\nexport type BaseMarkerLayerClass = typeof BaseMarkerLayer;\n/**\n * @ignore\n */\nexport type BaseMarkerLayerIns = InstanceType<BaseMarkerLayerClass>;\n\nexport { LabelMarkerLayer, MarkerLayer };\n\nexport default BaseMarkerLayer;\n","import type {\n mapIns,\n MarkerClusterDataOptions,\n MarkerClusterOptions,\n} from '@/types/index.d';\n\nclass MarkerClusterLayer {\n rawLayer: any; //高德未提供cluster的类型\n\n map: mapIns;\n\n constructor(\n map: mapIns,\n dataOptions: Array<MarkerClusterDataOptions>,\n opts: MarkerClusterOptions\n ) {\n this.map = map;\n //@ts-expect-error\n this.rawLayer = new AMap.MarkerCluster(map, dataOptions, opts);\n }\n\n bindEventMarker(clickType: AMap.EventType, callback: () => void) {\n this.rawLayer.on(clickType, callback);\n }\n\n add(dataOption: MarkerClusterDataOptions[]) {\n this.rawLayer.addData(dataOption);\n }\n\n remove(dataOptions: Array<MarkerClusterDataOptions>) {\n this.rawLayer.setData(dataOptions);\n }\n\n hide() {\n this.rawLayer.setData([]);\n }\n\n show(dataOptions: Array<MarkerClusterDataOptions>) {\n this.rawLayer.setData(dataOptions);\n }\n\n destroy() {\n this.rawLayer.setData([]);\n this.rawLayer.setMap(null);\n this.rawLayer = null;\n }\n\n clearAllOvl() {\n this.rawLayer.setData([]);\n }\n}\n\nexport default MarkerClusterLayer;\n","import MarkerClusterLayer from './MarkerClusterLayer';\nimport type {\n MarkerClusterLayerType,\n OverlayData, //OverLayerData图层公共接口\n MarkerClusterDataOptions,\n ClusterMarkerLayerInfo,\n ClusterMarkerLayerOpts,\n} from '@/types';\nimport { MapUtils } from '@/MapUtils';\nimport type { mapUtilsIns } from '@/MapUtils';\n\nclass ClusterMarkerLayer<\n U extends object,\n T extends MarkerClusterLayerType = 'markerClusterLayer',\n V extends ClusterMarkerLayerInfo[T] = ClusterMarkerLayerInfo[T],\n> {\n // 图层类型与控制器类的映射关系\n\n /**\n *@ignore\n */\n static layerClassMap = new Map<string, ClusterMarkerLayerTypeClass>();\n /**\n * 注册图层类型与控制器类的关联\n * @param {string} layerType - 图层类型\n * @param {Function} layerClass - 图层控制器类\n * @ignore\n */\n static registerLayer(\n layerType: MarkerClusterLayerType,\n layerClass: ClusterMarkerLayerTypeClass\n ) {\n if (typeof layerType !== 'string' || typeof layerClass !== 'function') {\n MapUtils.error(\n '[ClusterMarkerLayer Error]: Invalid layer type or layer class'\n );\n return;\n }\n\n ClusterMarkerLayer.layerClassMap.set(layerType, layerClass);\n }\n\n overlayList: Array<OverlayData<U>>;\n // 策略模式\n rawLayerIns: V['layerIns'];\n\n layerVisible: boolean = true;\n\n layerName: string;\n\n mapUtils: mapUtilsIns;\n\n layerType: MarkerClusterLayerType;\n\n constructor(opts: ClusterMarkerLayerOpts<U, T>, mapUtils: mapUtilsIns) {\n const { layerType, layerName, ...rest } = opts;\n\n const OverlaysLayer = ClusterMarkerLayer.layerClassMap.get(layerType);\n\n if (OverlaysLayer) {\n // 将OverlayData转换为MarkerClusterDataOptions\n const clusterData = this.convertOverlayDataToClusterData(\n opts.overlayList\n );\n\n this.rawLayerIns = new OverlaysLayer(\n mapUtils.map,\n clusterData,\n opts.layerOpts\n );\n } else {\n throw new Error(\n `[ClusterMarkerLayer Error]: Invalid layer type ${layerType}`\n );\n }\n\n this.layerName = layerName;\n\n this.mapUtils = mapUtils; //mapUtils的实例\n\n this.overlayList = opts.overlayList;\n\n this.layerType = opts.layerType;\n\n Object.assign(this, rest);\n }\n\n /**\n * 将覆盖物数据转换为聚合标记所需的数据格式\n * @param overlayList 覆盖物数据列表\n * @returns 聚合标记数据列表\n */\n private convertOverlayDataToClusterData(\n overlayList: Array<OverlayData<U>>\n ): Array<MarkerClusterDataOptions> {\n return overlayList.map(item => {\n return {\n ...item,\n lnglat: [item.overlayData.lon, item.overlayData.lat],\n weight: item.overlayData.weight || 1,\n };\n });\n }\n\n bindEventOverlays(clickType: AMap.EventType, callback: () => void) {\n this.rawLayerIns.bindEventMarker(clickType, callback);\n }\n\n hide() {\n this.layerVisible = false;\n this.rawLayerIns.hide();\n }\n\n show() {\n this.layerVisible = true;\n const clusterData = this.convertOverlayDataToClusterData(this.overlayList);\n this.rawLayerIns.show(clusterData);\n }\n\n destroy() {\n this.mapUtils.removeLayer(this); //从MapUtils中移除\n this.rawLayerIns.destroy(); //地图层面移除\n this.overlayList = [];\n }\n\n clearAllOverlay() {\n this.overlayList = [];\n this.rawLayerIns.clearAllOvl();\n }\n\n add(overlayList: Array<OverlayData<U>>) {\n const clusterData = this.convertOverlayDataToClusterData(overlayList);\n\n this.overlayList.push(...overlayList);\n\n // 逐个添加聚合数据\n this.rawLayerIns.add(clusterData);\n }\n\n /**\n * `remove`\n *\n * @param {(Array<number | string>)} ovs\n * @memberof ClusterMarkerLayer\n */\n remove(ovs: Array<number | string>) {\n if (Array.isArray(ovs)) {\n // 根据ID移除覆盖物\n const ids = ovs as Array<string | number>;\n\n // 更新本地覆盖物列表\n this.overlayList = this.overlayList.filter(\n item => !ids.includes(item.id)\n );\n\n // 重新设置聚合数据\n const clusterData = this.convertOverlayDataToClusterData(\n this.overlayList\n );\n this.rawLayerIns.remove(clusterData);\n }\n // 聚合图层不支持直接移除单个实例\n }\n\n /**\n *\n *`getRawLayer`方法返回高德覆盖物管理对象, 例如: 图层类型为`markerClusterLayer`,方法返回的对象类型为`new AMap.MarkerCluster(xx,'xxx')`\n * @return {*}\n */\n getRawLayer() {\n return this.rawLayerIns.rawLayer;\n }\n}\n\n// 注册聚合图层类型\nClusterMarkerLayer.registerLayer('markerClusterLayer', MarkerClusterLayer);\n\n/**\n * MarkerClusterLayer 类型\n * @ignore\n */\nexport type MarkerClusterLayerIns = InstanceType<typeof MarkerClusterLayer>;\n\n/**\n * 所有聚合图层类型的联合类型\n * @ignore\n */\nexport type ClusterMarkerLayerTypeIns = MarkerClusterLayerIns;\n/**\n * @ignore\n */\nexport type ClusterMarkerLayerTypeClass = typeof MarkerClusterLayer;\n/**\n * @ignore\n */\nexport type ClusterMarkerLayerClass = typeof ClusterMarkerLayer;\n/**\n * @ignore\n */\nexport type ClusterMarkerLayerIns = InstanceType<ClusterMarkerLayerClass>;\n\nexport { MarkerClusterLayer };\n\nexport default ClusterMarkerLayer;\n","import type {\n BaseMarkerLayerClass,\n ClusterMarkerLayerClass,\n} from '@/layers/index.ts';\nimport { MapUtils } from '@/MapUtils';\n\ntype LayerIns =\n | InstanceType<BaseMarkerLayerClass>\n | InstanceType<ClusterMarkerLayerClass>;\nexport class LayerManager {\n layers: Map<string, LayerIns> = new Map(); //组合模式\n\n addLayer(layer: LayerIns) {\n if (this.hasLayer(layer)) {\n const errorMsg = `Layer with name \"${layer.layerName}\" already exists`;\n return MapUtils.error(errorMsg);\n }\n this.layers.set(layer.layerName, layer);\n }\n\n removeLayer(layer: LayerIns) {\n this.layers.delete(layer.layerName);\n }\n\n show(LayerName: string) {\n let layer = this.layers.get(LayerName);\n if (layer) {\n layer.show();\n } else {\n const errorMsg = `Layer with name \"${LayerName}\" not found`;\n return MapUtils.error(errorMsg);\n }\n }\n\n hide(LayerName: string) {\n let layer = this.layers.get(LayerName);\n if (layer) {\n layer.hide();\n } else {\n const errorMsg = `Layer with name \"${LayerName}\" not found`;\n return MapUtils.error(errorMsg);\n }\n }\n\n showAll() {\n this.layers.forEach(val => val.show());\n }\n\n hideAll() {\n this.layers.forEach(val => val.hide());\n }\n\n reload() {\n this.layers.forEach(val => {\n if (typeof (val as any).reload === 'function') {\n (val as any).reload();\n }\n });\n }\n\n hasLayer(layer: LayerIns): boolean {\n return this.layers.has(layer.layerName);\n }\n}\nexport default LayerManager;\n","import MapSourceImport from './MapSourceImport';\nimport MapMixin from './gdMap/gdHelper';\nimport type { AMap as gdAMap, loaderOpts, MapOptions } from './types/amap.d';\nimport type {\n MapUtilsOpts,\n mapIns,\n MarkerLayerBaseType,\n MarkerClusterLayerType,\n LayerOpts,\n ClusterMarkerLayerOpts,\n} from './types/index.d';\nimport {\n BaseMarkerLayerIns,\n BaseMarkerLayer,\n ClusterMarkerLayerIns,\n ClusterMarkerLayer,\n} from './layers/index';\nimport type { SetOptional, Simplify } from 'type-fest';\nimport LayerManager from './LayerManager';\n\ntype MapUtilsConstructor = typeof MapUtils;\n\ntype mapUtilsIns = InstanceType<typeof MapUtils>;\n\nexport class MapUtils {\n // 地图实例信息\n map: mapIns;\n\n options: SetOptional<MapUtilsOpts['MapUtilsCreateOpts'], 'mountSelector'>;\n\n LayerManager: LayerManager = new LayerManager();\n\n /**\n *@category 高德地图工具\n */\n static createAMapMarker = MapMixin.createAMapMarker;\n /**\n *@category 高德地图工具\n */\n static createIcon = MapMixin.createIcon;\n /**\n *@category 高德地图工具\n */\n static Size = MapMixin.Size;\n /**\n *@category 高德地图工具\n */\n static Pixel = MapMixin.Pixel;\n /**\n *@category 高德地图工具\n */\n static LngLat = MapMixin.LngLat;\n /**\n *@category 高德地图工具\n */\n static createAMapInfoWindow = MapMixin.createAMapInfoWindow;\n /**\n *@category 高德地图工具\n */\n static createAMapPolyline = MapMixin.createAMapPolyline;\n /**\n *@category 高德地图工具\n */\n static loadPlugins = MapMixin.loadPlugins;\n\n /**\n * @ignore\n */\n constructor(\n opts: MapUtilsOpts[keyof MapUtilsOpts],\n AMap: Simplify<typeof gdAMap>\n ) {\n if (!(typeof AMap === 'object' && 'Map' in AMap)) {\n throw MapUtils.error('AMap is not exist');\n }\n\n if ('mapIns' in opts && opts.mapIns instanceof AMap.Map) {\n const { mapIns, ...rest } = opts;\n this.map = opts.mapIns;\n this.options = rest;\n } else {\n if (!('mountSelector' in opts)) {\n throw MapUtils.error('mountSelector is not exist');\n } else {\n this.options = opts;\n\n const { mountSelector, ...rest } = opts;\n\n this.map = this.initMap(mountSelector, rest); //地图初始化\n }\n }\n }\n\n /**\n * @param {AMap.EventType} type 地图事件类型\n * @param {(e: any) => void} fn 回调函数\n * @param {*} [context] 事件上下文,缺省为当前实例\n * @param {boolean} [once] 事件是否执行一次\n * @memberof MapUtils\n */\n bindMapClickEvent(\n type: AMap.EventType,\n fn: (e: any) => void,\n context?: any,\n once?: boolean\n ) {\n this.map.on(type, fn, context, once);\n }\n\n /**\n * @ignore\n */\n initMap(id: string, opts: MapOptions): mapIns {\n //参数要作检验吗\n return new window.AMap.Map(id, opts);\n }\n\n /**\n * @ignore\n * @return {*}\n */\n createBaseMarkerLayer<\n U extends {},\n T extends MarkerLayerBaseType = 'markerLayer',\n >(opts: LayerOpts<U, T>) {\n const layer = new BaseMarkerLayer<U, T>(opts, this);\n // @ts-ignore\n this.LayerManager.addLayer(layer);\n return layer;\n }\n\n /**\n * 高德地图中 `MarkerCluster, MassMarks`用于渲染海量点,它们调用方式也比较接近,将其聚合为一个统一的图层管理\n * 目前, 聚合图层只包装`MarkerCluster`\n * @param {ClusterMarkerLayerOpts<U, T>} opts - 图层配置选项\n */\n createClusterMarkerLayer<\n U extends {},\n T extends MarkerClusterLayerType = 'markerClusterLayer',\n >(opts: ClusterMarkerLayerOpts<U, T>) {\n const layer = new ClusterMarkerLayer<U, T>(opts, this);\n // @ts-ignore\n this.LayerManager.addLayer(layer);\n return layer;\n }\n\n /**\n * `removeLayer`接收图层实例将其从mapUtils的关联中移除\n * @param {(BaseMarkerLayerIns | ClusterMarkerLayerIns)} layer\n */\n removeLayer(layer: BaseMarkerLayerIns | ClusterMarkerLayerIns) {\n const isLayerExist = this.LayerManager.hasLayer(layer);\n\n if (isLayerExist) {\n this.LayerManager.removeLayer(layer);\n } else {\n MapUtils.error(`${layer.layerName} is not exist`);\n }\n }\n\n /**\n * 根据地图上添加的覆盖物分布情况,自动缩放地图到合适的视野级别\n * @param {Array} overlays - 覆盖物数组,缺省为全部覆盖物\n * @param {Boolean} immediately - 是否立即过渡\n * @param {Array<Number>} avoid - 四周边距,上、下、左、右\n * @param {number} maxZoom - 最大地图zoom级别\n */\n setFitView(...opts: Parameters<mapIns['setFitView']>): void {\n this.map.setFitView(...opts);\n }\n\n /**\n * 地图弹窗关闭\n * @memberof MapUtils\n */\n clearInfoWindow() {\n this.map.clearInfoWindow();\n }\n\n /**\n * 地图跳转参数\n * @typedef {Object} GotoOpts\n * @property {number} zoom - 目标缩放级别\n * @property {AMap.LngLat|[number,number]} center - 目标中心点(高德坐标实例或 [lng,lat] 数组)\n * @property {boolean} [immediately=false] - 是否立即跳转,默认平滑过渡\n * @property {number} [duration] - 过渡动画时长(毫秒)\n */\n /**\n * 将地图视图切换到指定状态\n * @param {GotoOpts} opts 跳转配置\n */\n seZoomAndCenter(opts: {\n zoom: number;\n center: AMap.LngLat | [number, number];\n immediately?: boolean;\n duration?: number;\n }): void {\n const curZoom = this.map.getZoom();\n const lngAndLat = this.map.getCenter();\n const curCenter: [number, number] = [lngAndLat.lng, lngAndLat.lat];\n let { center = curCenter, zoom = curZoom, immediately, duration } = opts;\n\n this.map.setZoomAndCenter(zoom, center, immediately, duration);\n }\n\n /**\n * 图层`layerName`显示, `layerName`为创建图层所传递的参数,用于标识图层名称。\n * @param {string} layerName - 图层名称\n */\n showLayer(layerName: string): void {\n this.LayerManager.show(layerName);\n }\n\n /**\n * 图层`layerName`隐藏, `layerName`为创建图层所传递的参数,用于标识图层名称。\n * @param {string} layerName - 图层名称\n */\n hideLayer(layerName: string): void {\n this.LayerManager.hide(layerName);\n }\n\n /**\n * 地图显示所有图层\n */\n showAllLayers(): void {\n this.LayerManager.showAll();\n }\n\n /**\n * 地图隐藏所有图层\n */\n hideAllLayers(): void {\n this.LayerManager.hideAll();\n }\n\n /**\n * 地图重新渲染所有图层\n */\n reloadLayers(): void {\n this.LayerManager.reload();\n }\n\n /**\n * @ignore\n * @param msg\n */\n static error(msg: string) {\n console.error(`[MapUtils Error]:${msg}`);\n }\n}\n\nexport type { mapUtilsIns, MapUtilsConstructor };\n\n/**\n * \n * `createMapUtils`功能如下: \n * 1. 支持将高德地图实例包装成工具函数 (为其扩展功能), \n * 2. 地图创建并为其扩展功能,\n * 3. 高德地图依赖加载 ( 高德AMap函数加载 )\n * @param {MapUtilsOpts[keyof MapUtilsOpts]} opts \n * - 工具函数配置选项,支持两种模式:\n * 1. 使用现有地图实例(MapUtilsUseExistingOpts)\n * 2. 创建新地图实例(MapUtilsCreateOpts)\n * \n * [MapOptions文档地址](https://lbs.amap.com/api/javascript-api-v2/documentation#map)\n * ```\n * interface MapUtilsCreateOpts extends MapOptions {\n mountSelector: string; //选择器\n }\n\n interface MapUtilsUseExistingOpts extends MapOptions {\n mapIns: mapIns; //高德地图实例\n }\n * ```\n * @param {loaderOpts} [loaderOPts]\n * - 高德地图环境加载所传递的配置对象\n * ```\n * type loaderOpts = {\n key: string;\n version: string;\n plugins?: string[] | undefined;\n AMapUI?: {\n version?: string | undefined;\n plugins?: string[] | undefined;\n } | undefined;\n Loca?: {\n version?: string | undefined;\n } | undefined;\n }\n * ```\n * @return {*} \n */\nexport async function createMapUtils(\n opts: MapUtilsOpts[keyof MapUtilsOpts],\n loaderOPts?: loaderOpts\n) {\n // window上存在属性已经加载\n let AMap = window.AMap;\n\n if (loaderOPts) {\n AMap = await initMapSource(loaderOPts);\n }\n\n return new MapUtils(opts, AMap);\n}\n\n/**\n *\n * @param {loaderOpts} Opts\n * - 高德地图环境加载所传递的配置对象\n * ```\n * type loaderOpts = {\n key: string;\n version: string;\n plugins?: string[] | undefined;\n AMapUI?: {\n version?: string | undefined;\n plugins?: string[] | undefined;\n } | undefined;\n Loca?: {\n version?: string | undefined;\n } | undefined;\n }\n * ```\n * @return {*} \n */\nexport async function initMapSource(Opts: loaderOpts) {\n return await MapSourceImport.loadScript(Opts);\n}\n"],"names":["root","factory","exports","module","require","define","amd","this","__WEBPACK_EXTERNAL_MODULE__591__","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","n","getter","__esModule","d","a","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","r","Symbol","toStringTag","value","loadScript","opts","then","rawAMap","catch","e","console","error","Error","createAMapMarker","options","AMap","Marker","createIcon","Icon","size","Size","image","imageSize","imageOffset","Pixel","width","height","rest","LngLat","lng","lat","noWrap","createAMapInfoWindow","isCustom","closeWhenClickMap","InfoWindow","createAMapPolyline","assign","showDir","lineJoin","strokeColor","strokeOpacity","strokeWeight","Polyline","loadPlugins","plugins","Promise","resolve","plugin","map","events","Map","rawLayer","LabelsLayer","collision","opacity","zIndex","allowCollision","add","convertOverlayDataToOvlOpts","item","index","getIconUrl","getOverlayOpts","MapUtils","lon","extData","title","itemOpts","ovlOpts","position","labelShowed","text","content","direction","style","fontSize","strokeWidth","zooms","textOpts","imageUrl","icon","anchor","bindEventOverlay","clickType","callback","on","set","addOverlayBindEvent","marker","forEach","createOverlays","ovOptList","labelMarkers","labelMarker","LabelMarker","markers","remove","hide","show","getAllOverlay","getAllOverlays","destroy","clear","reload","clearAllOvl","overlayFitMap","setFitView","findLayerOverlay","markerId","find","getExtData","id","refreshOverlayIcon","iconOpts","setIcon","refreshOverlayLabel","labelOpts","setText","currentLabel","getText","OverlayGroup","label","overlayData","offset","setImage","addOverlays","removeOverlays","getOverlays","clearOverlays","setMap","makers","setLabel","getLabel","mapUtils","layerVisible","layerType","layerName","OverlaysLayer","BaseMarkerLayer","layerClassMap","rawLayerIns","overlayLayer","overlayList","initLayer","registerLayer","layerClass","convertOverlayDataToOpts","markerListOpts","bindEventOverlays","removeLayer","clearAllOverlay","ovId","push","ovs","filter","includes","overlayInstances","ovl","arr","isLabelMarkerArray","overlayId","ovlDataIndex","findIndex","OvlLayer","iconImageUrl","getRawLayer","dataOptions","MarkerCluster","bindEventMarker","dataOption","addData","setData","ClusterMarkerLayer","clusterData","convertOverlayDataToClusterData","layerOpts","lnglat","weight","Array","isArray","layers","addLayer","layer","hasLayer","errorMsg","delete","LayerName","showAll","val","hideAll","has","LayerManager","mapIns","mountSelector","initMap","bindMapClickEvent","type","fn","context","once","window","createBaseMarkerLayer","createClusterMarkerLayer","clearInfoWindow","seZoomAndCenter","curZoom","getZoom","lngAndLat","getCenter","curCenter","center","zoom","immediately","duration","setZoomAndCenter","showLayer","hideLayer","showAllLayers","hideAllLayers","reloadLayers","msg","createMapUtils","loaderOPts","initMapSource","Opts"],"ignoreList":[],"sourceRoot":""}
|