map-ol-utils 1.0.1 → 1.0.3

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/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,s)=>(s=n==null?{}:e(i(n)),o(r||!n||!n.__esModule||!a.call(n,`default`)?t(s,`default`,{value:n,enumerable:!0}):s,n));let c=require("tdt-vts-core"),l=require("ol/format/MVT");l=s(l,1);let u=require("ol/layer/VectorTile");u=s(u,1);let d=require("ol/TileState");d=s(d,1);let f=require("ol/source/VectorTile");f=s(f,1);let p=require("mitt");p=s(p,1);let m=require("ol/source"),h=require("ol/layer/Tile");h=s(h,1);let g=require("ol/format"),_=require("ol/source/WMTS"),v=require("ol/tilegrid"),y=require("ol/layer"),b=require("ol/tilegrid/WMTS");b=s(b,1);let ee=require("ol/Observable"),x=require("ol/layer/Image");x=s(x,1);let S=require("ol/source/Raster");S=s(S,1);let C=require("ol/Map");C=s(C,1);let w=require("ol/View");w=s(w,1);let te=require("ol/control"),T=require("gcoord");T=s(T,1);let E=require("ol"),D=require("ol/interaction"),ne=require("ol/extent"),re=require("ol/events/condition"),O=require("ol/Feature");O=s(O,1);let k=require("ol/geom/Point");k=s(k,1);let A=require("ol/layer/Vector");A=s(A,1);let j=require("ol/source/Vector");j=s(j,1);let M=require("ol/style"),N=require("ol/interaction/Draw");N=s(N,1);let ie=require("ol/sphere"),P=require("ol/format/GeoJSON");P=s(P,1);let ae=require("ol/geom"),F=require("ol/source/Cluster");F=s(F,1);let I=require("ol/style/Circle");I=s(I,1);let oe=/* @__PURE__ */ function(e){return e.LineString=`LineString`,e.MultiLineString=`MultiLineString`,e.Polygon=`Polygon`,e.MultiPolygon=`MultiPolygon`,e.Invalid=`Invalid`,e}({});const se=async e=>{if(typeof e!=`string`)return e;if(!e.trim())throw TypeError(`style 地址不能为空`);let t=await fetch(e);if(!t.ok)throw Error(`加载 style 失败:HTTP ${t.status}`);return await t.json()},ce=e=>{if(!e.hosts?.length||e.hosts.some(e=>!e.trim()))throw TypeError(`hosts 不能为空`);let t=new c.TdtDecoderWorkerClient(e.restoreMode,e.decoderOptions),n=new l.default({layerName:`mvt:layer`}),r=new f.default({projection:`EPSG:3857`,minZoom:e.minZoom??1,maxZoom:e.maxZoom??18,tileSize:512,wrapX:!0,format:n,attributions:`© <a href="https://www.tianditu.gov.cn/" target="_blank" rel="noopener">天地图</a>`,tileUrlFunction(t){if(!t)return;let[n,r,i]=t;if(n!==void 0&&r!==void 0&&i!==void 0)return(0,c.createTdtVtsUrl)([n,r,i],{token:e.token,hosts:e.hosts,maxZoom:e.maxZoom??18,wrapX:!0})},tileLoadFunction(r,i){let a=r;a.setLoader(async(r,o,s)=>{let l=(0,c.redactTdtToken)(i);try{let o=await t.decode(i),c=n.readFeatures(o.buffer,{extent:r,featureProjection:s});a.setFeatures(c),e.diagnostics?.onDecoded?.(o.stats,l)}catch(t){let n=t instanceof Error?t:Error(String(t));e.diagnostics?.onError?.(n,l),console.error(`天地图私有 VTS 加载失败`,l,n),a.setState(d.default.ERROR)}})}}),i=r.dispose.bind(r);return r.dispose=()=>{t.dispose(),i()},{source:r,decoder:t}},le=async e=>{let t=await se(e.style);if(t?.version!==8||!t.sources||!Array.isArray(t.layers))throw TypeError(`style 必须是 Style v8 对象或其 JSON 地址`);let{source:n}=ce({token:e.token,hosts:e.hosts,restoreMode:`auto`}),r=new u.default({declutter:!0,source:n}),i=r.dispose.bind(r);r.dispose=()=>{n.dispose(),i()};try{let{applyBackground:e,applyStyle:n}=await import(`ol-mapbox-style`),i=structuredClone(t);for(let e of i.layers)e.type===`symbol`&&e.layout?.[`text-font`]&&(e.layout[`text-font`]=[`sans-serif`]);return await Promise.all([n(r,i,{projection:`EPSG:4326`,source:`base-tdt-vector-tile`,updateSource:!1}),e(r,i)]),r}catch(e){throw r.dispose(),e}},L=(0,p.default)();let R;const ue=e=>{R=e},de=()=>{R=void 0},z=(e,t)=>{if(e.startsWith(`#`)){let n=e.replace(`#`,``);return n.length===3&&(n=n[0]+n[0]+n[1]+n[1]+n[2]+n[2]),`rgba(${parseInt(n.substring(0,2),16)}, ${parseInt(n.substring(2,4),16)}, ${parseInt(n.substring(4,6),16)}, ${t})`}return e},fe=()=>R?.getAllLayers().map(e=>e.get(`_dataList`)||[]).flat(2)||[],pe=e=>{let t=e=>!Array.isArray(e)||e.length===0?0:1+t(e[0]),n=e=>{if(!Array.isArray(e)||e.length<3)return!1;let t=e[0],n=e[e.length-1];return t[0]===n[0]&&t[1]===n[1]},r=e=>Array.isArray(e)&&e.length>=2&&typeof e[0]==`number`&&typeof e[1]==`number`,i=e=>Array.isArray(e)&&e.length>=2&&e.every(r),a=e=>Array.isArray(e)?(t(e)===2?[e]:e).every(e=>Array.isArray(e)&&e.length>=4&&n(e)&&e.every(r)):!1,o=t(e);try{return o<2||!e||e.length===0?`Invalid`:o===2&&i(e)?n(e)&&e.length>=4?`Polygon`:`LineString`:o===3&&Array.isArray(e)&&e.every(i)?a(e)?`Polygon`:e.every(e=>!n(e))?`MultiLineString`:`Invalid`:o===4&&Array.isArray(e)&&e.every(e=>a(e))?`MultiPolygon`:`Invalid`}catch(e){return console.error(`Error analyzing coordinates:`,e),`Invalid`}},me=new g.WMTSCapabilities,he=/* @__PURE__ */ new Map,ge=async e=>{let t=he.get(e);if(t)return t;let n=await fetch(e);if(!n.ok)throw Error(`WMTS capabilities 请求失败:${n.status}`);let r=me.read(await n.text());return he.set(e,r),r},_e=e=>async t=>{let{style:n,format:r,version:i,layerName:a,matrixSet:o}=t,[s,c]=a.split(`:`),l=`${e}/${s}/${c}/gwc/service/wmts?request=GetCapabilities`,u=await ge(l),d=(0,_.optionsFromCapabilities)(u,{style:n||``,layer:c,version:i||`1.1.0`,format:r||`image/png`,matrixSet:o||`EPSG:4326`});if(!d)throw Error(`Unable to create TileLayer`);return new h.default({zIndex:3,className:a,source:new m.WMTS(d)})},B=(e,t)=>{let n=t.get(`_selectInteraction`);n&&(e.removeInteraction(n),n.dispose(),t.unset(`_selectInteraction`));let r=t.get(`_resolutionChangeKey`);r&&((0,ee.unByKey)(r),t.unset(`_resolutionChangeKey`));let i=t.get(`_dynamicMarkerTimer`);i!==void 0&&(clearTimeout(i),t.unset(`_dynamicMarkerTimer`)),t.getSource()?.dispose(),e.removeLayer(t),t.dispose()},ve=`c77eddc667c5bed016fded560baf93e7`,V=(e=`hzsyvector_dark`)=>{let t={zIndex:-5,preload:1,minZoom:8,maxZoom:21,source:new m.XYZ({tileGrid:new v.TileGrid({tileSize:256,resolutions:[.00549933137253187,.00274966568626595,.00137483284313297,.000687416421566485,.000343708210783242,.000171854105391621,859270526958104e-19,429635263479052e-19,214817631739526e-19,107408815869763e-19,537044079348816e-20,268522039674407e-20,134261019837204e-20],origin:[118.122911693886,31.2869311022836],extent:[116.43263049006,28.6201742126026,123.705594256347,31.9765041681924]}),projection:`EPSG:4326`,urls:[`https://ywtg.citybrain.hangzhou.gov.cn/${e}/{z}/{y}/{x}`,`https://ywtg.citybrain.hangzhou.gov.cn:9456/${e}/{z}/{y}/{x}`,`https://ywtg.citybrain.hangzhou.gov.cn:9457/${e}/{z}/{y}/{x}`,`https://ywtg.citybrain.hangzhou.gov.cn:9458/${e}/{z}/{y}/{x}`,`https://ywtg.citybrain.hangzhou.gov.cn:9459/${e}/{z}/{y}/{x}`]}),properties:{_isBaseLayer:!0,_layerName:e}};return new y.Tile(t)},ye=(e,t=ve)=>{let[n,r]=e.split(`_`),i={preload:1,zIndex:-10,cacheSize:20240,properties:{_isBaseLayer:!0,_layerName:e},source:new m.WMTS({crossOrigin:`anonymous`,projection:`EPSG:4326`,wrapX:!0,layer:n,style:`default`,version:`1.0.0`,format:`image/png`,matrixSet:r,tileGrid:new b.default({tileSize:256,origin:[-180,90],matrixIds:[`1`,`2`,`3`,`4`,`5`,`6`,`7`,`8`,`9`,`10`,`11`,`12`,`13`,`14`,`15`,`16`,`17`,`18`,`19`],resolutions:[.703125,.3515625,.17578125,.087890625,.0439453125,.02197265625,.010986328125,.0054931640625,.00274658203125,.001373291015625,.0006866455078125,.00034332275390625,.000171661376953125,858306884765625e-19,4291534423828125e-20,21457672119140625e-21,10728836059570312e-21,5364418029785156e-21,2682209014892578e-21]}),url:`https://t{0-7}.tianditu.gov.cn/${e}/wmts?tk=${t}`})};return new y.Tile(i)},be=e=>({baseImgLayer:new y.Tile({className:`img-layer`,source:new m.XYZ({crossOrigin:`anonymous`,tileSize:256,url:`https://t{0-7}.tianditu.gov.cn/DataServer?T=img_w&x={x}&y={y}&l={z}&tk=${e}`}),zIndex:1}),baseCiaLayer:new y.Tile({className:`img-layer`,source:new m.XYZ({crossOrigin:`anonymous`,tileSize:256,url:`https://t{0-7}.tianditu.gov.cn/DataServer?T=cia_w&x={x}&y={y}&l={z}&tk=${e}`}),zIndex:2}),baseVecLayer:new y.Tile({className:`vec-layer`,source:new m.XYZ({crossOrigin:`anonymous`,tileSize:256,url:`https://t{0-7}.tianditu.gov.cn/DataServer?T=vec_w&x={x}&y={y}&l={z}&tk=${e}`}),zIndex:1}),baseCvaLayer:new y.Tile({className:`vec-layer`,source:new m.XYZ({crossOrigin:`anonymous`,tileSize:256,url:`https://t{0-7}.tianditu.gov.cn/DataServer?T=cva_w&x={x}&y={y}&l={z}&tk=${e}`}),zIndex:2})}),xe=(e=`emap`,t=`3b0cdd02-c366-4363-b6de-081a9f12b364`)=>new y.Tile({preload:1,minZoom:4,maxZoom:20,zIndex:-10,cacheSize:20240,source:new m.XYZ({wrapX:!0,projection:`EPSG:4326`,crossOrigin:`anonymous`,url:`https://ditu{0-6}.zjzwfw.gov.cn/services/wmts/${e}/default/oss/getTile/{z}/{y}/{x}?token=${t}`})}),Se=e=>R.getAllLayers().filter(t=>(t.get(`_layerName`)||t.getClassName())===e),Ce=e=>{Se(e).forEach(e=>{B(R,e)})},we=()=>Math.max(1,Math.min(4,globalThis.navigator?.hardwareConcurrency??2)),H=(e,t,n,r={})=>{let i=new S.default({sources:[e],operationType:`image`,operation:(e,t)=>(((e,t)=>{let n=t.ratioArray,r=t.rgbColorArray;if(n&&r){let[t=0,i=0,a=0]=n;for(let n=0;n<e.length;n+=4){let o=e[n],s=e[n+1],c=e[n+2],l=o*t+s*i+c*a;e[n]=r[0]-l,e[n+1]=r[1]-l,e[n+2]=r[2]-l}}})(e[0].data,t),e[0]),threads:r.threads??we()});return i.on(`beforeoperations`,e=>{e.data.ratioArray=n,e.data.rgbColorArray=t}),i},Te=(e,t,n,r={})=>new x.default({source:H(e,t,n,r)}),U=(e=``)=>{R&&R.getOverlays().getArray().filter(t=>t.get(e||`position`)).forEach(e=>R.removeOverlay(e))},Ee=()=>U(`_isAnimationMarker`),De=(e,t)=>{Ee();let{width:n,height:r,lnglat:i,crsForm:a}=t,o=document.createElement(`div`),s=document.createElement(`img`);s.src=e,s.alt=``,n!==void 0&&(s.width=n),r!==void 0&&(s.height=r),o.append(s);let c=new E.Overlay({element:o,stopEvent:!1,positioning:`bottom-center`,position:T.default.transform([+i[0],+i[1]],a||T.default.WGS84,T.default.WGS84)});c.set(`_isAnimationMarker`,!0),R.addOverlay(c)},Oe=(e={id:`popup-container`,positioning:`top-center`})=>new E.Overlay(Object.assign({element:document.getElementById(e.id)||void 0},e)),ke=()=>{U(),R.getAllLayers().forEach(e=>{e.get(`_selectInteraction`)?.getFeatures().clear()})},Ae=()=>{U(),R&&R.getAllLayers().forEach(e=>{e.get(`_isBaseLayer`)||B(R,e)})},je=()=>{U(),R.getAllLayers().filter(e=>e.get(`_isVectorLayer`)).forEach(e=>{let t=e.get(`_selectInteraction`);t&&(t.dispatchEvent({type:`select`,selected:[],mapBrowserEvent:void 0,deselected:t.getFeatures().getArray()}),t.getFeatures().clear())})},Me=e=>{let t=R.getAllLayers().filter(e=>e.get(`_isVectorLayer`));if(t.length){let n=t.find(t=>t.get(`_uuidSet`).has(e)&&t.get(`_selectInteraction`));if(n){let t=(n.getSource()?.getFeatures()||[]).find(t=>t.get(`_uuid`)===e),r=n.get(`_selectInteraction`);if(r){let n=r.getFeatures().getArray();n.find(t=>t.get(`_uuid`)===e)||(r.dispatchEvent({type:`select`,deselected:n,selected:[t],mapBrowserEvent:void 0}),r.getFeatures().push(t))}}}};let W=[119.71512016971076,30.122490541963536];const Ne=(e={})=>{if(R)return R;let t=Pe(e);return ue(t),t},Pe=(e={})=>{let t=Object.assign({zoom:9.4,maxZoom:18,minZoom:9.4,center:W,baseLayer:`vec-layer`,projection:`EPSG:4326`,layers:[V()],constrainResolution:!1,smoothExtentConstraint:!1,tk:ve},e||{}),n=new C.default({view:new w.default(t),controls:(0,te.defaults)({zoom:!1,rotate:!1,attribution:!1}),interactions:(0,D.defaults)({pinchRotate:!1,doubleClickZoom:!1,altShiftDragRotate:!1}),layers:t.layers||[V()]});W=t.center||W,n.activeBaseLayer=t.baseLayer;let r=e=>n.getAllLayers().find(t=>(t.get(`_layerName`)||t.getClassName())===e);n.getLayerByName=r,n.removeLayerByName=e=>{let t=r(e);t&&B(n,t)},n.changeLayersByNames=(e,t)=>{n.getAllLayers().filter(e=>t.includes(e.getClassName())).forEach(t=>t.setVisible(e?.includes(t.getClassName())))};let i,a;return n.on(`pointermove`,e=>{if(a=e.pixel,i!==void 0)return;let t=()=>{i=void 0;let e=n.getTargetElement();a&&e&&(e.style.cursor=n.hasFeatureAtPixel(a)?`pointer`:``)};i=typeof globalThis.requestAnimationFrame==`function`?globalThis.requestAnimationFrame(t):setTimeout(t,16)}),n.set(`_disposePointerMove`,()=>{i!==void 0&&(typeof globalThis.cancelAnimationFrame==`function`?globalThis.cancelAnimationFrame(i):clearTimeout(i),i=void 0)}),n},Fe=()=>{if(!R)return;let e=R;e.get(`_disposePointerMove`)?.(),e.unset(`_disposePointerMove`),e.getOverlays().forEach(t=>{e.removeOverlay(t)}),e.getInteractions().clear(),e.getAllLayers().forEach(t=>B(e,t)),e.setTarget(``),e.dispose(),de()},Ie=()=>Fe(),Le=()=>R,Re=(e=W)=>{R&&R.getView().animate({zoom:9.4,center:e,duration:1e3})},ze=(e={center:W,isClearAll:!0})=>{Ae(),Re(e.center||W)},G={padding:[50,50,50,50],duration:1e3},Be=(e,t=R,n)=>{let r=t.getView();if(e.length===1)r.animate({zoom:14,duration:1e3,center:e[0],...n||{}});else{let t=(0,ne.boundingExtent)(e);r.fit(t,{...G,...n||{}})}},Ve=(e,t=R,n)=>{t.getView().fit(e,{...G,...n||{}})},He=(e,t=R,n)=>{let r=e.getSource();if(!r||r.isEmpty())return;let i=r.getExtent();i&&t.getView().fit(i,{...G,...n||{}})},Ue=(e,t)=>{let n=R.getView(),r=n.getZoom();n.animate({center:e,duration:2e3}),t?n.animate({zoom:t-2,duration:1e3},{zoom:t,duration:1e3}):n.animate({zoom:r-2,duration:1e3},{zoom:r+2>12?12:r+2,duration:1e3})},We=e=>new M.Text({text:e.text,offsetY:e.offsetY,offsetX:e.offsetX,justify:`center`,textAlign:`center`,font:`16px PingFangSC-Semibold`,fill:new M.Fill({color:`rgba(255, 255, 255, 0.8)`})}),K=(e,t=!1)=>new M.Style({image:new M.Icon({scale:e.scale||1,rotation:e.rotation||0,anchor:e.anchor||[.5,1],src:t&&e.activeImg||e.img}),text:e.showText?We(e):void 0}),q=(e,t)=>{let n=new O.default({geometry:new k.default([+e.lng,+e.lat]),data:Object.assign({},e||{},{layerName:t.layerName})});return n.setStyle(K(e)),n},Ge=(e,t)=>{let{layerName:n,visible:r=!0,zIndex:i=10}=t,a=new j.default;return e.forEach(e=>a.addFeature(q(e,t))),new A.default({zIndex:i,visible:r,source:a,className:n||`marker-layer`})},J=(e,t)=>{let n=t>=14?`largeImg`:t>=11?`smallImg`:`img`;e.forEach(e=>{let t=e.get(`data`);t.isSelected||e.setStyle(K({...t,img:t[n]},!1))})},Y=(e,t)=>{let n=e.get(`data`),r={...n,isSelected:t};e.set(`data`,r),n.isElastic?J([e],R.getView().getZoom()):e.setStyle(K(r,t))},Ke=e=>{e.forEach(e=>{Y(e,!1)}),e.clear()},qe=(e,t)=>{let n=e.map(e=>({...e,isElastic:!0})),r=Ge(n,t),i=r.getSource().getFeatures(),a=R.getView();return J(i,a.getZoom()),r.set(`_resolutionChangeKey`,a.on(`change:resolution`,()=>J(i,a.getZoom()))),r},Je=(e,t)=>{let n=q(e,t),r=new A.default({className:t.layerName||`ol-layer`,source:new j.default({features:[n]})});return R.addLayer(r),{vectorLayer:r}},Ye=(e,t)=>{let n=t.getProperties(),{activeStyle:r}=n;if(t.setStyle(r),L.emit(`selected-feature`,n),e.set(`_hasActive`,!0),e.get(`_isDynamic`)){let t=r.getImage(),i=e.get(`_dynamicMarkerTimer`);i!==void 0&&clearTimeout(i);let a=setTimeout(()=>{e.unset(`_dynamicMarkerTimer`),L.emit(`dynamic-marker`,Object.assign({},n.rawData||{},{lnglat:n.lnglat,style:n.style,crsForm:n.crsForm,width:t.getWidth(),height:t.getHeight()}))},1e3);e.set(`_dynamicMarkerTimer`,a)}if(e.get(`_isAutoFit`)){let e=R.getView();e.animate({duration:1e3,zoom:e.getZoom(),center:(0,ne.getCenter)(t.getGeometry().getExtent())})}},X=e=>{let t=new D.Select({style:null,multi:!1,hitTolerance:10,layers:[e],condition:t=>{if(!(0,re.singleClick)(t))return!1;let n=!1;return R.forEachFeatureAtPixel(t.pixel,()=>{n=!0},{layerFilter:t=>t===e}),n}});return t.on(`select`,t=>{let{selected:n,deselected:r}=t;if(n.length){let t=n[0];if(e.get(`_isClusterLayer`)){let n=t.get(`features`);n.length===1&&Ye(e,n[0])}else Ye(e,t)}if(r.length){let t=r[0],n=t.getProperties();t.setStyle(n.unActiveStyle),e.set(`_hasActive`,!1)}}),R.addInteraction(t),e.set(`_selectInteraction`,t),t},Xe=(e,t,n)=>{let r=new D.Select({style:null,layers:t=>e.includes(t.getClassName())});return r.on(`select`,({deselected:e,selected:r})=>{if(e.length){let t=e[0];Y(t,!1),n?.(t)}if(r.length){let e=r[0];Y(e,!0),t?.(e)}}),r},Ze=e=>{let t=(0,ie.getArea)(e,{projection:`EPSG:4326`});return t>1e4?`${Math.round(t/1e6*100)/100} km\xB2`:`${Math.round(t*100)/100} m\xB2`},Qe=e=>{let t=(0,ie.getLength)(e,{projection:`EPSG:4326`});return t>100?`${Math.round(t/1e3*100)/100} km`:`${Math.round(t*100)/100} m`},$e=new M.Style({fill:new M.Fill({color:`rgba(255, 255, 255, 0.2)`}),stroke:new M.Stroke({color:`rgba(0, 0, 0, 0.5)`,lineDash:[10,10],width:2}),image:new M.Circle({radius:5,stroke:new M.Stroke({color:`rgba(0, 0, 0, 0.7)`}),fill:new M.Fill({color:`rgba(255, 255, 255, 0.2)`})})}),et=/* @__PURE__ */ new WeakMap,tt=e=>{let t=et.get(e);if(t)return t;let n=new M.Style({text:new M.Text({font:`14px`,fill:new M.Fill({color:`rgba(255, 255, 255, 1)`}),backgroundFill:new M.Fill({color:`rgba(0, 0, 0, 0.7)`}),padding:[3,3,3,3],textBaseline:`bottom`,offsetY:-15}),image:new M.RegularShape({radius:8,points:3,angle:Math.PI,displacement:[0,10],fill:new M.Fill({color:`rgba(0, 0, 0, 0.7)`})})});return et.set(e,n),n},nt=(e,t=$e)=>{let n=t?[t]:[],r=e.getGeometry(),i,a;if(r.getType()===`Polygon`?(i=r.getInteriorPoint(),a=Ze(r)):r.getType()===`LineString`&&(i=new k.default(r.getLastCoordinate()),a=Qe(r)),i&&a){let t=tt(e);t.setGeometry(i),t.getText().setText(a),n.push(t)}return n},rt=(e=`Point`,t,n)=>new N.default({source:t.getSource(),type:e,style:n?e=>nt(e,void 0):void 0}),it=(e,t,n)=>{let{layerName:r}=n||{},i=Object.assign({className:r||`ol-layer`,source:new j.default({features:new P.default().readFeatures(e)}),style:t||new M.Style({stroke:new M.Stroke({color:`red`,lineDash:[10],width:3}),fill:new M.Fill({color:`rgba(0, 0, 255, 0.1)`})})},n||{});return new A.default(i)},Z=(e,t,n,r)=>t&&n?.get(e[t])||r,at=(e,t)=>{let{key:n,crsForm:r}=t,i=[];return e.forEach(e=>{try{let t=e[n],r=Array.isArray(t)?t:JSON.parse(t||`[]`);if(r.length){let t=e.geoType||pe(r);t!==`Invalid`&&i.push({type:`Feature`,properties:{...e},geometry:{type:t,coordinates:r}})}}catch(e){console.error(`创建线状数据失败:${e}`)}}),T.default.transform({type:`FeatureCollection`,features:i},r||T.default.WGS84,T.default.WGS84)},ot=(e,t)=>{let{isLine:n,colorMap:r,fillColor:i,colorKey:a,strokeColor:o,fillOpacity:s,strokeWeight:c,activeFillColor:l,activeFillOpacity:u,activeStrokeColor:d,activeStrokeWeight:f}=t||{},p=e.getProperties(),m=new M.Style({stroke:new M.Stroke({width:f??c??4,color:d||Z(p,a,r,o)})}),h=new M.Style({stroke:new M.Stroke({width:c??2,color:Z(p,a,r,o)})});return n||(m.setFill(new M.Fill({color:z(l||i||``,u??s??1)||z(Z(p,a,r,i)||``,s??1)})),h.setFill(new M.Fill({color:z(Z(p,a,r,i)||``,s??1)}))),e.setProperties({activeStyle:m,unActiveStyle:h}),h},st=(e,t)=>{let n=at(e,t),r=new g.GeoJSON().readFeatures(n),i=r.map(e=>{let t={...e.getProperties()};return delete t.geometry,t});return r.forEach(e=>{e.setStyle(ot(e,t))}),{features:r,acceptedData:i}},Q=(e,t)=>{let{isAutoFit:n,layerName:r,openClick:i}=t,{features:a,acceptedData:o}=st(e,t),s=new A.default({zIndex:5,className:r||`ol-layer`,source:new j.default({features:a})});return i&&X(s),s.setProperties({_isCustom:!0,_isAutoFit:n,_isVectorLayer:!0,_vectorConfig:t,_layerName:r,_dataList:o,_uuidSet:new Set(o.map(e=>e._uuid))}),s},ct=(e,t,n)=>{let r=e.getSource(),{_vectorConfig:i}=e.getProperties()||{},{features:a,acceptedData:o}=st(t,Object.assign({},i,{crsForm:n??i?.crsForm}));r.addFeatures(a);let s=new Set(e.get(`_uuidSet`)||[]);o.forEach(e=>s.add(e._uuid)),e.set(`_uuidSet`,s),e.set(`_dataList`,[...e.get(`_dataList`)||[],...o])},lt=(e=[],t)=>Q(e,Object.assign({},t,{isLine:!1})),ut=(e=[],t)=>Q(e,Object.assign({},t,{isLine:!0})),dt=e=>t=>{let{baseUrl:n,markerIcon:r,statusNum:i=5,activeScale:a=1.3,markerSize:o=[32,32]}=t,s=e(n),[c,l]=o,u=Array(i*2);for(let e=0;e<i;e++){let t=s(`${r}-${e}`,`.webp`);u[e]=new M.Style({zIndex:88+e,image:new M.Icon({width:c,height:l,src:t,anchor:[.5,1]})});let n=s(`${r}-${e}-active`,`.webp`);u[e+i]=new M.Style({zIndex:120,image:new M.Icon({width:c*a,height:l*a,anchor:[.5,1],src:n||t})})}return u},ft=(e,t=[])=>e.map(e=>{let{crsForm:n}=e,r=T.default.transform([+e.lnglat[0],+e.lnglat[1]],n||T.default.WGS84,T.default.WGS84),i=new E.Feature({geometry:new ae.Point(r)});return i.setProperties({...e,unActiveStyle:t[e.style],activeStyle:t[e.style+t.length/2]}),i.setStyle(t[e.style]),i}),pt=(e,t,n={})=>{let r=e.get(`_massMarksStyles`),i=e?.getSource(),{clear:a}=n,o=ft(t,r);a&&i?.clear(),i?.addFeatures(o);let s=[...a?[]:e.get(`_dataList`)||[],...t];e.set(`_dataList`,s),e.set(`_uuidSet`,new Set(s.map(e=>e._uuid)))},$=(e,t=[])=>{let n=new A.default({zIndex:2e3,source:new j.default({features:ft(e,t)})});return n.setProperties({_isCustom:!0,_isVectorLayer:!0,_isMassMarksLayer:!0,_statusNum:t.length/2,_dataList:[...e],_uuidSet:new Set(e.map(e=>e._uuid)||[])}),n},mt=e=>(t=[],n,r=!0)=>{let{offset:i=[0,0],baseUrl:a,hasLine:o,hasFace:s,layerName:c,isDynamic:l,isAutoFit:u,statusNum:d,markerIcon:f,marksStyles:p,markerSize:m,activeScale:h,vectorConfig:g}=n,_=p||dt(e)({baseUrl:a,markerIcon:f,markerSize:m,statusNum:d||5,activeScale:h||1.3}),v=$(t,_);if(r&&(v.setProperties({_offset:i,_isAutoFit:u}),X(v)),o){let e=Q(t,Object.assign({},{key:`line`,isLine:!0,openClick:!1,strokeWeight:4,strokeColor:`rgba(29, 235, 255, 0.8)`},g||{}));R.addLayer(e)}if(s){let e=Q(t,Object.assign({},{isLine:!1,key:`faceList`,strokeWeight:1,openClick:!1,fillColor:`#4247DF`,strokeStyle:`dashed`,strokeColor:`#4247DF`},g||{}));R.addLayer(e)}return v.setProperties({_isCustom:!0,_offset:i,_hasLine:o,_hasFace:s,className:c,_layerName:c,_isVectorLayer:!0,_isDynamic:l,_massMarksStyles:_}),R.addLayer(v),v},ht=(e=[])=>{let t=new M.Style({}),n=new Set(e),r=[];return R.getAllLayers().filter(e=>e.get(`_isMassMarksLayer`)).forEach(e=>{e.getSource().getFeatures().forEach(e=>{let i=e.getProperties();n.has(i.status)?(r.push(i),e.setStyle(i.unActiveStyle)):e.setStyle(t)})}),r},gt=(e,t)=>{let n=e.length,r={},{distance:i,minDistance:a,openClick:o,buildStyle:s,singleStyles:c,computedRadius:l,layerName:u=`cluster-layer`}=t,d=e=>(e/n)**(1/18);r[1]=c;let f=e=>{let t=e.get(`features`).length,n=r[t],i=l?l(t):d(t);if(n||(n=new M.Style({image:new I.default({radius:i*20,stroke:new M.Stroke({width:2,color:`hsla(${180-i*180}, 100%, 40%, 1)`}),fill:new M.Fill({color:`hsla(${180-i*180}, 100%, 50%, 1)`})}),text:new M.Text({text:t.toString(),fill:new M.Fill({color:`hsla(${180-i*180}, 100%, 10%, 1)`}),textBaseline:`middle`})}),r[t]=n),Array.isArray(n)){let t=e.get(`features`)[0].get(`styleIndex`)??0;return n[t]}return n},p=new A.default({zIndex:200,className:u,source:new F.default({distance:i||80,minDistance:a||0,source:new j.default({features:e.map(e=>{let t=new E.Feature(new ae.Point(e.lnglat));t.setProperties(e);let n=e.style??0;return t.setProperties({unActiveStyle:c[n],activeStyle:c[n+c.length/2]}),t})})}),style:e=>s?s(e):f(e)});return p.setProperties({_isCustom:!0,_isVectorLayer:!0,_isClusterLayer:!0}),o&&X(p),p};exports.GeometryType=oe,exports.activeFeatureByUid=Me,exports.addFeaturesByLayer=pt,exports.addMassMarksLayer=mt,exports.appendFeaturesByLayer=ct,exports.baseLayers=be,exports.buildMassMarksStyles=dt,exports.changeLayer=Te,exports.changeSource=H,exports.changeUnselectStyle=Ke,exports.createAnimationMarker=De,exports.createBaseLayer=V,exports.createBusinessLayer=Q,exports.createClusterLayer=gt,exports.createDrawInteraction=rt,exports.createElasticMarkerLayer=qe,exports.createGeoJsonLayer=it,exports.createIconStyle=K,exports.createLayerSelectByNames=Xe,exports.createMap=Pe,exports.createMapInstance=Ne,exports.createMapWorldLayer=ye,exports.createMarker=q,exports.createMarkersLayer=Ge,exports.createMassMarksLayer=$,exports.createMoveMarkerLayer=Je,exports.createOverlay=Oe,exports.createSelectByLayer=X,exports.createTdtVectorSource=ce,exports.createTdtVtsLayer=le,exports.createText=We,exports.createVectorFaceLayer=lt,exports.createVectorLineLayer=ut,exports.createWmtsLayer=_e,exports.createZheJiangLayer=xe,exports.disposeInstance=Ie,exports.disposeMap=Fe,exports.emitter=L,exports.flyToAnimate=Ue,exports.getDrawStyle=nt,exports.getLayerByName=Se,exports.getLayersDataList=fe,exports.getMapInstance=Le,Object.defineProperty(exports,"instance",{enumerable:!0,get:function(){return R}}),exports.removeAllLayers=Ae,exports.removeLayerByName=Ce,exports.removeOverlays=U,exports.resetActiveFeature=je,exports.resetActiveVector=ke,exports.resetMap=ze,exports.resetZoomAndCenter=Re,exports.setFitViewByCoords=Be,exports.setFitViewByGeom=Ve,exports.setFitViewByLayer=He,exports.updateMarksLayersByStatus=ht,Object.keys(c).forEach(function(e){e!=="default"&&!Object.prototype.hasOwnProperty.call(exports,e)&&Object.defineProperty(exports,e,{enumerable:!0,get:function(){return c[e]}})});
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,s)=>(s=n==null?{}:e(i(n)),o(r||!n||!n.__esModule||!a.call(n,`default`)?t(s,`default`,{value:n,enumerable:!0}):s,n));let c=require("tdt-vts-core"),l=require("ol/format/MVT");l=s(l,1);let u=require("ol/layer/VectorTile");u=s(u,1);let d=require("ol/TileState");d=s(d,1);let f=require("ol/source/VectorTile");f=s(f,1);let p=require("mitt");p=s(p,1);let m=require("ol/source"),h=require("ol/layer/Tile");h=s(h,1);let g=require("ol/format"),_=require("ol/source/WMTS"),v=require("ol/tilegrid"),y=require("ol/layer"),b=require("ol/tilegrid/WMTS");b=s(b,1);let ee=require("ol/Observable"),x=require("ol/layer/Image");x=s(x,1);let S=require("ol/source/Raster");S=s(S,1);let C=require("ol/Map");C=s(C,1);let w=require("ol/View");w=s(w,1);let te=require("ol/control"),T=require("gcoord");T=s(T,1);let E=require("ol"),D=require("ol/interaction"),ne=require("ol/extent"),re=require("ol/events/condition"),O=require("ol/Feature");O=s(O,1);let k=require("ol/geom/Point");k=s(k,1);let A=require("ol/layer/Vector");A=s(A,1);let j=require("ol/source/Vector");j=s(j,1);let M=require("ol/style"),N=require("ol/interaction/Draw");N=s(N,1);let ie=require("ol/sphere"),P=require("ol/format/GeoJSON");P=s(P,1);let ae=require("ol/geom"),F=require("ol/source/Cluster");F=s(F,1);let I=require("ol/style/Circle");I=s(I,1);let oe=/* @__PURE__ */ function(e){return e.LineString=`LineString`,e.MultiLineString=`MultiLineString`,e.Polygon=`Polygon`,e.MultiPolygon=`MultiPolygon`,e.Invalid=`Invalid`,e}({});const se=async e=>{if(typeof e!=`string`)return e;if(!e.trim())throw TypeError(`style 地址不能为空`);let t=await fetch(e);if(!t.ok)throw Error(`加载 style 失败:HTTP ${t.status}`);return await t.json()},ce=e=>{if(!e.hosts?.length||e.hosts.some(e=>!e.trim()))throw TypeError(`hosts 不能为空`);let t=new c.TdtDecoderWorkerClient(e.restoreMode,e.decoderOptions),n=new l.default({layerName:`mvt:layer`}),r=new f.default({projection:`EPSG:3857`,minZoom:e.minZoom??1,maxZoom:e.maxZoom??18,tileSize:512,wrapX:!0,format:n,attributions:`© <a href="https://www.tianditu.gov.cn/" target="_blank" rel="noopener">天地图</a>`,tileUrlFunction(t){if(!t)return;let[n,r,i]=t;if(n!==void 0&&r!==void 0&&i!==void 0)return(0,c.createTdtVtsUrl)([n,r,i],{token:e.token,hosts:e.hosts,maxZoom:e.maxZoom??18,wrapX:!0})},tileLoadFunction(r,i){let a=r;a.setLoader(async(r,o,s)=>{let l=(0,c.redactTdtToken)(i);try{let o=await t.decode(i),c=n.readFeatures(o.buffer,{extent:r,featureProjection:s});a.setFeatures(c),e.diagnostics?.onDecoded?.(o.stats,l)}catch(t){let n=t instanceof Error?t:Error(String(t));e.diagnostics?.onError?.(n,l),console.error(`天地图私有 VTS 加载失败`,l,n),a.setState(d.default.ERROR)}})}}),i=r.dispose.bind(r);return r.dispose=()=>{t.dispose(),i()},{source:r,decoder:t}},le=async e=>{let t=await se(e.style);if(t?.version!==8||!t.sources||!Array.isArray(t.layers))throw TypeError(`style 必须是 Style v8 对象或其 JSON 地址`);let{source:n}=ce({token:e.token,hosts:e.hosts,restoreMode:`auto`}),r=new u.default({declutter:!0,source:n}),i=r.dispose.bind(r);r.dispose=()=>{n.dispose(),i()};try{let{applyBackground:e,applyStyle:n}=await import(`ol-mapbox-style`),i=structuredClone(t);for(let e of i.layers)e.type===`symbol`&&e.layout?.[`text-font`]&&(e.layout[`text-font`]=[`sans-serif`]);return await Promise.all([n(r,i,{projection:`EPSG:4326`,source:`base-tdt-vector-tile`,updateSource:!1}),e(r,i)]),r}catch(e){throw r.dispose(),e}},L=(0,p.default)();let R;const ue=e=>{R=e},de=()=>{R=void 0},z=(e,t)=>{if(e.startsWith(`#`)){let n=e.replace(`#`,``);return n.length===3&&(n=n[0]+n[0]+n[1]+n[1]+n[2]+n[2]),`rgba(${parseInt(n.substring(0,2),16)}, ${parseInt(n.substring(2,4),16)}, ${parseInt(n.substring(4,6),16)}, ${t})`}return e},fe=()=>R?.getAllLayers().map(e=>e.get(`_dataList`)||[]).flat(2)||[],pe=e=>{let t=e=>!Array.isArray(e)||e.length===0?0:1+t(e[0]),n=e=>{if(!Array.isArray(e)||e.length<3)return!1;let t=e[0],n=e[e.length-1];return t[0]===n[0]&&t[1]===n[1]},r=e=>Array.isArray(e)&&e.length>=2&&typeof e[0]==`number`&&typeof e[1]==`number`,i=e=>Array.isArray(e)&&e.length>=2&&e.every(r),a=e=>Array.isArray(e)?(t(e)===2?[e]:e).every(e=>Array.isArray(e)&&e.length>=4&&n(e)&&e.every(r)):!1,o=t(e);try{return o<2||!e||e.length===0?`Invalid`:o===2&&i(e)?n(e)&&e.length>=4?`Polygon`:`LineString`:o===3&&Array.isArray(e)&&e.every(i)?a(e)?`Polygon`:e.every(e=>!n(e))?`MultiLineString`:`Invalid`:o===4&&Array.isArray(e)&&e.every(e=>a(e))?`MultiPolygon`:`Invalid`}catch(e){return console.error(`Error analyzing coordinates:`,e),`Invalid`}},me=new g.WMTSCapabilities,he=/* @__PURE__ */ new Map,ge=async e=>{let t=he.get(e);if(t)return t;let n=await fetch(e);if(!n.ok)throw Error(`WMTS capabilities 请求失败:${n.status}`);let r=me.read(await n.text());return he.set(e,r),r},_e=e=>async t=>{let{style:n,format:r,version:i,layerName:a,matrixSet:o}=t,[s,c]=a.split(`:`),l=`${e}/${s}/${c}/gwc/service/wmts?request=GetCapabilities`,u=await ge(l),d=(0,_.optionsFromCapabilities)(u,{style:n||``,layer:c,version:i||`1.1.0`,format:r||`image/png`,matrixSet:o||`EPSG:4326`});if(!d)throw Error(`Unable to create TileLayer`);return new h.default({zIndex:3,className:a,source:new m.WMTS(d)})},B=(e,t)=>{let n=t.get(`_selectInteraction`);n&&(e.removeInteraction(n),n.dispose(),t.unset(`_selectInteraction`));let r=t.get(`_resolutionChangeKey`);r&&((0,ee.unByKey)(r),t.unset(`_resolutionChangeKey`));let i=t.get(`_dynamicMarkerTimer`);i!==void 0&&(clearTimeout(i),t.unset(`_dynamicMarkerTimer`)),t.getSource()?.dispose(),e.removeLayer(t),t.dispose()},ve=`c77eddc667c5bed016fded560baf93e7`,V=(e=`hzsyvector_dark`)=>{let t={zIndex:-5,preload:1,minZoom:8,maxZoom:21,source:new m.XYZ({tileGrid:new v.TileGrid({tileSize:256,resolutions:[.00549933137253187,.00274966568626595,.00137483284313297,.000687416421566485,.000343708210783242,.000171854105391621,859270526958104e-19,429635263479052e-19,214817631739526e-19,107408815869763e-19,537044079348816e-20,268522039674407e-20,134261019837204e-20],origin:[118.122911693886,31.2869311022836],extent:[116.43263049006,28.6201742126026,123.705594256347,31.9765041681924]}),projection:`EPSG:4326`,urls:[`https://ywtg.citybrain.hangzhou.gov.cn/${e}/{z}/{y}/{x}`,`https://ywtg.citybrain.hangzhou.gov.cn:9456/${e}/{z}/{y}/{x}`,`https://ywtg.citybrain.hangzhou.gov.cn:9457/${e}/{z}/{y}/{x}`,`https://ywtg.citybrain.hangzhou.gov.cn:9458/${e}/{z}/{y}/{x}`,`https://ywtg.citybrain.hangzhou.gov.cn:9459/${e}/{z}/{y}/{x}`]}),properties:{_isBaseLayer:!0,_layerName:e}};return new y.Tile(t)},ye=(e,t=ve)=>{let[n,r]=e.split(`_`),i={preload:1,zIndex:-10,cacheSize:20240,properties:{_isBaseLayer:!0,_layerName:e},source:new m.WMTS({crossOrigin:`anonymous`,projection:`EPSG:4326`,wrapX:!0,layer:n,style:`default`,version:`1.0.0`,format:`image/png`,matrixSet:r,tileGrid:new b.default({tileSize:256,origin:[-180,90],matrixIds:[`1`,`2`,`3`,`4`,`5`,`6`,`7`,`8`,`9`,`10`,`11`,`12`,`13`,`14`,`15`,`16`,`17`,`18`,`19`],resolutions:[.703125,.3515625,.17578125,.087890625,.0439453125,.02197265625,.010986328125,.0054931640625,.00274658203125,.001373291015625,.0006866455078125,.00034332275390625,.000171661376953125,858306884765625e-19,4291534423828125e-20,21457672119140625e-21,10728836059570312e-21,5364418029785156e-21,2682209014892578e-21]}),url:`https://t{0-7}.tianditu.gov.cn/${e}/wmts?tk=${t}`})};return new y.Tile(i)},be=e=>({baseImgLayer:new y.Tile({className:`img-layer`,source:new m.XYZ({crossOrigin:`anonymous`,tileSize:256,url:`https://t{0-7}.tianditu.gov.cn/DataServer?T=img_w&x={x}&y={y}&l={z}&tk=${e}`}),zIndex:1}),baseCiaLayer:new y.Tile({className:`img-layer`,source:new m.XYZ({crossOrigin:`anonymous`,tileSize:256,url:`https://t{0-7}.tianditu.gov.cn/DataServer?T=cia_w&x={x}&y={y}&l={z}&tk=${e}`}),zIndex:2}),baseVecLayer:new y.Tile({className:`vec-layer`,source:new m.XYZ({crossOrigin:`anonymous`,tileSize:256,url:`https://t{0-7}.tianditu.gov.cn/DataServer?T=vec_w&x={x}&y={y}&l={z}&tk=${e}`}),zIndex:1}),baseCvaLayer:new y.Tile({className:`vec-layer`,source:new m.XYZ({crossOrigin:`anonymous`,tileSize:256,url:`https://t{0-7}.tianditu.gov.cn/DataServer?T=cva_w&x={x}&y={y}&l={z}&tk=${e}`}),zIndex:2})}),xe=(e=`emap`,t=`3b0cdd02-c366-4363-b6de-081a9f12b364`)=>new y.Tile({preload:1,minZoom:4,maxZoom:20,zIndex:-10,cacheSize:20240,source:new m.XYZ({wrapX:!0,projection:`EPSG:4326`,crossOrigin:`anonymous`,url:`https://ditu{0-6}.zjzwfw.gov.cn/services/wmts/${e}/default/oss/getTile/{z}/{y}/{x}?token=${t}`})}),Se=e=>R.getAllLayers().find(t=>(t.get(`_layerName`)||t.getClassName())===e),Ce=e=>{R.getAllLayers().filter(t=>(t.get(`_layerName`)||t.getClassName())===e).forEach(e=>{B(R,e)})},we=()=>Math.max(1,Math.min(4,globalThis.navigator?.hardwareConcurrency??2)),H=(e,t,n,r={})=>{let i=new S.default({sources:[e],operationType:`image`,operation:(e,t)=>(((e,t)=>{let n=t.ratioArray,r=t.rgbColorArray;if(n&&r){let[t=0,i=0,a=0]=n;for(let n=0;n<e.length;n+=4){let o=e[n],s=e[n+1],c=e[n+2],l=o*t+s*i+c*a;e[n]=r[0]-l,e[n+1]=r[1]-l,e[n+2]=r[2]-l}}})(e[0].data,t),e[0]),threads:r.threads??we()});return i.on(`beforeoperations`,e=>{e.data.ratioArray=n,e.data.rgbColorArray=t}),i},Te=(e,t,n,r={})=>new x.default({source:H(e,t,n,r)}),U=(e=``)=>{R&&R.getOverlays().getArray().filter(t=>t.get(e||`position`)).forEach(e=>R.removeOverlay(e))},Ee=()=>U(`_isAnimationMarker`),De=(e,t)=>{Ee();let{width:n,height:r,lnglat:i,crsForm:a}=t,o=document.createElement(`div`),s=document.createElement(`img`);s.src=e,s.alt=``,n!==void 0&&(s.width=n),r!==void 0&&(s.height=r),o.append(s);let c=new E.Overlay({element:o,stopEvent:!1,positioning:`bottom-center`,position:T.default.transform([+i[0],+i[1]],a||T.default.WGS84,T.default.WGS84)});c.set(`_isAnimationMarker`,!0),R.addOverlay(c)},Oe=(e={id:`popup-container`,positioning:`top-center`})=>new E.Overlay(Object.assign({element:document.getElementById(e.id)||void 0},e)),ke=()=>{U(),R.getAllLayers().forEach(e=>{e.get(`_selectInteraction`)?.getFeatures().clear()})},Ae=()=>{U(),R&&R.getAllLayers().forEach(e=>{e.get(`_isBaseLayer`)||B(R,e)})},je=()=>{U(),R.getAllLayers().filter(e=>e.get(`_isVectorLayer`)).forEach(e=>{let t=e.get(`_selectInteraction`);t&&(t.dispatchEvent({type:`select`,selected:[],mapBrowserEvent:void 0,deselected:t.getFeatures().getArray()}),t.getFeatures().clear())})},Me=e=>{let t=R.getAllLayers().filter(e=>e.get(`_isVectorLayer`));if(t.length){let n=t.find(t=>t.get(`_uuidSet`).has(e)&&t.get(`_selectInteraction`));if(n){let t=(n.getSource()?.getFeatures()||[]).find(t=>t.get(`_uuid`)===e),r=n.get(`_selectInteraction`);if(r){let n=r.getFeatures().getArray();n.find(t=>t.get(`_uuid`)===e)||(r.dispatchEvent({type:`select`,deselected:n,selected:[t],mapBrowserEvent:void 0}),r.getFeatures().push(t))}}}};let W=[119.71512016971076,30.122490541963536];const Ne=(e={})=>{if(R)return R;let t=Pe(e);return ue(t),t},Pe=(e={})=>{let t=Object.assign({zoom:9.4,maxZoom:18,minZoom:9.4,center:W,baseLayer:`vec-layer`,projection:`EPSG:4326`,layers:[V()],constrainResolution:!1,smoothExtentConstraint:!1,tk:ve},e||{}),n=new C.default({view:new w.default(t),controls:(0,te.defaults)({zoom:!1,rotate:!1,attribution:!1}),interactions:(0,D.defaults)({pinchRotate:!1,doubleClickZoom:!1,altShiftDragRotate:!1}),layers:t.layers||[V()]});W=t.center||W,n.activeBaseLayer=t.baseLayer;let r=e=>n.getAllLayers().find(t=>(t.get(`_layerName`)||t.getClassName())===e);n.getLayerByName=r,n.removeLayerByName=e=>{let t=r(e);t&&B(n,t)},n.changeLayersByNames=(e,t)=>{n.getAllLayers().filter(e=>t.includes(e.getClassName())).forEach(t=>t.setVisible(e?.includes(t.getClassName())))};let i,a;return n.on(`pointermove`,e=>{if(a=e.pixel,i!==void 0)return;let t=()=>{i=void 0;let e=n.getTargetElement();a&&e&&(e.style.cursor=n.hasFeatureAtPixel(a)?`pointer`:``)};i=typeof globalThis.requestAnimationFrame==`function`?globalThis.requestAnimationFrame(t):setTimeout(t,16)}),n.set(`_disposePointerMove`,()=>{i!==void 0&&(typeof globalThis.cancelAnimationFrame==`function`?globalThis.cancelAnimationFrame(i):clearTimeout(i),i=void 0)}),n},Fe=()=>{if(!R)return;let e=R;e.get(`_disposePointerMove`)?.(),e.unset(`_disposePointerMove`),e.getOverlays().forEach(t=>{e.removeOverlay(t)}),e.getInteractions().clear(),e.getAllLayers().forEach(t=>B(e,t)),e.setTarget(``),e.dispose(),de()},Ie=()=>Fe(),Le=()=>R,Re=(e=W)=>{R&&R.getView().animate({zoom:9.4,center:e,duration:1e3})},ze=(e={center:W,isClearAll:!0})=>{Ae(),Re(e.center||W)},G={padding:[50,50,50,50],duration:1e3},Be=(e,t=R,n)=>{let r=t.getView();if(e.length===1)r.animate({zoom:14,duration:1e3,center:e[0],...n||{}});else{let t=(0,ne.boundingExtent)(e);r.fit(t,{...G,...n||{}})}},Ve=(e,t=R,n)=>{t.getView().fit(e,{...G,...n||{}})},He=(e,t=R,n)=>{let r=e.getSource();if(!r||r.isEmpty())return;let i=r.getExtent();i&&t.getView().fit(i,{...G,...n||{}})},Ue=(e,t)=>{let n=R.getView(),r=n.getZoom();n.animate({center:e,duration:2e3}),t?n.animate({zoom:t-2,duration:1e3},{zoom:t,duration:1e3}):n.animate({zoom:r-2,duration:1e3},{zoom:r+2>12?12:r+2,duration:1e3})},We=e=>new M.Text({text:e.text,offsetY:e.offsetY,offsetX:e.offsetX,justify:`center`,textAlign:`center`,font:`16px PingFangSC-Semibold`,fill:new M.Fill({color:`rgba(255, 255, 255, 0.8)`})}),K=(e,t=!1)=>new M.Style({image:new M.Icon({scale:e.scale||1,rotation:e.rotation||0,anchor:e.anchor||[.5,1],src:t&&e.activeImg||e.img}),text:e.showText?We(e):void 0}),q=(e,t)=>{let n=new O.default({geometry:new k.default([+e.lng,+e.lat]),data:Object.assign({},e||{},{layerName:t.layerName})});return n.setStyle(K(e)),n},Ge=(e,t)=>{let{layerName:n,visible:r=!0,zIndex:i=10}=t,a=new j.default;return e.forEach(e=>a.addFeature(q(e,t))),new A.default({zIndex:i,visible:r,source:a,className:n||`marker-layer`})},J=(e,t)=>{let n=t>=14?`largeImg`:t>=11?`smallImg`:`img`;e.forEach(e=>{let t=e.get(`data`);t.isSelected||e.setStyle(K({...t,img:t[n]},!1))})},Y=(e,t)=>{let n=e.get(`data`),r={...n,isSelected:t};e.set(`data`,r),n.isElastic?J([e],R.getView().getZoom()):e.setStyle(K(r,t))},Ke=e=>{e.forEach(e=>{Y(e,!1)}),e.clear()},qe=(e,t)=>{let n=e.map(e=>({...e,isElastic:!0})),r=Ge(n,t),i=r.getSource().getFeatures(),a=R.getView();return J(i,a.getZoom()),r.set(`_resolutionChangeKey`,a.on(`change:resolution`,()=>J(i,a.getZoom()))),r},Je=(e,t)=>{let n=q(e,t),r=new A.default({className:t.layerName||`ol-layer`,source:new j.default({features:[n]})});return R.addLayer(r),{vectorLayer:r}},Ye=(e,t)=>{let n=t.getProperties(),{activeStyle:r}=n;if(t.setStyle(r),L.emit(`selected-feature`,n),e.set(`_hasActive`,!0),e.get(`_isDynamic`)){let t=r.getImage(),i=e.get(`_dynamicMarkerTimer`);i!==void 0&&clearTimeout(i);let a=setTimeout(()=>{e.unset(`_dynamicMarkerTimer`),L.emit(`dynamic-marker`,Object.assign({},n.rawData||{},{lnglat:n.lnglat,style:n.style,crsForm:n.crsForm,width:t.getWidth(),height:t.getHeight()}))},1e3);e.set(`_dynamicMarkerTimer`,a)}if(e.get(`_isAutoFit`)){let e=R.getView();e.animate({duration:1e3,zoom:e.getZoom(),center:(0,ne.getCenter)(t.getGeometry().getExtent())})}},X=e=>{let t=new D.Select({style:null,multi:!1,hitTolerance:10,layers:[e],condition:t=>{if(!(0,re.singleClick)(t))return!1;let n=!1;return R.forEachFeatureAtPixel(t.pixel,()=>{n=!0},{layerFilter:t=>t===e}),n}});return t.on(`select`,t=>{let{selected:n,deselected:r}=t;if(n.length){let t=n[0];if(e.get(`_isClusterLayer`)){let n=t.get(`features`);n.length===1&&Ye(e,n[0])}else Ye(e,t)}if(r.length){let t=r[0],n=t.getProperties();t.setStyle(n.unActiveStyle),e.set(`_hasActive`,!1)}}),R.addInteraction(t),e.set(`_selectInteraction`,t),t},Xe=(e,t,n)=>{let r=new D.Select({style:null,layers:t=>e.includes(t.getClassName())});return r.on(`select`,({deselected:e,selected:r})=>{if(e.length){let t=e[0];Y(t,!1),n?.(t)}if(r.length){let e=r[0];Y(e,!0),t?.(e)}}),r},Ze=e=>{let t=(0,ie.getArea)(e,{projection:`EPSG:4326`});return t>1e4?`${Math.round(t/1e6*100)/100} km\xB2`:`${Math.round(t*100)/100} m\xB2`},Qe=e=>{let t=(0,ie.getLength)(e,{projection:`EPSG:4326`});return t>100?`${Math.round(t/1e3*100)/100} km`:`${Math.round(t*100)/100} m`},$e=new M.Style({fill:new M.Fill({color:`rgba(255, 255, 255, 0.2)`}),stroke:new M.Stroke({color:`rgba(0, 0, 0, 0.5)`,lineDash:[10,10],width:2}),image:new M.Circle({radius:5,stroke:new M.Stroke({color:`rgba(0, 0, 0, 0.7)`}),fill:new M.Fill({color:`rgba(255, 255, 255, 0.2)`})})}),et=/* @__PURE__ */ new WeakMap,tt=e=>{let t=et.get(e);if(t)return t;let n=new M.Style({text:new M.Text({font:`14px`,fill:new M.Fill({color:`rgba(255, 255, 255, 1)`}),backgroundFill:new M.Fill({color:`rgba(0, 0, 0, 0.7)`}),padding:[3,3,3,3],textBaseline:`bottom`,offsetY:-15}),image:new M.RegularShape({radius:8,points:3,angle:Math.PI,displacement:[0,10],fill:new M.Fill({color:`rgba(0, 0, 0, 0.7)`})})});return et.set(e,n),n},nt=(e,t=$e)=>{let n=t?[t]:[],r=e.getGeometry(),i,a;if(r.getType()===`Polygon`?(i=r.getInteriorPoint(),a=Ze(r)):r.getType()===`LineString`&&(i=new k.default(r.getLastCoordinate()),a=Qe(r)),i&&a){let t=tt(e);t.setGeometry(i),t.getText().setText(a),n.push(t)}return n},rt=(e=`Point`,t,n)=>new N.default({source:t.getSource(),type:e,style:n?e=>nt(e,void 0):void 0}),it=(e,t,n)=>{let{layerName:r}=n||{},i=Object.assign({className:r||`ol-layer`,source:new j.default({features:new P.default().readFeatures(e)}),style:t||new M.Style({stroke:new M.Stroke({color:`red`,lineDash:[10],width:3}),fill:new M.Fill({color:`rgba(0, 0, 255, 0.1)`})})},n||{});return new A.default(i)},Z=(e,t,n,r)=>t&&n?.get(e[t])||r,at=(e,t)=>{let{key:n,crsForm:r}=t,i=[];return e.forEach(e=>{try{let t=e[n],r=Array.isArray(t)?t:JSON.parse(t||`[]`);if(r.length){let t=e.geoType||pe(r);t!==`Invalid`&&i.push({type:`Feature`,properties:{...e},geometry:{type:t,coordinates:r}})}}catch(e){console.error(`创建线状数据失败:${e}`)}}),T.default.transform({type:`FeatureCollection`,features:i},r||T.default.WGS84,T.default.WGS84)},ot=(e,t)=>{let{isLine:n,colorMap:r,fillColor:i,colorKey:a,strokeColor:o,fillOpacity:s,strokeWeight:c,activeFillColor:l,activeFillOpacity:u,activeStrokeColor:d,activeStrokeWeight:f}=t||{},p=e.getProperties(),m=new M.Style({stroke:new M.Stroke({width:f??c??4,color:d||Z(p,a,r,o)})}),h=new M.Style({stroke:new M.Stroke({width:c??2,color:Z(p,a,r,o)})});return n||(m.setFill(new M.Fill({color:z(l||i||``,u??s??1)||z(Z(p,a,r,i)||``,s??1)})),h.setFill(new M.Fill({color:z(Z(p,a,r,i)||``,s??1)}))),e.setProperties({activeStyle:m,unActiveStyle:h}),h},st=(e,t)=>{let n=at(e,t),r=new g.GeoJSON().readFeatures(n),i=r.map(e=>{let t={...e.getProperties()};return delete t.geometry,t});return r.forEach(e=>{e.setStyle(ot(e,t))}),{features:r,acceptedData:i}},Q=(e,t)=>{let{isAutoFit:n,layerName:r,openClick:i}=t,{features:a,acceptedData:o}=st(e,t),s=new A.default({zIndex:5,className:r||`ol-layer`,source:new j.default({features:a})});return i&&X(s),s.setProperties({_isCustom:!0,_isAutoFit:n,_isVectorLayer:!0,_vectorConfig:t,_layerName:r,_dataList:o,_uuidSet:new Set(o.map(e=>e._uuid))}),s},ct=(e,t,n)=>{let r=e.getSource(),{_vectorConfig:i}=e.getProperties()||{},{features:a,acceptedData:o}=st(t,Object.assign({},i,{crsForm:n??i?.crsForm}));r.addFeatures(a);let s=new Set(e.get(`_uuidSet`)||[]);o.forEach(e=>s.add(e._uuid)),e.set(`_uuidSet`,s),e.set(`_dataList`,[...e.get(`_dataList`)||[],...o])},lt=(e=[],t)=>Q(e,Object.assign({},t,{isLine:!1})),ut=(e=[],t)=>Q(e,Object.assign({},t,{isLine:!0})),dt=e=>t=>{let{baseUrl:n,markerIcon:r,statusNum:i=5,activeScale:a=1.3,markerSize:o=[32,32]}=t,s=e(n),[c,l]=o,u=Array(i*2);for(let e=0;e<i;e++){let t=s(`${r}-${e}`,`.webp`);u[e]=new M.Style({zIndex:88+e,image:new M.Icon({width:c,height:l,src:t,anchor:[.5,1]})});let n=s(`${r}-${e}-active`,`.webp`);u[e+i]=new M.Style({zIndex:120,image:new M.Icon({width:c*a,height:l*a,anchor:[.5,1],src:n||t})})}return u},ft=(e,t=[])=>e.map(e=>{let{crsForm:n}=e,r=T.default.transform([+e.lnglat[0],+e.lnglat[1]],n||T.default.WGS84,T.default.WGS84),i=new E.Feature({geometry:new ae.Point(r)});return i.setProperties({...e,unActiveStyle:t[e.style],activeStyle:t[e.style+t.length/2]}),i.setStyle(t[e.style]),i}),pt=(e,t,n={})=>{let r=e.get(`_massMarksStyles`),i=e?.getSource(),{clear:a}=n,o=ft(t,r);a&&i?.clear(),i?.addFeatures(o);let s=[...a?[]:e.get(`_dataList`)||[],...t];e.set(`_dataList`,s),e.set(`_uuidSet`,new Set(s.map(e=>e._uuid)))},$=(e,t=[])=>{let n=new A.default({zIndex:2e3,source:new j.default({features:ft(e,t)})});return n.setProperties({_isCustom:!0,_isVectorLayer:!0,_isMassMarksLayer:!0,_statusNum:t.length/2,_dataList:[...e],_uuidSet:new Set(e.map(e=>e._uuid)||[])}),n},mt=e=>(t=[],n,r=!0)=>{let{offset:i=[0,0],baseUrl:a,hasLine:o,hasFace:s,layerName:c,isDynamic:l,isAutoFit:u,statusNum:d,markerIcon:f,marksStyles:p,markerSize:m,activeScale:h,vectorConfig:g}=n,_=p||dt(e)({baseUrl:a,markerIcon:f,markerSize:m,statusNum:d||5,activeScale:h||1.3}),v=$(t,_);if(r&&(v.setProperties({_offset:i,_isAutoFit:u}),X(v)),o){let e=Q(t,Object.assign({},{key:`line`,isLine:!0,openClick:!1,strokeWeight:4,strokeColor:`rgba(29, 235, 255, 0.8)`},g||{}));R.addLayer(e)}if(s){let e=Q(t,Object.assign({},{isLine:!1,key:`faceList`,strokeWeight:1,openClick:!1,fillColor:`#4247DF`,strokeStyle:`dashed`,strokeColor:`#4247DF`},g||{}));R.addLayer(e)}return v.setProperties({_isCustom:!0,_offset:i,_hasLine:o,_hasFace:s,className:c,_layerName:c,_isVectorLayer:!0,_isDynamic:l,_massMarksStyles:_}),R.addLayer(v),v},ht=(e=[])=>{let t=new M.Style({}),n=new Set(e),r=[];return R.getAllLayers().filter(e=>e.get(`_isMassMarksLayer`)).forEach(e=>{e.getSource().getFeatures().forEach(e=>{let i=e.getProperties();n.has(i.status)?(r.push(i),e.setStyle(i.unActiveStyle)):e.setStyle(t)})}),r},gt=(e,t)=>{let n=R.getAllLayers().filter(t=>(t.get(`_layerName`)||t.getClassName())===e&&t.get(`_isMassMarksLayer`)),r=new M.Style({});n.forEach(e=>{e.getSource().getFeatures().forEach(e=>{let n=e.getProperties();t.has(n.id)?e.setStyle(n.unActiveStyle):e.setStyle(r)})})},_t=(e,t)=>{let n=e.length,r={},{distance:i,minDistance:a,openClick:o,buildStyle:s,singleStyles:c,computedRadius:l,layerName:u=`cluster-layer`}=t,d=e=>(e/n)**(1/18);r[1]=c;let f=e=>{let t=e.get(`features`).length,n=r[t],i=l?l(t):d(t);if(n||(n=new M.Style({image:new I.default({radius:i*20,stroke:new M.Stroke({width:2,color:`hsla(${180-i*180}, 100%, 40%, 1)`}),fill:new M.Fill({color:`hsla(${180-i*180}, 100%, 50%, 1)`})}),text:new M.Text({text:t.toString(),fill:new M.Fill({color:`hsla(${180-i*180}, 100%, 10%, 1)`}),textBaseline:`middle`})}),r[t]=n),Array.isArray(n)){let t=e.get(`features`)[0].get(`styleIndex`)??0;return n[t]}return n},p=new A.default({zIndex:200,className:u,source:new F.default({distance:i||80,minDistance:a||0,source:new j.default({features:e.map(e=>{let t=new E.Feature(new ae.Point(e.lnglat));t.setProperties(e);let n=e.style??0;return t.setProperties({unActiveStyle:c[n],activeStyle:c[n+c.length/2]}),t})})}),style:e=>s?s(e):f(e)});return p.setProperties({_isCustom:!0,_isVectorLayer:!0,_isClusterLayer:!0}),o&&X(p),p};exports.GeometryType=oe,exports.activeFeatureByUid=Me,exports.addFeaturesByLayer=pt,exports.addMassMarksLayer=mt,exports.appendFeaturesByLayer=ct,exports.baseLayers=be,exports.buildMassMarksStyles=dt,exports.changeFeaturesVisibleByIds=gt,exports.changeLayer=Te,exports.changeSource=H,exports.changeUnselectStyle=Ke,exports.createAnimationMarker=De,exports.createBaseLayer=V,exports.createBusinessLayer=Q,exports.createClusterLayer=_t,exports.createDrawInteraction=rt,exports.createElasticMarkerLayer=qe,exports.createGeoJsonLayer=it,exports.createIconStyle=K,exports.createLayerSelectByNames=Xe,exports.createMap=Pe,exports.createMapInstance=Ne,exports.createMapWorldLayer=ye,exports.createMarker=q,exports.createMarkersLayer=Ge,exports.createMassMarksLayer=$,exports.createMoveMarkerLayer=Je,exports.createOverlay=Oe,exports.createSelectByLayer=X,exports.createTdtVectorSource=ce,exports.createTdtVtsLayer=le,exports.createText=We,exports.createVectorFaceLayer=lt,exports.createVectorLineLayer=ut,exports.createWmtsLayer=_e,exports.createZheJiangLayer=xe,exports.disposeInstance=Ie,exports.disposeMap=Fe,exports.emitter=L,exports.flyToAnimate=Ue,exports.getDrawStyle=nt,exports.getLayerByName=Se,exports.getLayersDataList=fe,exports.getMapInstance=Le,Object.defineProperty(exports,"instance",{enumerable:!0,get:function(){return R}}),exports.removeAllLayers=Ae,exports.removeLayerByName=Ce,exports.removeOverlays=U,exports.resetActiveFeature=je,exports.resetActiveVector=ke,exports.resetMap=ze,exports.resetZoomAndCenter=Re,exports.setFitViewByCoords=Be,exports.setFitViewByGeom=Ve,exports.setFitViewByLayer=He,exports.updateMarksLayersByStatus=ht,Object.keys(c).forEach(function(e){e!=="default"&&!Object.prototype.hasOwnProperty.call(exports,e)&&Object.defineProperty(exports,e,{enumerable:!0,get:function(){return c[e]}})});
package/dist/index.d.cts CHANGED
@@ -239,7 +239,7 @@ export declare const createZheJiangLayer: (layerName?: ZheJiangType, tk?: string
239
239
  */
240
240
  export declare const getLayerByName: (name: string) => Layer<import("ol/source").Source, import("ol/renderer/Layer").default<any>, {
241
241
  [x: string]: any;
242
- }>[];
242
+ }> | undefined;
243
243
  /**
244
244
  * 根据图层名称删除图层
245
245
  * @param name
@@ -466,6 +466,12 @@ export declare const addMassMarksLayer: (getImgUrlFn: GetImgUrlFn) => (dataList:
466
466
  * @param checkedStatusList
467
467
  */
468
468
  export declare const updateMarksLayersByStatus: (checkedStatusList?: string[]) => MassData[];
469
+ /**
470
+ *
471
+ * @param layerName
472
+ * @param visibleIdSet
473
+ */
474
+ export declare const changeFeaturesVisibleByIds: (layerName: string, visibleIdSet: Set<string>) => void;
469
475
  //#endregion
470
476
  //#region src/layer/cluster-layer.d.ts
471
477
  /**
package/dist/index.d.mts CHANGED
@@ -239,7 +239,7 @@ export declare const createZheJiangLayer: (layerName?: ZheJiangType, tk?: string
239
239
  */
240
240
  export declare const getLayerByName: (name: string) => Layer<import("ol/source").Source, import("ol/renderer/Layer").default<any>, {
241
241
  [x: string]: any;
242
- }>[];
242
+ }> | undefined;
243
243
  /**
244
244
  * 根据图层名称删除图层
245
245
  * @param name
@@ -466,6 +466,12 @@ export declare const addMassMarksLayer: (getImgUrlFn: GetImgUrlFn) => (dataList:
466
466
  * @param checkedStatusList
467
467
  */
468
468
  export declare const updateMarksLayersByStatus: (checkedStatusList?: string[]) => MassData[];
469
+ /**
470
+ *
471
+ * @param layerName
472
+ * @param visibleIdSet
473
+ */
474
+ export declare const changeFeaturesVisibleByIds: (layerName: string, visibleIdSet: Set<string>) => void;
469
475
  //#endregion
470
476
  //#region src/layer/cluster-layer.d.ts
471
477
  /**
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- import{TdtDecoderWorkerClient as e,createTdtVtsUrl as t,redactTdtToken as n}from"tdt-vts-core";import r from"ol/format/MVT";import i from"ol/layer/VectorTile";import a from"ol/TileState";import o from"ol/source/VectorTile";import s from"mitt";import{WMTS as c,XYZ as l}from"ol/source";import u from"ol/layer/Tile";import{GeoJSON as d,WMTSCapabilities as f}from"ol/format";import{optionsFromCapabilities as p}from"ol/source/WMTS";import{TileGrid as m}from"ol/tilegrid";import{Tile as h}from"ol/layer";import g from"ol/tilegrid/WMTS";import{unByKey as _}from"ol/Observable";import v from"ol/layer/Image";import ee from"ol/source/Raster";import te from"ol/Map";import ne from"ol/View";import{defaults as re}from"ol/control";import y from"gcoord";import{Feature as b,Overlay as ie}from"ol";import{Select as x,defaults as ae}from"ol/interaction";import{boundingExtent as oe,getCenter as se}from"ol/extent";import{singleClick as ce}from"ol/events/condition";import le from"ol/Feature";import ue from"ol/geom/Point";import S from"ol/layer/Vector";import C from"ol/source/Vector";import{Circle as de,Fill as w,Icon as T,RegularShape as fe,Stroke as E,Style as D,Text as O}from"ol/style";import pe from"ol/interaction/Draw";import{getArea as me,getLength as he}from"ol/sphere";import ge from"ol/format/GeoJSON";import{Point as k}from"ol/geom";import _e from"ol/source/Cluster";import ve from"ol/style/Circle";export*from"tdt-vts-core";let ye=/* @__PURE__ */ function(e){return e.LineString=`LineString`,e.MultiLineString=`MultiLineString`,e.Polygon=`Polygon`,e.MultiPolygon=`MultiPolygon`,e.Invalid=`Invalid`,e}({});const be=async e=>{if(typeof e!=`string`)return e;if(!e.trim())throw TypeError(`style 地址不能为空`);let t=await fetch(e);if(!t.ok)throw Error(`加载 style 失败:HTTP ${t.status}`);return await t.json()},A=i=>{if(!i.hosts?.length||i.hosts.some(e=>!e.trim()))throw TypeError(`hosts 不能为空`);let s=new e(i.restoreMode,i.decoderOptions),c=new r({layerName:`mvt:layer`}),l=new o({projection:`EPSG:3857`,minZoom:i.minZoom??1,maxZoom:i.maxZoom??18,tileSize:512,wrapX:!0,format:c,attributions:`© <a href="https://www.tianditu.gov.cn/" target="_blank" rel="noopener">天地图</a>`,tileUrlFunction(e){if(!e)return;let[n,r,a]=e;if(n!==void 0&&r!==void 0&&a!==void 0)return t([n,r,a],{token:i.token,hosts:i.hosts,maxZoom:i.maxZoom??18,wrapX:!0})},tileLoadFunction(e,t){let r=e;r.setLoader(async(e,o,l)=>{let u=n(t);try{let n=await s.decode(t),a=c.readFeatures(n.buffer,{extent:e,featureProjection:l});r.setFeatures(a),i.diagnostics?.onDecoded?.(n.stats,u)}catch(e){let t=e instanceof Error?e:Error(String(e));i.diagnostics?.onError?.(t,u),console.error(`天地图私有 VTS 加载失败`,u,t),r.setState(a.ERROR)}})}}),u=l.dispose.bind(l);return l.dispose=()=>{s.dispose(),u()},{source:l,decoder:s}},xe=async e=>{let t=await be(e.style);if(t?.version!==8||!t.sources||!Array.isArray(t.layers))throw TypeError(`style 必须是 Style v8 对象或其 JSON 地址`);let{source:n}=A({token:e.token,hosts:e.hosts,restoreMode:`auto`}),r=new i({declutter:!0,source:n}),a=r.dispose.bind(r);r.dispose=()=>{n.dispose(),a()};try{let{applyBackground:e,applyStyle:n}=await import(`ol-mapbox-style`),i=structuredClone(t);for(let e of i.layers)e.type===`symbol`&&e.layout?.[`text-font`]&&(e.layout[`text-font`]=[`sans-serif`]);return await Promise.all([n(r,i,{projection:`EPSG:4326`,source:`base-tdt-vector-tile`,updateSource:!1}),e(r,i)]),r}catch(e){throw r.dispose(),e}},j=s();let M;const Se=e=>{M=e},Ce=()=>{M=void 0},N=(e,t)=>{if(e.startsWith(`#`)){let n=e.replace(`#`,``);return n.length===3&&(n=n[0]+n[0]+n[1]+n[1]+n[2]+n[2]),`rgba(${parseInt(n.substring(0,2),16)}, ${parseInt(n.substring(2,4),16)}, ${parseInt(n.substring(4,6),16)}, ${t})`}return e},we=()=>M?.getAllLayers().map(e=>e.get(`_dataList`)||[]).flat(2)||[],Te=e=>{let t=e=>!Array.isArray(e)||e.length===0?0:1+t(e[0]),n=e=>{if(!Array.isArray(e)||e.length<3)return!1;let t=e[0],n=e[e.length-1];return t[0]===n[0]&&t[1]===n[1]},r=e=>Array.isArray(e)&&e.length>=2&&typeof e[0]==`number`&&typeof e[1]==`number`,i=e=>Array.isArray(e)&&e.length>=2&&e.every(r),a=e=>Array.isArray(e)?(t(e)===2?[e]:e).every(e=>Array.isArray(e)&&e.length>=4&&n(e)&&e.every(r)):!1,o=t(e);try{return o<2||!e||e.length===0?`Invalid`:o===2&&i(e)?n(e)&&e.length>=4?`Polygon`:`LineString`:o===3&&Array.isArray(e)&&e.every(i)?a(e)?`Polygon`:e.every(e=>!n(e))?`MultiLineString`:`Invalid`:o===4&&Array.isArray(e)&&e.every(e=>a(e))?`MultiPolygon`:`Invalid`}catch(e){return console.error(`Error analyzing coordinates:`,e),`Invalid`}},Ee=new f,P=/* @__PURE__ */ new Map,De=async e=>{let t=P.get(e);if(t)return t;let n=await fetch(e);if(!n.ok)throw Error(`WMTS capabilities 请求失败:${n.status}`);let r=Ee.read(await n.text());return P.set(e,r),r},Oe=e=>async t=>{let{style:n,format:r,version:i,layerName:a,matrixSet:o}=t,[s,l]=a.split(`:`),d=`${e}/${s}/${l}/gwc/service/wmts?request=GetCapabilities`,f=await De(d),m=p(f,{style:n||``,layer:l,version:i||`1.1.0`,format:r||`image/png`,matrixSet:o||`EPSG:4326`});if(!m)throw Error(`Unable to create TileLayer`);return new u({zIndex:3,className:a,source:new c(m)})},F=(e,t)=>{let n=t.get(`_selectInteraction`);n&&(e.removeInteraction(n),n.dispose(),t.unset(`_selectInteraction`));let r=t.get(`_resolutionChangeKey`);r&&(_(r),t.unset(`_resolutionChangeKey`));let i=t.get(`_dynamicMarkerTimer`);i!==void 0&&(clearTimeout(i),t.unset(`_dynamicMarkerTimer`)),t.getSource()?.dispose(),e.removeLayer(t),t.dispose()},I=`c77eddc667c5bed016fded560baf93e7`,L=(e=`hzsyvector_dark`)=>{let t={zIndex:-5,preload:1,minZoom:8,maxZoom:21,source:new l({tileGrid:new m({tileSize:256,resolutions:[.00549933137253187,.00274966568626595,.00137483284313297,.000687416421566485,.000343708210783242,.000171854105391621,859270526958104e-19,429635263479052e-19,214817631739526e-19,107408815869763e-19,537044079348816e-20,268522039674407e-20,134261019837204e-20],origin:[118.122911693886,31.2869311022836],extent:[116.43263049006,28.6201742126026,123.705594256347,31.9765041681924]}),projection:`EPSG:4326`,urls:[`https://ywtg.citybrain.hangzhou.gov.cn/${e}/{z}/{y}/{x}`,`https://ywtg.citybrain.hangzhou.gov.cn:9456/${e}/{z}/{y}/{x}`,`https://ywtg.citybrain.hangzhou.gov.cn:9457/${e}/{z}/{y}/{x}`,`https://ywtg.citybrain.hangzhou.gov.cn:9458/${e}/{z}/{y}/{x}`,`https://ywtg.citybrain.hangzhou.gov.cn:9459/${e}/{z}/{y}/{x}`]}),properties:{_isBaseLayer:!0,_layerName:e}};return new h(t)},ke=(e,t=I)=>{let[n,r]=e.split(`_`),i={preload:1,zIndex:-10,cacheSize:20240,properties:{_isBaseLayer:!0,_layerName:e},source:new c({crossOrigin:`anonymous`,projection:`EPSG:4326`,wrapX:!0,layer:n,style:`default`,version:`1.0.0`,format:`image/png`,matrixSet:r,tileGrid:new g({tileSize:256,origin:[-180,90],matrixIds:[`1`,`2`,`3`,`4`,`5`,`6`,`7`,`8`,`9`,`10`,`11`,`12`,`13`,`14`,`15`,`16`,`17`,`18`,`19`],resolutions:[.703125,.3515625,.17578125,.087890625,.0439453125,.02197265625,.010986328125,.0054931640625,.00274658203125,.001373291015625,.0006866455078125,.00034332275390625,.000171661376953125,858306884765625e-19,4291534423828125e-20,21457672119140625e-21,10728836059570312e-21,5364418029785156e-21,2682209014892578e-21]}),url:`https://t{0-7}.tianditu.gov.cn/${e}/wmts?tk=${t}`})};return new h(i)},Ae=e=>({baseImgLayer:new h({className:`img-layer`,source:new l({crossOrigin:`anonymous`,tileSize:256,url:`https://t{0-7}.tianditu.gov.cn/DataServer?T=img_w&x={x}&y={y}&l={z}&tk=${e}`}),zIndex:1}),baseCiaLayer:new h({className:`img-layer`,source:new l({crossOrigin:`anonymous`,tileSize:256,url:`https://t{0-7}.tianditu.gov.cn/DataServer?T=cia_w&x={x}&y={y}&l={z}&tk=${e}`}),zIndex:2}),baseVecLayer:new h({className:`vec-layer`,source:new l({crossOrigin:`anonymous`,tileSize:256,url:`https://t{0-7}.tianditu.gov.cn/DataServer?T=vec_w&x={x}&y={y}&l={z}&tk=${e}`}),zIndex:1}),baseCvaLayer:new h({className:`vec-layer`,source:new l({crossOrigin:`anonymous`,tileSize:256,url:`https://t{0-7}.tianditu.gov.cn/DataServer?T=cva_w&x={x}&y={y}&l={z}&tk=${e}`}),zIndex:2})}),je=(e=`emap`,t=`3b0cdd02-c366-4363-b6de-081a9f12b364`)=>new h({preload:1,minZoom:4,maxZoom:20,zIndex:-10,cacheSize:20240,source:new l({wrapX:!0,projection:`EPSG:4326`,crossOrigin:`anonymous`,url:`https://ditu{0-6}.zjzwfw.gov.cn/services/wmts/${e}/default/oss/getTile/{z}/{y}/{x}?token=${t}`})}),Me=e=>M.getAllLayers().filter(t=>(t.get(`_layerName`)||t.getClassName())===e),Ne=e=>{Me(e).forEach(e=>{F(M,e)})},Pe=()=>Math.max(1,Math.min(4,globalThis.navigator?.hardwareConcurrency??2)),Fe=(e,t,n,r={})=>{let i=new ee({sources:[e],operationType:`image`,operation:(e,t)=>(((e,t)=>{let n=t.ratioArray,r=t.rgbColorArray;if(n&&r){let[t=0,i=0,a=0]=n;for(let n=0;n<e.length;n+=4){let o=e[n],s=e[n+1],c=e[n+2],l=o*t+s*i+c*a;e[n]=r[0]-l,e[n+1]=r[1]-l,e[n+2]=r[2]-l}}})(e[0].data,t),e[0]),threads:r.threads??Pe()});return i.on(`beforeoperations`,e=>{e.data.ratioArray=n,e.data.rgbColorArray=t}),i},Ie=(e,t,n,r={})=>new v({source:Fe(e,t,n,r)}),R=(e=``)=>{M&&M.getOverlays().getArray().filter(t=>t.get(e||`position`)).forEach(e=>M.removeOverlay(e))},Le=()=>R(`_isAnimationMarker`),Re=(e,t)=>{Le();let{width:n,height:r,lnglat:i,crsForm:a}=t,o=document.createElement(`div`),s=document.createElement(`img`);s.src=e,s.alt=``,n!==void 0&&(s.width=n),r!==void 0&&(s.height=r),o.append(s);let c=new ie({element:o,stopEvent:!1,positioning:`bottom-center`,position:y.transform([+i[0],+i[1]],a||y.WGS84,y.WGS84)});c.set(`_isAnimationMarker`,!0),M.addOverlay(c)},ze=(e={id:`popup-container`,positioning:`top-center`})=>new ie(Object.assign({element:document.getElementById(e.id)||void 0},e)),Be=()=>{R(),M.getAllLayers().forEach(e=>{e.get(`_selectInteraction`)?.getFeatures().clear()})},Ve=()=>{R(),M&&M.getAllLayers().forEach(e=>{e.get(`_isBaseLayer`)||F(M,e)})},He=()=>{R(),M.getAllLayers().filter(e=>e.get(`_isVectorLayer`)).forEach(e=>{let t=e.get(`_selectInteraction`);t&&(t.dispatchEvent({type:`select`,selected:[],mapBrowserEvent:void 0,deselected:t.getFeatures().getArray()}),t.getFeatures().clear())})},Ue=e=>{let t=M.getAllLayers().filter(e=>e.get(`_isVectorLayer`));if(t.length){let n=t.find(t=>t.get(`_uuidSet`).has(e)&&t.get(`_selectInteraction`));if(n){let t=(n.getSource()?.getFeatures()||[]).find(t=>t.get(`_uuid`)===e),r=n.get(`_selectInteraction`);if(r){let n=r.getFeatures().getArray();n.find(t=>t.get(`_uuid`)===e)||(r.dispatchEvent({type:`select`,deselected:n,selected:[t],mapBrowserEvent:void 0}),r.getFeatures().push(t))}}}};let z=[119.71512016971076,30.122490541963536];const We=(e={})=>{if(M)return M;let t=B(e);return Se(t),t},B=(e={})=>{let t=Object.assign({zoom:9.4,maxZoom:18,minZoom:9.4,center:z,baseLayer:`vec-layer`,projection:`EPSG:4326`,layers:[L()],constrainResolution:!1,smoothExtentConstraint:!1,tk:I},e||{}),n=new te({view:new ne(t),controls:re({zoom:!1,rotate:!1,attribution:!1}),interactions:ae({pinchRotate:!1,doubleClickZoom:!1,altShiftDragRotate:!1}),layers:t.layers||[L()]});z=t.center||z,n.activeBaseLayer=t.baseLayer;let r=e=>n.getAllLayers().find(t=>(t.get(`_layerName`)||t.getClassName())===e);n.getLayerByName=r,n.removeLayerByName=e=>{let t=r(e);t&&F(n,t)},n.changeLayersByNames=(e,t)=>{n.getAllLayers().filter(e=>t.includes(e.getClassName())).forEach(t=>t.setVisible(e?.includes(t.getClassName())))};let i,a;return n.on(`pointermove`,e=>{if(a=e.pixel,i!==void 0)return;let t=()=>{i=void 0;let e=n.getTargetElement();a&&e&&(e.style.cursor=n.hasFeatureAtPixel(a)?`pointer`:``)};i=typeof globalThis.requestAnimationFrame==`function`?globalThis.requestAnimationFrame(t):setTimeout(t,16)}),n.set(`_disposePointerMove`,()=>{i!==void 0&&(typeof globalThis.cancelAnimationFrame==`function`?globalThis.cancelAnimationFrame(i):clearTimeout(i),i=void 0)}),n},V=()=>{if(!M)return;let e=M;e.get(`_disposePointerMove`)?.(),e.unset(`_disposePointerMove`),e.getOverlays().forEach(t=>{e.removeOverlay(t)}),e.getInteractions().clear(),e.getAllLayers().forEach(t=>F(e,t)),e.setTarget(``),e.dispose(),Ce()},Ge=()=>V(),Ke=()=>M,H=(e=z)=>{M&&M.getView().animate({zoom:9.4,center:e,duration:1e3})},qe=(e={center:z,isClearAll:!0})=>{Ve(),H(e.center||z)},U={padding:[50,50,50,50],duration:1e3},Je=(e,t=M,n)=>{let r=t.getView();if(e.length===1)r.animate({zoom:14,duration:1e3,center:e[0],...n||{}});else{let t=oe(e);r.fit(t,{...U,...n||{}})}},Ye=(e,t=M,n)=>{t.getView().fit(e,{...U,...n||{}})},Xe=(e,t=M,n)=>{let r=e.getSource();if(!r||r.isEmpty())return;let i=r.getExtent();i&&t.getView().fit(i,{...U,...n||{}})},Ze=(e,t)=>{let n=M.getView(),r=n.getZoom();n.animate({center:e,duration:2e3}),t?n.animate({zoom:t-2,duration:1e3},{zoom:t,duration:1e3}):n.animate({zoom:r-2,duration:1e3},{zoom:r+2>12?12:r+2,duration:1e3})},W=e=>new O({text:e.text,offsetY:e.offsetY,offsetX:e.offsetX,justify:`center`,textAlign:`center`,font:`16px PingFangSC-Semibold`,fill:new w({color:`rgba(255, 255, 255, 0.8)`})}),G=(e,t=!1)=>new D({image:new T({scale:e.scale||1,rotation:e.rotation||0,anchor:e.anchor||[.5,1],src:t&&e.activeImg||e.img}),text:e.showText?W(e):void 0}),K=(e,t)=>{let n=new le({geometry:new ue([+e.lng,+e.lat]),data:Object.assign({},e||{},{layerName:t.layerName})});return n.setStyle(G(e)),n},q=(e,t)=>{let{layerName:n,visible:r=!0,zIndex:i=10}=t,a=new C;return e.forEach(e=>a.addFeature(K(e,t))),new S({zIndex:i,visible:r,source:a,className:n||`marker-layer`})},J=(e,t)=>{let n=t>=14?`largeImg`:t>=11?`smallImg`:`img`;e.forEach(e=>{let t=e.get(`data`);t.isSelected||e.setStyle(G({...t,img:t[n]},!1))})},Y=(e,t)=>{let n=e.get(`data`),r={...n,isSelected:t};e.set(`data`,r),n.isElastic?J([e],M.getView().getZoom()):e.setStyle(G(r,t))},Qe=e=>{e.forEach(e=>{Y(e,!1)}),e.clear()},$e=(e,t)=>{let n=e.map(e=>({...e,isElastic:!0})),r=q(n,t),i=r.getSource().getFeatures(),a=M.getView();return J(i,a.getZoom()),r.set(`_resolutionChangeKey`,a.on(`change:resolution`,()=>J(i,a.getZoom()))),r},et=(e,t)=>{let n=K(e,t),r=new S({className:t.layerName||`ol-layer`,source:new C({features:[n]})});return M.addLayer(r),{vectorLayer:r}},tt=(e,t)=>{let n=t.getProperties(),{activeStyle:r}=n;if(t.setStyle(r),j.emit(`selected-feature`,n),e.set(`_hasActive`,!0),e.get(`_isDynamic`)){let t=r.getImage(),i=e.get(`_dynamicMarkerTimer`);i!==void 0&&clearTimeout(i);let a=setTimeout(()=>{e.unset(`_dynamicMarkerTimer`),j.emit(`dynamic-marker`,Object.assign({},n.rawData||{},{lnglat:n.lnglat,style:n.style,crsForm:n.crsForm,width:t.getWidth(),height:t.getHeight()}))},1e3);e.set(`_dynamicMarkerTimer`,a)}if(e.get(`_isAutoFit`)){let e=M.getView();e.animate({duration:1e3,zoom:e.getZoom(),center:se(t.getGeometry().getExtent())})}},X=e=>{let t=new x({style:null,multi:!1,hitTolerance:10,layers:[e],condition:t=>{if(!ce(t))return!1;let n=!1;return M.forEachFeatureAtPixel(t.pixel,()=>{n=!0},{layerFilter:t=>t===e}),n}});return t.on(`select`,t=>{let{selected:n,deselected:r}=t;if(n.length){let t=n[0];if(e.get(`_isClusterLayer`)){let n=t.get(`features`);n.length===1&&tt(e,n[0])}else tt(e,t)}if(r.length){let t=r[0],n=t.getProperties();t.setStyle(n.unActiveStyle),e.set(`_hasActive`,!1)}}),M.addInteraction(t),e.set(`_selectInteraction`,t),t},nt=(e,t,n)=>{let r=new x({style:null,layers:t=>e.includes(t.getClassName())});return r.on(`select`,({deselected:e,selected:r})=>{if(e.length){let t=e[0];Y(t,!1),n?.(t)}if(r.length){let e=r[0];Y(e,!0),t?.(e)}}),r},rt=e=>{let t=me(e,{projection:`EPSG:4326`});return t>1e4?`${Math.round(t/1e6*100)/100} km\xB2`:`${Math.round(t*100)/100} m\xB2`},it=e=>{let t=he(e,{projection:`EPSG:4326`});return t>100?`${Math.round(t/1e3*100)/100} km`:`${Math.round(t*100)/100} m`},at=new D({fill:new w({color:`rgba(255, 255, 255, 0.2)`}),stroke:new E({color:`rgba(0, 0, 0, 0.5)`,lineDash:[10,10],width:2}),image:new de({radius:5,stroke:new E({color:`rgba(0, 0, 0, 0.7)`}),fill:new w({color:`rgba(255, 255, 255, 0.2)`})})}),ot=/* @__PURE__ */ new WeakMap,st=e=>{let t=ot.get(e);if(t)return t;let n=new D({text:new O({font:`14px`,fill:new w({color:`rgba(255, 255, 255, 1)`}),backgroundFill:new w({color:`rgba(0, 0, 0, 0.7)`}),padding:[3,3,3,3],textBaseline:`bottom`,offsetY:-15}),image:new fe({radius:8,points:3,angle:Math.PI,displacement:[0,10],fill:new w({color:`rgba(0, 0, 0, 0.7)`})})});return ot.set(e,n),n},ct=(e,t=at)=>{let n=t?[t]:[],r=e.getGeometry(),i,a;if(r.getType()===`Polygon`?(i=r.getInteriorPoint(),a=rt(r)):r.getType()===`LineString`&&(i=new ue(r.getLastCoordinate()),a=it(r)),i&&a){let t=st(e);t.setGeometry(i),t.getText().setText(a),n.push(t)}return n},lt=(e=`Point`,t,n)=>new pe({source:t.getSource(),type:e,style:n?e=>ct(e,void 0):void 0}),ut=(e,t,n)=>{let{layerName:r}=n||{},i=Object.assign({className:r||`ol-layer`,source:new C({features:new ge().readFeatures(e)}),style:t||new D({stroke:new E({color:`red`,lineDash:[10],width:3}),fill:new w({color:`rgba(0, 0, 255, 0.1)`})})},n||{});return new S(i)},Z=(e,t,n,r)=>t&&n?.get(e[t])||r,dt=(e,t)=>{let{key:n,crsForm:r}=t,i=[];return e.forEach(e=>{try{let t=e[n],r=Array.isArray(t)?t:JSON.parse(t||`[]`);if(r.length){let t=e.geoType||Te(r);t!==`Invalid`&&i.push({type:`Feature`,properties:{...e},geometry:{type:t,coordinates:r}})}}catch(e){console.error(`创建线状数据失败:${e}`)}}),y.transform({type:`FeatureCollection`,features:i},r||y.WGS84,y.WGS84)},ft=(e,t)=>{let{isLine:n,colorMap:r,fillColor:i,colorKey:a,strokeColor:o,fillOpacity:s,strokeWeight:c,activeFillColor:l,activeFillOpacity:u,activeStrokeColor:d,activeStrokeWeight:f}=t||{},p=e.getProperties(),m=new D({stroke:new E({width:f??c??4,color:d||Z(p,a,r,o)})}),h=new D({stroke:new E({width:c??2,color:Z(p,a,r,o)})});return n||(m.setFill(new w({color:N(l||i||``,u??s??1)||N(Z(p,a,r,i)||``,s??1)})),h.setFill(new w({color:N(Z(p,a,r,i)||``,s??1)}))),e.setProperties({activeStyle:m,unActiveStyle:h}),h},Q=(e,t)=>{let n=dt(e,t),r=new d().readFeatures(n),i=r.map(e=>{let t={...e.getProperties()};return delete t.geometry,t});return r.forEach(e=>{e.setStyle(ft(e,t))}),{features:r,acceptedData:i}},$=(e,t)=>{let{isAutoFit:n,layerName:r,openClick:i}=t,{features:a,acceptedData:o}=Q(e,t),s=new S({zIndex:5,className:r||`ol-layer`,source:new C({features:a})});return i&&X(s),s.setProperties({_isCustom:!0,_isAutoFit:n,_isVectorLayer:!0,_vectorConfig:t,_layerName:r,_dataList:o,_uuidSet:new Set(o.map(e=>e._uuid))}),s},pt=(e,t,n)=>{let r=e.getSource(),{_vectorConfig:i}=e.getProperties()||{},{features:a,acceptedData:o}=Q(t,Object.assign({},i,{crsForm:n??i?.crsForm}));r.addFeatures(a);let s=new Set(e.get(`_uuidSet`)||[]);o.forEach(e=>s.add(e._uuid)),e.set(`_uuidSet`,s),e.set(`_dataList`,[...e.get(`_dataList`)||[],...o])},mt=(e=[],t)=>$(e,Object.assign({},t,{isLine:!1})),ht=(e=[],t)=>$(e,Object.assign({},t,{isLine:!0})),gt=e=>t=>{let{baseUrl:n,markerIcon:r,statusNum:i=5,activeScale:a=1.3,markerSize:o=[32,32]}=t,s=e(n),[c,l]=o,u=Array(i*2);for(let e=0;e<i;e++){let t=s(`${r}-${e}`,`.webp`);u[e]=new D({zIndex:88+e,image:new T({width:c,height:l,src:t,anchor:[.5,1]})});let n=s(`${r}-${e}-active`,`.webp`);u[e+i]=new D({zIndex:120,image:new T({width:c*a,height:l*a,anchor:[.5,1],src:n||t})})}return u},_t=(e,t=[])=>e.map(e=>{let{crsForm:n}=e,r=y.transform([+e.lnglat[0],+e.lnglat[1]],n||y.WGS84,y.WGS84),i=new b({geometry:new k(r)});return i.setProperties({...e,unActiveStyle:t[e.style],activeStyle:t[e.style+t.length/2]}),i.setStyle(t[e.style]),i}),vt=(e,t,n={})=>{let r=e.get(`_massMarksStyles`),i=e?.getSource(),{clear:a}=n,o=_t(t,r);a&&i?.clear(),i?.addFeatures(o);let s=[...a?[]:e.get(`_dataList`)||[],...t];e.set(`_dataList`,s),e.set(`_uuidSet`,new Set(s.map(e=>e._uuid)))},yt=(e,t=[])=>{let n=new S({zIndex:2e3,source:new C({features:_t(e,t)})});return n.setProperties({_isCustom:!0,_isVectorLayer:!0,_isMassMarksLayer:!0,_statusNum:t.length/2,_dataList:[...e],_uuidSet:new Set(e.map(e=>e._uuid)||[])}),n},bt=e=>(t=[],n,r=!0)=>{let{offset:i=[0,0],baseUrl:a,hasLine:o,hasFace:s,layerName:c,isDynamic:l,isAutoFit:u,statusNum:d,markerIcon:f,marksStyles:p,markerSize:m,activeScale:h,vectorConfig:g}=n,_=p||gt(e)({baseUrl:a,markerIcon:f,markerSize:m,statusNum:d||5,activeScale:h||1.3}),v=yt(t,_);if(r&&(v.setProperties({_offset:i,_isAutoFit:u}),X(v)),o){let e=$(t,Object.assign({},{key:`line`,isLine:!0,openClick:!1,strokeWeight:4,strokeColor:`rgba(29, 235, 255, 0.8)`},g||{}));M.addLayer(e)}if(s){let e=$(t,Object.assign({},{isLine:!1,key:`faceList`,strokeWeight:1,openClick:!1,fillColor:`#4247DF`,strokeStyle:`dashed`,strokeColor:`#4247DF`},g||{}));M.addLayer(e)}return v.setProperties({_isCustom:!0,_offset:i,_hasLine:o,_hasFace:s,className:c,_layerName:c,_isVectorLayer:!0,_isDynamic:l,_massMarksStyles:_}),M.addLayer(v),v},xt=(e=[])=>{let t=new D({}),n=new Set(e),r=[];return M.getAllLayers().filter(e=>e.get(`_isMassMarksLayer`)).forEach(e=>{e.getSource().getFeatures().forEach(e=>{let i=e.getProperties();n.has(i.status)?(r.push(i),e.setStyle(i.unActiveStyle)):e.setStyle(t)})}),r},St=(e,t)=>{let n=e.length,r={},{distance:i,minDistance:a,openClick:o,buildStyle:s,singleStyles:c,computedRadius:l,layerName:u=`cluster-layer`}=t,d=e=>(e/n)**(1/18);r[1]=c;let f=e=>{let t=e.get(`features`).length,n=r[t],i=l?l(t):d(t);if(n||(n=new D({image:new ve({radius:i*20,stroke:new E({width:2,color:`hsla(${180-i*180}, 100%, 40%, 1)`}),fill:new w({color:`hsla(${180-i*180}, 100%, 50%, 1)`})}),text:new O({text:t.toString(),fill:new w({color:`hsla(${180-i*180}, 100%, 10%, 1)`}),textBaseline:`middle`})}),r[t]=n),Array.isArray(n)){let t=e.get(`features`)[0].get(`styleIndex`)??0;return n[t]}return n},p=new S({zIndex:200,className:u,source:new _e({distance:i||80,minDistance:a||0,source:new C({features:e.map(e=>{let t=new b(new k(e.lnglat));t.setProperties(e);let n=e.style??0;return t.setProperties({unActiveStyle:c[n],activeStyle:c[n+c.length/2]}),t})})}),style:e=>s?s(e):f(e)});return p.setProperties({_isCustom:!0,_isVectorLayer:!0,_isClusterLayer:!0}),o&&X(p),p};export{ye as GeometryType,Ue as activeFeatureByUid,vt as addFeaturesByLayer,bt as addMassMarksLayer,pt as appendFeaturesByLayer,Ae as baseLayers,gt as buildMassMarksStyles,Ie as changeLayer,Fe as changeSource,Qe as changeUnselectStyle,Re as createAnimationMarker,L as createBaseLayer,$ as createBusinessLayer,St as createClusterLayer,lt as createDrawInteraction,$e as createElasticMarkerLayer,ut as createGeoJsonLayer,G as createIconStyle,nt as createLayerSelectByNames,B as createMap,We as createMapInstance,ke as createMapWorldLayer,K as createMarker,q as createMarkersLayer,yt as createMassMarksLayer,et as createMoveMarkerLayer,ze as createOverlay,X as createSelectByLayer,A as createTdtVectorSource,xe as createTdtVtsLayer,W as createText,mt as createVectorFaceLayer,ht as createVectorLineLayer,Oe as createWmtsLayer,je as createZheJiangLayer,Ge as disposeInstance,V as disposeMap,j as emitter,Ze as flyToAnimate,ct as getDrawStyle,Me as getLayerByName,we as getLayersDataList,Ke as getMapInstance,M as instance,Ve as removeAllLayers,Ne as removeLayerByName,R as removeOverlays,He as resetActiveFeature,Be as resetActiveVector,qe as resetMap,H as resetZoomAndCenter,Je as setFitViewByCoords,Ye as setFitViewByGeom,Xe as setFitViewByLayer,xt as updateMarksLayersByStatus};
1
+ import{TdtDecoderWorkerClient as e,createTdtVtsUrl as t,redactTdtToken as n}from"tdt-vts-core";import r from"ol/format/MVT";import i from"ol/layer/VectorTile";import a from"ol/TileState";import o from"ol/source/VectorTile";import s from"mitt";import{WMTS as c,XYZ as l}from"ol/source";import u from"ol/layer/Tile";import{GeoJSON as d,WMTSCapabilities as f}from"ol/format";import{optionsFromCapabilities as p}from"ol/source/WMTS";import{TileGrid as m}from"ol/tilegrid";import{Tile as h}from"ol/layer";import g from"ol/tilegrid/WMTS";import{unByKey as _}from"ol/Observable";import v from"ol/layer/Image";import ee from"ol/source/Raster";import te from"ol/Map";import ne from"ol/View";import{defaults as re}from"ol/control";import y from"gcoord";import{Feature as b,Overlay as x}from"ol";import{Select as ie,defaults as ae}from"ol/interaction";import{boundingExtent as oe,getCenter as se}from"ol/extent";import{singleClick as ce}from"ol/events/condition";import le from"ol/Feature";import S from"ol/geom/Point";import C from"ol/layer/Vector";import w from"ol/source/Vector";import{Circle as ue,Fill as T,Icon as E,RegularShape as de,Stroke as D,Style as O,Text as k}from"ol/style";import fe from"ol/interaction/Draw";import{getArea as pe,getLength as me}from"ol/sphere";import he from"ol/format/GeoJSON";import{Point as ge}from"ol/geom";import _e from"ol/source/Cluster";import ve from"ol/style/Circle";export*from"tdt-vts-core";let ye=/* @__PURE__ */ function(e){return e.LineString=`LineString`,e.MultiLineString=`MultiLineString`,e.Polygon=`Polygon`,e.MultiPolygon=`MultiPolygon`,e.Invalid=`Invalid`,e}({});const be=async e=>{if(typeof e!=`string`)return e;if(!e.trim())throw TypeError(`style 地址不能为空`);let t=await fetch(e);if(!t.ok)throw Error(`加载 style 失败:HTTP ${t.status}`);return await t.json()},xe=i=>{if(!i.hosts?.length||i.hosts.some(e=>!e.trim()))throw TypeError(`hosts 不能为空`);let s=new e(i.restoreMode,i.decoderOptions),c=new r({layerName:`mvt:layer`}),l=new o({projection:`EPSG:3857`,minZoom:i.minZoom??1,maxZoom:i.maxZoom??18,tileSize:512,wrapX:!0,format:c,attributions:`© <a href="https://www.tianditu.gov.cn/" target="_blank" rel="noopener">天地图</a>`,tileUrlFunction(e){if(!e)return;let[n,r,a]=e;if(n!==void 0&&r!==void 0&&a!==void 0)return t([n,r,a],{token:i.token,hosts:i.hosts,maxZoom:i.maxZoom??18,wrapX:!0})},tileLoadFunction(e,t){let r=e;r.setLoader(async(e,o,l)=>{let u=n(t);try{let n=await s.decode(t),a=c.readFeatures(n.buffer,{extent:e,featureProjection:l});r.setFeatures(a),i.diagnostics?.onDecoded?.(n.stats,u)}catch(e){let t=e instanceof Error?e:Error(String(e));i.diagnostics?.onError?.(t,u),console.error(`天地图私有 VTS 加载失败`,u,t),r.setState(a.ERROR)}})}}),u=l.dispose.bind(l);return l.dispose=()=>{s.dispose(),u()},{source:l,decoder:s}},Se=async e=>{let t=await be(e.style);if(t?.version!==8||!t.sources||!Array.isArray(t.layers))throw TypeError(`style 必须是 Style v8 对象或其 JSON 地址`);let{source:n}=xe({token:e.token,hosts:e.hosts,restoreMode:`auto`}),r=new i({declutter:!0,source:n}),a=r.dispose.bind(r);r.dispose=()=>{n.dispose(),a()};try{let{applyBackground:e,applyStyle:n}=await import(`ol-mapbox-style`),i=structuredClone(t);for(let e of i.layers)e.type===`symbol`&&e.layout?.[`text-font`]&&(e.layout[`text-font`]=[`sans-serif`]);return await Promise.all([n(r,i,{projection:`EPSG:4326`,source:`base-tdt-vector-tile`,updateSource:!1}),e(r,i)]),r}catch(e){throw r.dispose(),e}},A=s();let j;const Ce=e=>{j=e},we=()=>{j=void 0},M=(e,t)=>{if(e.startsWith(`#`)){let n=e.replace(`#`,``);return n.length===3&&(n=n[0]+n[0]+n[1]+n[1]+n[2]+n[2]),`rgba(${parseInt(n.substring(0,2),16)}, ${parseInt(n.substring(2,4),16)}, ${parseInt(n.substring(4,6),16)}, ${t})`}return e},Te=()=>j?.getAllLayers().map(e=>e.get(`_dataList`)||[]).flat(2)||[],Ee=e=>{let t=e=>!Array.isArray(e)||e.length===0?0:1+t(e[0]),n=e=>{if(!Array.isArray(e)||e.length<3)return!1;let t=e[0],n=e[e.length-1];return t[0]===n[0]&&t[1]===n[1]},r=e=>Array.isArray(e)&&e.length>=2&&typeof e[0]==`number`&&typeof e[1]==`number`,i=e=>Array.isArray(e)&&e.length>=2&&e.every(r),a=e=>Array.isArray(e)?(t(e)===2?[e]:e).every(e=>Array.isArray(e)&&e.length>=4&&n(e)&&e.every(r)):!1,o=t(e);try{return o<2||!e||e.length===0?`Invalid`:o===2&&i(e)?n(e)&&e.length>=4?`Polygon`:`LineString`:o===3&&Array.isArray(e)&&e.every(i)?a(e)?`Polygon`:e.every(e=>!n(e))?`MultiLineString`:`Invalid`:o===4&&Array.isArray(e)&&e.every(e=>a(e))?`MultiPolygon`:`Invalid`}catch(e){return console.error(`Error analyzing coordinates:`,e),`Invalid`}},De=new f,N=/* @__PURE__ */ new Map,Oe=async e=>{let t=N.get(e);if(t)return t;let n=await fetch(e);if(!n.ok)throw Error(`WMTS capabilities 请求失败:${n.status}`);let r=De.read(await n.text());return N.set(e,r),r},ke=e=>async t=>{let{style:n,format:r,version:i,layerName:a,matrixSet:o}=t,[s,l]=a.split(`:`),d=`${e}/${s}/${l}/gwc/service/wmts?request=GetCapabilities`,f=await Oe(d),m=p(f,{style:n||``,layer:l,version:i||`1.1.0`,format:r||`image/png`,matrixSet:o||`EPSG:4326`});if(!m)throw Error(`Unable to create TileLayer`);return new u({zIndex:3,className:a,source:new c(m)})},P=(e,t)=>{let n=t.get(`_selectInteraction`);n&&(e.removeInteraction(n),n.dispose(),t.unset(`_selectInteraction`));let r=t.get(`_resolutionChangeKey`);r&&(_(r),t.unset(`_resolutionChangeKey`));let i=t.get(`_dynamicMarkerTimer`);i!==void 0&&(clearTimeout(i),t.unset(`_dynamicMarkerTimer`)),t.getSource()?.dispose(),e.removeLayer(t),t.dispose()},F=`c77eddc667c5bed016fded560baf93e7`,I=(e=`hzsyvector_dark`)=>{let t={zIndex:-5,preload:1,minZoom:8,maxZoom:21,source:new l({tileGrid:new m({tileSize:256,resolutions:[.00549933137253187,.00274966568626595,.00137483284313297,.000687416421566485,.000343708210783242,.000171854105391621,859270526958104e-19,429635263479052e-19,214817631739526e-19,107408815869763e-19,537044079348816e-20,268522039674407e-20,134261019837204e-20],origin:[118.122911693886,31.2869311022836],extent:[116.43263049006,28.6201742126026,123.705594256347,31.9765041681924]}),projection:`EPSG:4326`,urls:[`https://ywtg.citybrain.hangzhou.gov.cn/${e}/{z}/{y}/{x}`,`https://ywtg.citybrain.hangzhou.gov.cn:9456/${e}/{z}/{y}/{x}`,`https://ywtg.citybrain.hangzhou.gov.cn:9457/${e}/{z}/{y}/{x}`,`https://ywtg.citybrain.hangzhou.gov.cn:9458/${e}/{z}/{y}/{x}`,`https://ywtg.citybrain.hangzhou.gov.cn:9459/${e}/{z}/{y}/{x}`]}),properties:{_isBaseLayer:!0,_layerName:e}};return new h(t)},Ae=(e,t=F)=>{let[n,r]=e.split(`_`),i={preload:1,zIndex:-10,cacheSize:20240,properties:{_isBaseLayer:!0,_layerName:e},source:new c({crossOrigin:`anonymous`,projection:`EPSG:4326`,wrapX:!0,layer:n,style:`default`,version:`1.0.0`,format:`image/png`,matrixSet:r,tileGrid:new g({tileSize:256,origin:[-180,90],matrixIds:[`1`,`2`,`3`,`4`,`5`,`6`,`7`,`8`,`9`,`10`,`11`,`12`,`13`,`14`,`15`,`16`,`17`,`18`,`19`],resolutions:[.703125,.3515625,.17578125,.087890625,.0439453125,.02197265625,.010986328125,.0054931640625,.00274658203125,.001373291015625,.0006866455078125,.00034332275390625,.000171661376953125,858306884765625e-19,4291534423828125e-20,21457672119140625e-21,10728836059570312e-21,5364418029785156e-21,2682209014892578e-21]}),url:`https://t{0-7}.tianditu.gov.cn/${e}/wmts?tk=${t}`})};return new h(i)},je=e=>({baseImgLayer:new h({className:`img-layer`,source:new l({crossOrigin:`anonymous`,tileSize:256,url:`https://t{0-7}.tianditu.gov.cn/DataServer?T=img_w&x={x}&y={y}&l={z}&tk=${e}`}),zIndex:1}),baseCiaLayer:new h({className:`img-layer`,source:new l({crossOrigin:`anonymous`,tileSize:256,url:`https://t{0-7}.tianditu.gov.cn/DataServer?T=cia_w&x={x}&y={y}&l={z}&tk=${e}`}),zIndex:2}),baseVecLayer:new h({className:`vec-layer`,source:new l({crossOrigin:`anonymous`,tileSize:256,url:`https://t{0-7}.tianditu.gov.cn/DataServer?T=vec_w&x={x}&y={y}&l={z}&tk=${e}`}),zIndex:1}),baseCvaLayer:new h({className:`vec-layer`,source:new l({crossOrigin:`anonymous`,tileSize:256,url:`https://t{0-7}.tianditu.gov.cn/DataServer?T=cva_w&x={x}&y={y}&l={z}&tk=${e}`}),zIndex:2})}),Me=(e=`emap`,t=`3b0cdd02-c366-4363-b6de-081a9f12b364`)=>new h({preload:1,minZoom:4,maxZoom:20,zIndex:-10,cacheSize:20240,source:new l({wrapX:!0,projection:`EPSG:4326`,crossOrigin:`anonymous`,url:`https://ditu{0-6}.zjzwfw.gov.cn/services/wmts/${e}/default/oss/getTile/{z}/{y}/{x}?token=${t}`})}),Ne=e=>j.getAllLayers().find(t=>(t.get(`_layerName`)||t.getClassName())===e),Pe=e=>{j.getAllLayers().filter(t=>(t.get(`_layerName`)||t.getClassName())===e).forEach(e=>{P(j,e)})},Fe=()=>Math.max(1,Math.min(4,globalThis.navigator?.hardwareConcurrency??2)),L=(e,t,n,r={})=>{let i=new ee({sources:[e],operationType:`image`,operation:(e,t)=>(((e,t)=>{let n=t.ratioArray,r=t.rgbColorArray;if(n&&r){let[t=0,i=0,a=0]=n;for(let n=0;n<e.length;n+=4){let o=e[n],s=e[n+1],c=e[n+2],l=o*t+s*i+c*a;e[n]=r[0]-l,e[n+1]=r[1]-l,e[n+2]=r[2]-l}}})(e[0].data,t),e[0]),threads:r.threads??Fe()});return i.on(`beforeoperations`,e=>{e.data.ratioArray=n,e.data.rgbColorArray=t}),i},Ie=(e,t,n,r={})=>new v({source:L(e,t,n,r)}),R=(e=``)=>{j&&j.getOverlays().getArray().filter(t=>t.get(e||`position`)).forEach(e=>j.removeOverlay(e))},Le=()=>R(`_isAnimationMarker`),Re=(e,t)=>{Le();let{width:n,height:r,lnglat:i,crsForm:a}=t,o=document.createElement(`div`),s=document.createElement(`img`);s.src=e,s.alt=``,n!==void 0&&(s.width=n),r!==void 0&&(s.height=r),o.append(s);let c=new x({element:o,stopEvent:!1,positioning:`bottom-center`,position:y.transform([+i[0],+i[1]],a||y.WGS84,y.WGS84)});c.set(`_isAnimationMarker`,!0),j.addOverlay(c)},ze=(e={id:`popup-container`,positioning:`top-center`})=>new x(Object.assign({element:document.getElementById(e.id)||void 0},e)),Be=()=>{R(),j.getAllLayers().forEach(e=>{e.get(`_selectInteraction`)?.getFeatures().clear()})},z=()=>{R(),j&&j.getAllLayers().forEach(e=>{e.get(`_isBaseLayer`)||P(j,e)})},Ve=()=>{R(),j.getAllLayers().filter(e=>e.get(`_isVectorLayer`)).forEach(e=>{let t=e.get(`_selectInteraction`);t&&(t.dispatchEvent({type:`select`,selected:[],mapBrowserEvent:void 0,deselected:t.getFeatures().getArray()}),t.getFeatures().clear())})},He=e=>{let t=j.getAllLayers().filter(e=>e.get(`_isVectorLayer`));if(t.length){let n=t.find(t=>t.get(`_uuidSet`).has(e)&&t.get(`_selectInteraction`));if(n){let t=(n.getSource()?.getFeatures()||[]).find(t=>t.get(`_uuid`)===e),r=n.get(`_selectInteraction`);if(r){let n=r.getFeatures().getArray();n.find(t=>t.get(`_uuid`)===e)||(r.dispatchEvent({type:`select`,deselected:n,selected:[t],mapBrowserEvent:void 0}),r.getFeatures().push(t))}}}};let B=[119.71512016971076,30.122490541963536];const Ue=(e={})=>{if(j)return j;let t=V(e);return Ce(t),t},V=(e={})=>{let t=Object.assign({zoom:9.4,maxZoom:18,minZoom:9.4,center:B,baseLayer:`vec-layer`,projection:`EPSG:4326`,layers:[I()],constrainResolution:!1,smoothExtentConstraint:!1,tk:F},e||{}),n=new te({view:new ne(t),controls:re({zoom:!1,rotate:!1,attribution:!1}),interactions:ae({pinchRotate:!1,doubleClickZoom:!1,altShiftDragRotate:!1}),layers:t.layers||[I()]});B=t.center||B,n.activeBaseLayer=t.baseLayer;let r=e=>n.getAllLayers().find(t=>(t.get(`_layerName`)||t.getClassName())===e);n.getLayerByName=r,n.removeLayerByName=e=>{let t=r(e);t&&P(n,t)},n.changeLayersByNames=(e,t)=>{n.getAllLayers().filter(e=>t.includes(e.getClassName())).forEach(t=>t.setVisible(e?.includes(t.getClassName())))};let i,a;return n.on(`pointermove`,e=>{if(a=e.pixel,i!==void 0)return;let t=()=>{i=void 0;let e=n.getTargetElement();a&&e&&(e.style.cursor=n.hasFeatureAtPixel(a)?`pointer`:``)};i=typeof globalThis.requestAnimationFrame==`function`?globalThis.requestAnimationFrame(t):setTimeout(t,16)}),n.set(`_disposePointerMove`,()=>{i!==void 0&&(typeof globalThis.cancelAnimationFrame==`function`?globalThis.cancelAnimationFrame(i):clearTimeout(i),i=void 0)}),n},H=()=>{if(!j)return;let e=j;e.get(`_disposePointerMove`)?.(),e.unset(`_disposePointerMove`),e.getOverlays().forEach(t=>{e.removeOverlay(t)}),e.getInteractions().clear(),e.getAllLayers().forEach(t=>P(e,t)),e.setTarget(``),e.dispose(),we()},We=()=>H(),Ge=()=>j,U=(e=B)=>{j&&j.getView().animate({zoom:9.4,center:e,duration:1e3})},Ke=(e={center:B,isClearAll:!0})=>{z(),U(e.center||B)},W={padding:[50,50,50,50],duration:1e3},qe=(e,t=j,n)=>{let r=t.getView();if(e.length===1)r.animate({zoom:14,duration:1e3,center:e[0],...n||{}});else{let t=oe(e);r.fit(t,{...W,...n||{}})}},Je=(e,t=j,n)=>{t.getView().fit(e,{...W,...n||{}})},Ye=(e,t=j,n)=>{let r=e.getSource();if(!r||r.isEmpty())return;let i=r.getExtent();i&&t.getView().fit(i,{...W,...n||{}})},Xe=(e,t)=>{let n=j.getView(),r=n.getZoom();n.animate({center:e,duration:2e3}),t?n.animate({zoom:t-2,duration:1e3},{zoom:t,duration:1e3}):n.animate({zoom:r-2,duration:1e3},{zoom:r+2>12?12:r+2,duration:1e3})},G=e=>new k({text:e.text,offsetY:e.offsetY,offsetX:e.offsetX,justify:`center`,textAlign:`center`,font:`16px PingFangSC-Semibold`,fill:new T({color:`rgba(255, 255, 255, 0.8)`})}),K=(e,t=!1)=>new O({image:new E({scale:e.scale||1,rotation:e.rotation||0,anchor:e.anchor||[.5,1],src:t&&e.activeImg||e.img}),text:e.showText?G(e):void 0}),q=(e,t)=>{let n=new le({geometry:new S([+e.lng,+e.lat]),data:Object.assign({},e||{},{layerName:t.layerName})});return n.setStyle(K(e)),n},J=(e,t)=>{let{layerName:n,visible:r=!0,zIndex:i=10}=t,a=new w;return e.forEach(e=>a.addFeature(q(e,t))),new C({zIndex:i,visible:r,source:a,className:n||`marker-layer`})},Y=(e,t)=>{let n=t>=14?`largeImg`:t>=11?`smallImg`:`img`;e.forEach(e=>{let t=e.get(`data`);t.isSelected||e.setStyle(K({...t,img:t[n]},!1))})},X=(e,t)=>{let n=e.get(`data`),r={...n,isSelected:t};e.set(`data`,r),n.isElastic?Y([e],j.getView().getZoom()):e.setStyle(K(r,t))},Ze=e=>{e.forEach(e=>{X(e,!1)}),e.clear()},Qe=(e,t)=>{let n=e.map(e=>({...e,isElastic:!0})),r=J(n,t),i=r.getSource().getFeatures(),a=j.getView();return Y(i,a.getZoom()),r.set(`_resolutionChangeKey`,a.on(`change:resolution`,()=>Y(i,a.getZoom()))),r},$e=(e,t)=>{let n=q(e,t),r=new C({className:t.layerName||`ol-layer`,source:new w({features:[n]})});return j.addLayer(r),{vectorLayer:r}},et=(e,t)=>{let n=t.getProperties(),{activeStyle:r}=n;if(t.setStyle(r),A.emit(`selected-feature`,n),e.set(`_hasActive`,!0),e.get(`_isDynamic`)){let t=r.getImage(),i=e.get(`_dynamicMarkerTimer`);i!==void 0&&clearTimeout(i);let a=setTimeout(()=>{e.unset(`_dynamicMarkerTimer`),A.emit(`dynamic-marker`,Object.assign({},n.rawData||{},{lnglat:n.lnglat,style:n.style,crsForm:n.crsForm,width:t.getWidth(),height:t.getHeight()}))},1e3);e.set(`_dynamicMarkerTimer`,a)}if(e.get(`_isAutoFit`)){let e=j.getView();e.animate({duration:1e3,zoom:e.getZoom(),center:se(t.getGeometry().getExtent())})}},Z=e=>{let t=new ie({style:null,multi:!1,hitTolerance:10,layers:[e],condition:t=>{if(!ce(t))return!1;let n=!1;return j.forEachFeatureAtPixel(t.pixel,()=>{n=!0},{layerFilter:t=>t===e}),n}});return t.on(`select`,t=>{let{selected:n,deselected:r}=t;if(n.length){let t=n[0];if(e.get(`_isClusterLayer`)){let n=t.get(`features`);n.length===1&&et(e,n[0])}else et(e,t)}if(r.length){let t=r[0],n=t.getProperties();t.setStyle(n.unActiveStyle),e.set(`_hasActive`,!1)}}),j.addInteraction(t),e.set(`_selectInteraction`,t),t},tt=(e,t,n)=>{let r=new ie({style:null,layers:t=>e.includes(t.getClassName())});return r.on(`select`,({deselected:e,selected:r})=>{if(e.length){let t=e[0];X(t,!1),n?.(t)}if(r.length){let e=r[0];X(e,!0),t?.(e)}}),r},nt=e=>{let t=pe(e,{projection:`EPSG:4326`});return t>1e4?`${Math.round(t/1e6*100)/100} km\xB2`:`${Math.round(t*100)/100} m\xB2`},rt=e=>{let t=me(e,{projection:`EPSG:4326`});return t>100?`${Math.round(t/1e3*100)/100} km`:`${Math.round(t*100)/100} m`},it=new O({fill:new T({color:`rgba(255, 255, 255, 0.2)`}),stroke:new D({color:`rgba(0, 0, 0, 0.5)`,lineDash:[10,10],width:2}),image:new ue({radius:5,stroke:new D({color:`rgba(0, 0, 0, 0.7)`}),fill:new T({color:`rgba(255, 255, 255, 0.2)`})})}),at=/* @__PURE__ */ new WeakMap,ot=e=>{let t=at.get(e);if(t)return t;let n=new O({text:new k({font:`14px`,fill:new T({color:`rgba(255, 255, 255, 1)`}),backgroundFill:new T({color:`rgba(0, 0, 0, 0.7)`}),padding:[3,3,3,3],textBaseline:`bottom`,offsetY:-15}),image:new de({radius:8,points:3,angle:Math.PI,displacement:[0,10],fill:new T({color:`rgba(0, 0, 0, 0.7)`})})});return at.set(e,n),n},st=(e,t=it)=>{let n=t?[t]:[],r=e.getGeometry(),i,a;if(r.getType()===`Polygon`?(i=r.getInteriorPoint(),a=nt(r)):r.getType()===`LineString`&&(i=new S(r.getLastCoordinate()),a=rt(r)),i&&a){let t=ot(e);t.setGeometry(i),t.getText().setText(a),n.push(t)}return n},ct=(e=`Point`,t,n)=>new fe({source:t.getSource(),type:e,style:n?e=>st(e,void 0):void 0}),lt=(e,t,n)=>{let{layerName:r}=n||{},i=Object.assign({className:r||`ol-layer`,source:new w({features:new he().readFeatures(e)}),style:t||new O({stroke:new D({color:`red`,lineDash:[10],width:3}),fill:new T({color:`rgba(0, 0, 255, 0.1)`})})},n||{});return new C(i)},Q=(e,t,n,r)=>t&&n?.get(e[t])||r,ut=(e,t)=>{let{key:n,crsForm:r}=t,i=[];return e.forEach(e=>{try{let t=e[n],r=Array.isArray(t)?t:JSON.parse(t||`[]`);if(r.length){let t=e.geoType||Ee(r);t!==`Invalid`&&i.push({type:`Feature`,properties:{...e},geometry:{type:t,coordinates:r}})}}catch(e){console.error(`创建线状数据失败:${e}`)}}),y.transform({type:`FeatureCollection`,features:i},r||y.WGS84,y.WGS84)},dt=(e,t)=>{let{isLine:n,colorMap:r,fillColor:i,colorKey:a,strokeColor:o,fillOpacity:s,strokeWeight:c,activeFillColor:l,activeFillOpacity:u,activeStrokeColor:d,activeStrokeWeight:f}=t||{},p=e.getProperties(),m=new O({stroke:new D({width:f??c??4,color:d||Q(p,a,r,o)})}),h=new O({stroke:new D({width:c??2,color:Q(p,a,r,o)})});return n||(m.setFill(new T({color:M(l||i||``,u??s??1)||M(Q(p,a,r,i)||``,s??1)})),h.setFill(new T({color:M(Q(p,a,r,i)||``,s??1)}))),e.setProperties({activeStyle:m,unActiveStyle:h}),h},ft=(e,t)=>{let n=ut(e,t),r=new d().readFeatures(n),i=r.map(e=>{let t={...e.getProperties()};return delete t.geometry,t});return r.forEach(e=>{e.setStyle(dt(e,t))}),{features:r,acceptedData:i}},$=(e,t)=>{let{isAutoFit:n,layerName:r,openClick:i}=t,{features:a,acceptedData:o}=ft(e,t),s=new C({zIndex:5,className:r||`ol-layer`,source:new w({features:a})});return i&&Z(s),s.setProperties({_isCustom:!0,_isAutoFit:n,_isVectorLayer:!0,_vectorConfig:t,_layerName:r,_dataList:o,_uuidSet:new Set(o.map(e=>e._uuid))}),s},pt=(e,t,n)=>{let r=e.getSource(),{_vectorConfig:i}=e.getProperties()||{},{features:a,acceptedData:o}=ft(t,Object.assign({},i,{crsForm:n??i?.crsForm}));r.addFeatures(a);let s=new Set(e.get(`_uuidSet`)||[]);o.forEach(e=>s.add(e._uuid)),e.set(`_uuidSet`,s),e.set(`_dataList`,[...e.get(`_dataList`)||[],...o])},mt=(e=[],t)=>$(e,Object.assign({},t,{isLine:!1})),ht=(e=[],t)=>$(e,Object.assign({},t,{isLine:!0})),gt=e=>t=>{let{baseUrl:n,markerIcon:r,statusNum:i=5,activeScale:a=1.3,markerSize:o=[32,32]}=t,s=e(n),[c,l]=o,u=Array(i*2);for(let e=0;e<i;e++){let t=s(`${r}-${e}`,`.webp`);u[e]=new O({zIndex:88+e,image:new E({width:c,height:l,src:t,anchor:[.5,1]})});let n=s(`${r}-${e}-active`,`.webp`);u[e+i]=new O({zIndex:120,image:new E({width:c*a,height:l*a,anchor:[.5,1],src:n||t})})}return u},_t=(e,t=[])=>e.map(e=>{let{crsForm:n}=e,r=y.transform([+e.lnglat[0],+e.lnglat[1]],n||y.WGS84,y.WGS84),i=new b({geometry:new ge(r)});return i.setProperties({...e,unActiveStyle:t[e.style],activeStyle:t[e.style+t.length/2]}),i.setStyle(t[e.style]),i}),vt=(e,t,n={})=>{let r=e.get(`_massMarksStyles`),i=e?.getSource(),{clear:a}=n,o=_t(t,r);a&&i?.clear(),i?.addFeatures(o);let s=[...a?[]:e.get(`_dataList`)||[],...t];e.set(`_dataList`,s),e.set(`_uuidSet`,new Set(s.map(e=>e._uuid)))},yt=(e,t=[])=>{let n=new C({zIndex:2e3,source:new w({features:_t(e,t)})});return n.setProperties({_isCustom:!0,_isVectorLayer:!0,_isMassMarksLayer:!0,_statusNum:t.length/2,_dataList:[...e],_uuidSet:new Set(e.map(e=>e._uuid)||[])}),n},bt=e=>(t=[],n,r=!0)=>{let{offset:i=[0,0],baseUrl:a,hasLine:o,hasFace:s,layerName:c,isDynamic:l,isAutoFit:u,statusNum:d,markerIcon:f,marksStyles:p,markerSize:m,activeScale:h,vectorConfig:g}=n,_=p||gt(e)({baseUrl:a,markerIcon:f,markerSize:m,statusNum:d||5,activeScale:h||1.3}),v=yt(t,_);if(r&&(v.setProperties({_offset:i,_isAutoFit:u}),Z(v)),o){let e=$(t,Object.assign({},{key:`line`,isLine:!0,openClick:!1,strokeWeight:4,strokeColor:`rgba(29, 235, 255, 0.8)`},g||{}));j.addLayer(e)}if(s){let e=$(t,Object.assign({},{isLine:!1,key:`faceList`,strokeWeight:1,openClick:!1,fillColor:`#4247DF`,strokeStyle:`dashed`,strokeColor:`#4247DF`},g||{}));j.addLayer(e)}return v.setProperties({_isCustom:!0,_offset:i,_hasLine:o,_hasFace:s,className:c,_layerName:c,_isVectorLayer:!0,_isDynamic:l,_massMarksStyles:_}),j.addLayer(v),v},xt=(e=[])=>{let t=new O({}),n=new Set(e),r=[];return j.getAllLayers().filter(e=>e.get(`_isMassMarksLayer`)).forEach(e=>{e.getSource().getFeatures().forEach(e=>{let i=e.getProperties();n.has(i.status)?(r.push(i),e.setStyle(i.unActiveStyle)):e.setStyle(t)})}),r},St=(e,t)=>{let n=j.getAllLayers().filter(t=>(t.get(`_layerName`)||t.getClassName())===e&&t.get(`_isMassMarksLayer`)),r=new O({});n.forEach(e=>{e.getSource().getFeatures().forEach(e=>{let n=e.getProperties();t.has(n.id)?e.setStyle(n.unActiveStyle):e.setStyle(r)})})},Ct=(e,t)=>{let n=e.length,r={},{distance:i,minDistance:a,openClick:o,buildStyle:s,singleStyles:c,computedRadius:l,layerName:u=`cluster-layer`}=t,d=e=>(e/n)**(1/18);r[1]=c;let f=e=>{let t=e.get(`features`).length,n=r[t],i=l?l(t):d(t);if(n||(n=new O({image:new ve({radius:i*20,stroke:new D({width:2,color:`hsla(${180-i*180}, 100%, 40%, 1)`}),fill:new T({color:`hsla(${180-i*180}, 100%, 50%, 1)`})}),text:new k({text:t.toString(),fill:new T({color:`hsla(${180-i*180}, 100%, 10%, 1)`}),textBaseline:`middle`})}),r[t]=n),Array.isArray(n)){let t=e.get(`features`)[0].get(`styleIndex`)??0;return n[t]}return n},p=new C({zIndex:200,className:u,source:new _e({distance:i||80,minDistance:a||0,source:new w({features:e.map(e=>{let t=new b(new ge(e.lnglat));t.setProperties(e);let n=e.style??0;return t.setProperties({unActiveStyle:c[n],activeStyle:c[n+c.length/2]}),t})})}),style:e=>s?s(e):f(e)});return p.setProperties({_isCustom:!0,_isVectorLayer:!0,_isClusterLayer:!0}),o&&Z(p),p};export{ye as GeometryType,He as activeFeatureByUid,vt as addFeaturesByLayer,bt as addMassMarksLayer,pt as appendFeaturesByLayer,je as baseLayers,gt as buildMassMarksStyles,St as changeFeaturesVisibleByIds,Ie as changeLayer,L as changeSource,Ze as changeUnselectStyle,Re as createAnimationMarker,I as createBaseLayer,$ as createBusinessLayer,Ct as createClusterLayer,ct as createDrawInteraction,Qe as createElasticMarkerLayer,lt as createGeoJsonLayer,K as createIconStyle,tt as createLayerSelectByNames,V as createMap,Ue as createMapInstance,Ae as createMapWorldLayer,q as createMarker,J as createMarkersLayer,yt as createMassMarksLayer,$e as createMoveMarkerLayer,ze as createOverlay,Z as createSelectByLayer,xe as createTdtVectorSource,Se as createTdtVtsLayer,G as createText,mt as createVectorFaceLayer,ht as createVectorLineLayer,ke as createWmtsLayer,Me as createZheJiangLayer,We as disposeInstance,H as disposeMap,A as emitter,Xe as flyToAnimate,st as getDrawStyle,Ne as getLayerByName,Te as getLayersDataList,Ge as getMapInstance,j as instance,z as removeAllLayers,Pe as removeLayerByName,R as removeOverlays,Ve as resetActiveFeature,Be as resetActiveVector,Ke as resetMap,U as resetZoomAndCenter,qe as setFitViewByCoords,Je as setFitViewByGeom,Ye as setFitViewByLayer,xt as updateMarksLayersByStatus};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "map-ol-utils",
3
- "version": "1.0.1",
3
+ "version": "1.0.3",
4
4
  "type": "module",
5
5
  "description": "OpenLayers utilities with browser-side Tianditu private VTS loading and conversion",
6
6
  "files": [