UNPKG

gisviewer-vue3-arcgis

Version:

在应用中引入私服的包, 项目根目录下 新建文件 .npmrc 在 .npmrc 中对包源进行配置:

2 lines (1 loc) 2.42 kB
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const p={clusterRadius:120,minClusterPoints:2,maxClusterSymbolSize:40,minClusterSymbolSize:20};class c{constructor(s,t){this.clusteredLocations=[],this.map=s,this.options={...p,...t}}calculate(s){return this.locationToScreen(s),this.doPixelCluster(this.options.clusterRadius)}calculateSymbolSizes(s){let t=Number.MIN_VALUE,i=Number.MAX_VALUE;return s.forEach(e=>{e.count>1&&(i=Math.min(i,e.count),t=Math.max(t,e.count))}),s.map(e=>{if(e.id!==-1&&e.center){let r=i===t?(this.options.maxClusterSymbolSize+this.options.minClusterSymbolSize)/2:this.options.minClusterSymbolSize+(e.count-i)/(t-i)*(this.options.maxClusterSymbolSize-this.options.minClusterSymbolSize);return r*=.75,{...e,symbolSize:r}}return e})}updateOptions(s){this.options={...this.options,...s}}getOptions(){return{...this.options}}locationToScreen(s){this.clusteredLocations=[],s.forEach(t=>{const i=this.map.getPixelFromCoordinate([t.x,t.y]),[e,r]=i||[NaN,NaN];Number.isFinite(e)&&Number.isFinite(r)&&e>0&&r>0&&(t.properties=t.properties||{},t.properties.screenX=e,t.properties.screenY=r,t.visited=!1,t.clusterId=void 0,this.clusteredLocations.push(t))})}doPixelCluster(s){let t=0;for(let i=0;i<this.clusteredLocations.length;i++){const e=this.clusteredLocations[i];if(e.visited)continue;e.visited=!0;const r=this.getNeighbors(e,s);r.length<this.options.minClusterPoints?e.clusterId=-1:(r.forEach(o=>{o.visited=!0,o.clusterId=t}),e.clusterId=t,t++)}return this.createClusters()}getNeighbors(s,t){return this.clusteredLocations.filter(i=>i.id===s.id||i.visited?!1:this.getDistance(s,i)<=t)}getDistance(s,t){var i,e,r,o;return Math.sqrt(Math.pow((((i=s.properties)==null?void 0:i.screenX)??0)-(((e=t.properties)==null?void 0:e.screenX)??0),2)+Math.pow((((r=s.properties)==null?void 0:r.screenY)??0)-(((o=t.properties)==null?void 0:o.screenY)??0),2))}createClusters(){const s={},t=[];for(const e of this.clusteredLocations)e.clusterId===void 0||e.clusterId===-1?t.push(e):(s[e.clusterId]||(s[e.clusterId]=[]),s[e.clusterId].push(e));const i=Object.keys(s).map(e=>{const r=s[Number(e)],o=r.length,l=r.reduce((n,u)=>n+u.x,0),a=r.reduce((n,u)=>n+u.y,0),d=l/o,h=a/o;return{id:Number(e),items:r,count:o,center:{x:d,y:h}}});return t.length>0&&i.push({id:-1,items:t,count:t.length,center:null}),i}}exports.PixelClusterCalculator=c;exports.default=c;