zhihao-ui 1.2.38 → 1.2.39
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/es/{BaseInfo-BjqSNfhB.js → BaseInfo-VzgiaCKn.js} +1 -1
- package/dist/es/{BaseItem-Da1CQtVm.js → BaseItem-D1xoWSGo.js} +3 -3
- package/dist/es/{Button-CKHqdHWj.js → Button-CNEQmoqP.js} +2 -2
- package/dist/es/{DatePicker-BOkpRWph.js → DatePicker-Dh8sksac.js} +3 -3
- package/dist/es/{DetailHeader-CL5Fin_g.js → DetailHeader-CSC9DAQc.js} +3 -3
- package/dist/es/{DetailSubTitle-Derdb7AV.js → DetailSubTitle-1ZjJAmet.js} +2 -2
- package/dist/es/{Dialog-CGN6pFzA.js → Dialog-BuGbBs3k.js} +3 -3
- package/dist/es/{DiyDataTable-CUbUe8NL.js → DiyDataTable-B8z44XT3.js} +4 -4
- package/dist/es/{EditInfoPair-Dd_u_yvQ.js → EditInfoPair-Dx0KRj7O.js} +3 -3
- package/dist/es/{FileWrapper-CGoXaXk9.js → FileWrapper-CS2RTMEV.js} +4 -4
- package/dist/es/{Grid-Dr8kPvc8.js → Grid-BQYUct2W.js} +2 -2
- package/dist/es/{InfoPair-B2VzU1pL.js → InfoPair-C3sCcJVT.js} +3 -3
- package/dist/es/{Input-DbqCWZ3K.js → Input-CcYpobcm.js} +3 -3
- package/dist/es/{Loading-Dimy_7_w.js → Loading-DCEW1FE_.js} +2 -2
- package/dist/es/{Map-BM9UCaCC.js → Map-Bo9f4Uus.js} +485 -477
- package/dist/es/{MessageBox-B54tNjcZ.js → MessageBox-ByLWEDby.js} +2 -2
- package/dist/es/{MoneyInput-uw4tR9WE.js → MoneyInput-DevlnT8p.js} +5 -5
- package/dist/es/{PageHeadPanel-CgR9a7c6.js → PageHeadPanel-C5A4n2ie.js} +2 -2
- package/dist/es/{Table-BdySjJta.js → Table-BoMGydAp.js} +5 -5
- package/dist/es/{ToolTips-BHQkWmMR.js → ToolTips-6ETyGI4m.js} +3 -3
- package/dist/es/index.js +23 -23
- package/dist/es/{utils-DUHqvTHl.js → utils-BSQSj8Ii.js} +1 -1
- package/dist/es/{vendor-B7FHttiN.js → vendor-DaYdW1_n.js} +13 -13
- package/dist/index.css +1 -1
- package/dist/types/components/Map/Map.vue.d.ts +3 -0
- package/dist/types/components/Map/components/measure.vue.d.ts +2 -2
- package/dist/types/components/Map/index.d.ts +9 -0
- package/dist/types/components/Map/utils/store.d.ts +2 -0
- package/dist/umd/index.css +1 -1
- package/dist/umd/index.umd.cjs +3 -3
- package/package.json +1 -1
package/dist/umd/index.umd.cjs
CHANGED
|
@@ -652,7 +652,7 @@ void main(void) {
|
|
|
652
652
|
samplePos = clamp(samplePos, vec2(0.5), sampleSize - vec2(0.5));
|
|
653
653
|
samplePos.y = sampleSize.y - samplePos.y; // invert y axis so that images appear upright
|
|
654
654
|
return texture2D(texture, (samplePos + textureOffset) / textureSize);
|
|
655
|
-
}`;const $=`u_texture${g}`;let V="1.";"fill-color"in t&&(V=e.getFillColorExpression()),e.setFillColorExpression(`${V} * sampleFillPattern(${$}, ${y}, ${L}, ${k}, pxOrigin, pxPos)`)}}function parseLiteralStyle(t,e){const n=newCompilationContext(),r={...newCompilationContext(),inFragmentShader:!0,variables:n.variables},i=new ShaderBuilder,g={};if("icon-src"in t?parseIconProperties(t,i,g,n,r):"shape-points"in t?parseShapeProperties(t,i,g,n,r):"circle-radius"in t&&parseCircleProperties(t,i,g,n,r),parseStrokeProperties(t,i,g,n,r),parseFillProperties(t,i,g,n,r),t.filter){const L=expressionToGlsl(r,t.filter,BooleanType);i.setFragmentDiscardExpression(`!${L}`)}for(const L in r.variables){const $=r.variables[L],V=uniformNameForVariable($.name);let z=getGlslTypeFromType($.type);$.type===ColorType&&(z="vec4"),i.addUniform(`${z} ${V}`),g[V]=()=>{const j=e[$.name];return typeof j=="number"?j:typeof j=="boolean"?j?1:0:$.type===ColorType?asArray(j||"#eee"):typeof j=="string"?getStringNumberEquivalent(j):j}}for(const L in r.properties){const $=r.properties[L];n.properties[L]||(n.properties[L]=$);let V=getGlslTypeFromType($.type),z=`a_prop_${$.name}`;$.type===ColorType&&(V="vec4",z=`unpackColor(${z})`,i.addVertexShaderFunction(UNPACK_COLOR_FN)),i.addVarying(`v_prop_${$.name}`,V,z)}for(const L in n.properties){const $=n.properties[L];i.addAttribute(`${getGlslTypeFromType($.type)} a_prop_${$.name}`)}for(const L in n.functions)i.addVertexShaderFunction(n.functions[L]);for(const L in r.functions)i.addFragmentShaderFunction(r.functions[L]);const y={};for(const L in n.properties){const $=n.properties[L],V=z=>{const j=z.get($.name);return $.type===ColorType?packColor([...asArray(j||"#eee")]):typeof j=="string"?getStringNumberEquivalent(j):typeof j=="boolean"?j?1:0:j};y[`prop_${$.name}`]={size:getGlslSizeFromType($.type),callback:V}}function k(L,$,V,z){const j=n[L],oe=r[L];if(!j&&!oe)return;const re=getGlslTypeFromType(V),ie=getGlslSizeFromType(V);i.addAttribute(`${re} a_${$}`),oe&&i.addVarying(`v_${$}`,re,`a_${$}`),y[$]={size:ie,callback:z}}return k("geometryType",GEOMETRY_TYPE_PROPERTY_NAME,StringType,L=>getStringNumberEquivalent(computeGeometryType(L.getGeometry()))),k("featureId",FEATURE_ID_PROPERTY_NAME,StringType|NumberType,L=>{const $=L.getId()??null;return typeof $=="string"?getStringNumberEquivalent($):$}),{builder:i,attributes:y,uniforms:g}}class WebGLPointsLayer extends Layer{constructor(e){const n=Object.assign({},e);super(n),this.styleVariables_=e.variables||{},this.parseResult_=parseLiteralStyle(e.style,this.styleVariables_),this.hitDetectionDisabled_=!!e.disableHitDetection}createRenderer(){const e=Object.keys(this.parseResult_.attributes).map(n=>({name:n,...this.parseResult_.attributes[n]}));return new WebGLPointsLayerRenderer(this,{vertexShader:this.parseResult_.builder.getSymbolVertexShader(),fragmentShader:this.parseResult_.builder.getSymbolFragmentShader(),hitDetectionEnabled:!this.hitDetectionDisabled_,uniforms:this.parseResult_.uniforms,attributes:e})}updateStyleVariables(e){Object.assign(this.styleVariables_,e),this.changed()}}var CAR_COLOR=(t=>(t[t.BLUE=1]="BLUE",t[t.YELLOW=2]="YELLOW",t[t.Y_GREEN=3]="Y_GREEN",t))(CAR_COLOR||{}),DEVICE_TYPE=(t=>(t[t.HOST=1]="HOST",t[t.TALK=2]="TALK",t[t.STORAGE=3]="STORAGE",t[t.INTERNET=4]="INTERNET",t[t.CAMERA=5]="CAMERA",t[t.LOAD=6]="LOAD",t))(DEVICE_TYPE||{}),LENGTH_UNIT=(t=>(t[t.M=1]="M",t[t.KM=2]="KM",t[t.NM=3]="NM",t))(LENGTH_UNIT||{}),SWITCH_BTN=(t=>(t.Camera="camera",t.Mobile="mobile",t.WaterGauge="waterGauge",t))(SWITCH_BTN||{}),SHIP_SAIL_STATUS=(t=>(t[t.发动机使用中=0]="发动机使用中",t[t.锚泊=1]="锚泊",t[t.未操作=2]="未操作",t[t.操纵能力受限=3]="操纵能力受限",t[t.吃水受限=4]="吃水受限",t[t.系泊=5]="系泊",t[t.搁浅=6]="搁浅",t[t.从事捕捞=7]="从事捕捞",t[t.航行中=8]="航行中",t[t.留作将来修正导航状态=9]="留作将来修正导航状态",t[t.高速船留用=10]="高速船留用",t[t.机动船尾推作业=11]="机动船尾推作业",t[t.机动船顶推或侧推作业=12]="机动船顶推或侧推作业",t[t.飞翼船留用=13]="飞翼船留用",t[t.现行的=14]="现行的",t[t.未定义=15]="未定义",t))(SHIP_SAIL_STATUS||{});class ShipMapData{constructor(e,n,r,i,g,y,k,L,$,V,z,j,oe,re,ie,ae,le,de,pe,ue,he,Ce,_e,xe){qn(this,"id");qn(this,"mmsi");qn(this,"fill");qn(this,"shipType");qn(this,"name");qn(this,"length");qn(this,"breadth");qn(this,"lon");qn(this,"lat");qn(this,"createdAt");qn(this,"speed");qn(this,"from");qn(this,"sailStatus");qn(this,"hdg");qn(this,"cog");qn(this,"posType");qn(this,"type");qn(this,"angle");qn(this,"leftIconColor");qn(this,"existDevice");qn(this,"existMobile");qn(this,"existWaterGauge");qn(this,"selected");qn(this,"blinkColors");this.id=e,this.mmsi=n,this.fill=r,this.shipType=i,this.name=g,this.length=y,this.breadth=k,this.lon=L,this.lat=$,this.createdAt=V,this.speed=z,this.from=j,this.sailStatus=oe,this.hdg=re,this.cog=ie,this.posType=ae,this.type=le,this.angle=de,this.leftIconColor=pe,this.existDevice=ue,this.existMobile=he,this.existWaterGauge=Ce,this.selected=_e,this.blinkColors=xe}}const formatLength=function(t,e){const r=getLength(t);let i="";switch(e){case LENGTH_UNIT.M:i=Math.round(r*100)/100+" m";break;case LENGTH_UNIT.KM:i=Math.round(r/1e3*100)/100+" km";break;case LENGTH_UNIT.NM:i=(Math.round(r/1e3*100)/100/1.852).toFixed(2)+" nm";break}return i},convertSixHundredThousandToLatLng=function(t,e){const n=Number(e)/6e5;return[Number(t)/6e5,n]},formatArea=(t,e)=>{const r=getArea(t);let i;switch(e){case LENGTH_UNIT.KM:r>1e4?i=Math.round(r/1e6*100)/100+" km<sup>2</sup>":i=Math.round(r*100)/100+" m<sup>2</sup>";break;case LENGTH_UNIT.NM:const g=Math.pow(1.852,2);r>1e4?i=Math.round(r/1e6/g*100)/100+" nm<sup>2</sup>":i=Math.round(r*100)/100+" m<sup>2</sup>";break}return i},convertShipMapData=t=>{const e=n=>new ShipMapData(n.id,n.id,n.fill||"#04C900","70",(n.cnname||n.enname||n.name||n.id)+`${n.existName?n.existName:""}`,n.len||n.length,n.wid||n.breadth,n.lon,n.lat,new Date().getTime(),n.spd,n.from,n.status,Number(n.hdg),n.cog,Number(n.postype),"other",n.cog,n.leftIconColor,n.existDevice,n.existMobile,n.existWaterGauge,n.selected,n.blinkColors);return Array.isArray(t)?t.map(n=>e(n)):e(t)},formatUtils={formatLength,convertSixHundredThousandToLatLng,formatArea},_hoisted_1$a={key:0,class:"measure-panel"},_hoisted_2$6={class:"d-flex justify-content-between align-content-start w-100"},_hoisted_3$5={class:"measure-history-list"},_hoisted_4$2={class:"left-panel"},_hoisted_5$2={class:"text index"},_hoisted_6$2={class:"text"},_hoisted_7$2=["onClick"],_sfc_main$c=vue.defineComponent({__name:"measure",props:vue.mergeModels({viewMode:{}},{visible:{type:Boolean},visibleModifiers:{}}),emits:vue.mergeModels(["close"],["update:visible"]),setup(t,{expose:e,emit:n}){const r=vue.inject("mapInstance"),i=n,g=vue.useModel(t,"visible"),y=vue.ref("3"),k=vue.ref([]),L=vue.ref(!1),$=new VectorSource;let V,z,j,oe,re;const ie=new VectorLayer({source:$,style:{"fill-color":"rgba(255, 255, 255, 0.2)","stroke-color":"#ffcc33","stroke-width":2,"circle-radius":7,"circle-fill-color":"#ffcc33"}}),ae=function(Oe){if(Oe.dragging)return;let $e="点击选择起点";V&&($e="单击继续,双击结束"),z&&(z.innerHTML=$e,j.setPosition(Oe.coordinate),z.classList.remove("hidden"))},le=()=>{r.value&&(r.value.on("pointermove",ae),r.value.getViewport().addEventListener("mouseout",function(){var Oe;(Oe=z==null?void 0:z.classList)==null||Oe.add("hidden")}),L.value=!0)};let de;const pe=new Style({fill:new Fill({color:"rgba(255, 255, 255, 0.2)"}),stroke:new Stroke({color:"rgba(255,204,51)",lineDash:[10,10],width:2}),image:new CircleStyle({radius:5,stroke:new Stroke({color:"rgba(0, 0, 0, 0.7)"}),fill:new Fill({color:"rgba(255, 255, 255, 0.2)"})})});function ue(){var Oe,$e;if(r.value){if(k.value=[],document.querySelectorAll(".ol-tooltip.ol-tooltip-static").forEach(qe=>{var kt;(kt=qe==null?void 0:qe.parentNode)==null||kt.removeChild(qe)}),$.clear(),de){const qe=r.value.getInteractions().getArray().find(kt=>kt.ol_uid===de.ol_uid);qe&&((Oe=r.value)==null||Oe.removeInteraction(qe))}($e=r.value)==null||$e.removeLayer(ie),z!=null&&z.parentNode&&z.parentNode.removeChild(z),oe!=null&&oe.parentNode&&oe.parentNode.removeChild(oe)}}function he(){var $e,qe;ue(),($e=r.value)==null||$e.addLayer(ie),de=new Draw({source:$,type:"LineString",style:function(){return pe}}),(qe=r.value)==null||qe.addInteraction(de),_e(),Ce();let Oe;de.on("drawstart",function(kt){var Ve;V=kt.feature;let Dt;Oe=(Ve=V.getGeometry())==null?void 0:Ve.on("change",function(Fe){const ze=Fe.target;let Ue=formatUtils.formatLength(ze,Number(y.value));Dt=ze.getLastCoordinate(),oe&&Ue&&(oe.innerHTML=Ue),re.setPosition(Dt)})}),de.on("drawend",function(){var kt,Dt;oe&&(oe.className="ol-tooltip ol-tooltip-static ol-tooltip-measure"),oe!=null&&oe.innerHTML&&(k.value.push(oe==null?void 0:oe.innerHTML),oe.innerHTML=`${oe.innerHTML}<div class="ol-tooltip-delete-button" data-index="${((kt=k.value)==null?void 0:kt.length)-1}"><i class="map-iconfont icon-delete"></i></div>`),(Dt=document.querySelector(".ol-selectable:has(.ol-tooltip-delete-button):last-child .ol-tooltip-delete-button"))==null||Dt.addEventListener("click",Ve=>{var ze;Ve.preventDefault(),Ve.stopPropagation();const Fe=(ze=Ve.target)==null?void 0:ze.getAttribute("data-index");Fe&&xe(Number(Fe))}),re.setOffset([0,-7]),V=null,oe=null,_e(),Oe&&unByKey(Oe)})}function Ce(){var Oe;z!=null&&z.parentNode&&z.parentNode.removeChild(z),z=document.createElement("div"),z.className="ol-tooltip hidden",j=new Overlay({element:z,offset:[15,0],positioning:"center-left"}),(Oe=r.value)==null||Oe.addOverlay(j)}function _e(){var Oe;oe!=null&&oe.parentNode&&oe.parentNode.removeChild(oe),oe=document.createElement("div"),oe.className="ol-tooltip ol-tooltip-measure",re=new Overlay({element:oe,offset:[0,-15],positioning:"bottom-center",stopEvent:!1,insertFirst:!1}),(Oe=r.value)==null||Oe.addOverlay(re)}const xe=Oe=>{var kt,Dt;k.value[Oe]&&k.value.splice(Oe,1);const $e=document.querySelectorAll(".ol-tooltip.ol-tooltip-static.ol-tooltip-measure");$e[Oe]&&((Dt=(kt=$e[Oe])==null?void 0:kt.parentNode)==null||Dt.removeChild($e[Oe]));const qe=$.getFeatures();qe[Oe]&&$.removeFeature(qe[Oe])},Ie=()=>{i("close")};return vue.watch(()=>g,()=>{g.value&&!L.value&&(le(),he())},{deep:!0,immediate:!0}),e({addInteraction:he,removeInteraction:ue}),(Oe,$e)=>g.value&&Oe.viewMode!=="WxMiniprogram"?(vue.openBlock(),vue.createElementBlock("div",_hoisted_1$a,[vue.createElementVNode("div",{class:"header"},[$e[1]||($e[1]=vue.createElementVNode("div",{class:"title"},"测量",-1)),vue.createElementVNode("i",{onClick:Ie,class:"map-iconfont icon-close"})]),vue.createElementVNode("div",_hoisted_2$6,[$e[2]||($e[2]=vue.createElementVNode("div",{class:"tips"},"在地图上点击多个点测量距离,距离单位",-1)),vue.createVNode(vue.unref(ElSelect),{class:"select-length-unit",modelValue:y.value,"onUpdate:modelValue":$e[0]||($e[0]=qe=>y.value=qe)},{default:vue.withCtx(()=>[vue.createVNode(vue.unref(ElOption),{label:"m",value:"1"}),vue.createVNode(vue.unref(ElOption),{label:"km",value:"2"}),vue.createVNode(vue.unref(ElOption),{label:"nm",value:"3"})]),_:1},8,["modelValue"])]),vue.createElementVNode("div",_hoisted_3$5,[(vue.openBlock(!0),vue.createElementBlock(vue.Fragment,null,vue.renderList(k.value,(qe,kt)=>(vue.openBlock(),vue.createElementBlock("div",{class:"measure-history-item",key:kt},[vue.createElementVNode("div",_hoisted_4$2,[$e[3]||($e[3]=vue.createElementVNode("i",{class:"map-iconfont icon-line"},null,-1)),vue.createElementVNode("span",_hoisted_5$2,"线段"+vue.toDisplayString(kt+1),1),vue.createElementVNode("span",_hoisted_6$2,vue.toDisplayString(qe),1)]),vue.createElementVNode("div",{class:"delete-button",onClick:Dt=>xe(kt)},$e[4]||($e[4]=[vue.createElementVNode("i",{class:"map-iconfont icon-delete"},null,-1)]),8,_hoisted_7$2)]))),128))])])):vue.createCommentVNode("",!0)}}),Measure=_export_sfc(_sfc_main$c,[["__scopeId","data-v-0b59fc70"]]),mapInstance$8=vue.ref(),renderMarkerSetInstance=t=>mapInstance$8.value=t,markerPosition=vue.ref(""),marker=vue.ref(),createIconStyle=t=>new Style({image:new Icon({src:CDN_URL+"map/poi-marker-default.png",anchor:[.5,1]}),text:new Text({text:t,offsetY:-90,font:"12px",fill:new Fill({color:"#000"}),stroke:new Stroke({color:"#fff",width:2}),backgroundFill:new Fill({color:"#fff"}),backgroundStroke:new Stroke({color:"#000",width:1}),padding:[2,2,2,2]})}),renderMarker=(t,e=!0,n=!0)=>{var V;if(!mapInstance$8.value||!t||t.split(",").length!==2)return;const[r,i]=t.split(",").map(Number);marker.value=new Feature({geometry:new Point(fromLonLat([r,i]))});const g=n?`${r}, ${i}`:"";(V=marker.value)==null||V.setStyle(createIconStyle(g));const y=new VectorSource({features:[marker.value]}),k=new VectorLayer({source:y}),L=mapInstance$8.value.getView();if(mapInstance$8.value.addLayer(k),e){const z=new Translate({layers:[k]});z.on("translating",function(j){var ie;const oe=j.features.item(0).getGeometry().getCoordinates(),re=toLonLat(oe);markerPosition.value=`${re[0].toFixed(6)}, ${re[1].toFixed(6)}`,(ie=marker.value)==null||ie.setStyle(createIconStyle(markerPosition.value))}),mapInstance$8.value.addInteraction(z)}const $=new Point([r,i]);L.setCenter(transform($.getCoordinates(),projection.data,projection.mercator)),L.setZoom(mapZoom.findShip)},setMarkerPosition=t=>{var i,g;if(!mapInstance$8.value)return;const e=mapInstance$8.value.getView(),n=t.split(",").map(Number);(g=(i=marker.value)==null?void 0:i.getGeometry())==null||g.setCoordinates(fromLonLat([n[0],n[1]]));const r=new Point([n[0],n[1]]);e.setCenter(transform(r.getCoordinates(),projection.data,projection.mercator)),e.setZoom(mapZoom.markerPosition)},CDN_URL="https://static.zhihaoscm.cn/",tiandituKey="a6e8f78974f2581f2ca00485b40c948f",zhongkeKey="15c81cc0a191a232e0a0ca1a51c3ca81",baseMap={tiandituTile:`https://t0.tianditu.gov.cn/vec_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=vec&TILEMATRIXSET=w&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=${tiandituKey}`,tiandituTileMark:`https://t0.tianditu.gov.cn/cva_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=cva&TILEMATRIXSET=w&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=${tiandituKey}`,tiandituImgTile:`https://t0.tianditu.gov.cn/img_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=img&TILEMATRIXSET=w&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=${tiandituKey}`,tiandituImgTileMark:`https://t0.tianditu.gov.cn/cia_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=cia&TILEMATRIXSET=w&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=${tiandituKey}`,greenTile:`${CDN_URL}/map/tile/{z}/{x}/{y}.png`},mapZoom={default:6,min:3,max:18,findShipMin:10,findShip:13,findTruck:14,shipGreenDotMax:11,truckDefault:14,truckStatistics:8,shipModelMin:13,shipModelMax:18,markerPosition:14},renderShipsLimit=200,mapDefaultCenter=[114.84,30.52],projection={data:"EPSG:4326",mercator:"EPSG:3857"},LOG_DATE_FORMAT="YYYY-MM-DD HH:mm:ss",DEFAULT_VALUE="--";vue.ref();const shipsLayer=vue.ref(),largeAmountShipsLayer=vue.ref(),selectShipsLayer=vue.ref(),allShips=vue.ref([]),selectSingleShipData=vue.ref();vue.ref();const trucksLayer=vue.ref(),shipTrackLineFeatures=vue.ref([]),trackLineVectorSource=vue.ref(),shipTrackVectorLayer=vue.ref();vue.ref(),vue.ref();const shipLabels=vue.ref([]),trackLabels=vue.ref([]),showTrackLayer=vue.ref(!1),allTracks=vue.ref([]),currentTrackId=vue.ref(""),showTrackAnimatMarker=vue.ref(!1),hiddenOrther=vue.ref(!1);function getIconFont(unicode=""){return unicode.indexOf("&")!==-1&&(unicode=unicode.replace("&","&")),unicode.indexOf("&")!==-1&&(unicode=unicode.replace("&","&")),eval('("'+unicode.replace("&#x","\\u").replace(";","")+'")')}const multiplyPixelRatio=t=>{const e=window.devicePixelRatio||1;return t.map(n=>n.map(r=>r*e))},adjustBounds=(t,e)=>e.length===2?[t[0]-e[0],t[1]-e[1],t[2]+e[0],t[3]+e[1]]:[t[0]+e[0],t[1]+e[1],t[2]+e[2],t[3]+e[3]],isOverlapping=(t,e)=>t[0]<=e[2]&&t[2]>=e[0]&&t[1]<=e[3]&&t[3]>=e[1],getIconStyle=t=>new Style({text:new Text({font:"Normal 14px map-iconfont",text:getIconFont(t),fill:new Fill({color:"#fff"}),offsetY:-14}),zIndex:100}),getRotation=(t,e,n)=>{function r(z){return 180*(z%(2*Math.PI))/Math.PI}function i(z){return z%360*Math.PI/180}function g(z){if(!z)throw new Error("Coordinate is required");if(!Array.isArray(z)){if(z.type==="Feature"&&z.geometry!==null&&z.geometry.type==="Point")return z.geometry.coordinates;if(z.type==="Point")return z.coordinates}if(Array.isArray(z)&&z.length>=2&&!Array.isArray(z[0])&&!Array.isArray(z[1]))return z;throw new Error("Coordinate must be GeoJSON Point or an Array of numbers")}function y(z,j,oe={}){if(oe.final)return function(Ce,_e){return(y(_e,Ce)+180)%360}(z,j);const re=g(z),ie=g(j),ae=i(re[0]),le=i(ie[0]),de=i(re[1]),pe=i(ie[1]),ue=Math.sin(le-ae)*Math.cos(pe),he=Math.cos(de)*Math.sin(pe)-Math.sin(de)*Math.cos(pe)*Math.cos(le-ae);return r(Math.atan2(ue,he))}function k(z){return!isNaN(z)&&z!==null&&!Array.isArray(z)}function L(z,j={},oe={}){return z||console.log("Coordinates are required"),Array.isArray(z)||console.log("Coordinates must be an Array"),z.length<2&&console.log("Coordinates must be at least 2 numbers long"),(!k(z[0])||!k(z[1]))&&console.log("Coordinates must contain numbers"),$({type:"Point",coordinates:z},j,oe)}function $(z,j={},oe={}){const re={type:"Feature"};return oe.id!==void 0&&(re.id=oe.id),oe.bbox&&(re.bbox=oe.bbox),re.properties=j||{},re.geometry=z,re}const V=y(L(t),L(e),n);return V<0?360+V:V},triangleModel=multiplyPixelRatio([[0,-8],[5,8],[-5,8]]),shipShapeModel=multiplyPixelRatio([[0,-4.545],[-.56,-3.909],[-1,-2.727],[-1,3.636],[-.8,4.545],[.8,4.545],[1,3.636],[1,-2.727],[.56,-3.909],[0,-4.545]]),shipDirectPath={left:{0:[[0,0],[0,-8],[-4,-8]],1:[[0,0],[0,-16],[-6,-16]],2:[[0,0],[0,-24],[-8,-24]]},right:{0:[[0,0],[0,-8],[-4,-8]],1:[[0,0],[0,-16],[-6,-16]],2:[[0,0],[0,-24],[-8,-24]]},front:{0:[[0,0],[0,-8]],1:[[0,0],[0,-16]],2:[[0,0],[0,-24]]}},setBlankStyle=()=>new Style({image:new CircleStyle({radius:0})}),mapInstance$7=vue.ref(),renderShipStyleSetInstance=t=>mapInstance$7.value=t,speedCondition=[[1,10],[10,20],[20,1/0]],drawShipModelByZoom={14:[200,30],15:[115,15],16:[55,8],17:[25,5],18:[1,1]},setShipStyle=(t,e=!1)=>new Style({renderer:(n,r)=>{n=n;const i=r.context,g=r.feature.get("data");if(!g)return;r.feature.get("index")===0&&(shipLabels.value=[]);try{const k=drawShipBody(i,g,n,e);k&&(drawHeading(i,g,k,e),g.selected=t,t&&setTimeout(()=>{drawSelectBounds(i,k)},50)),drawShipLabel(i,g,n)}catch{return!1}}}),drawShipBody=(t,e,n,r)=>{if(!mapInstance$7.value)return;const i=Math.round(Number(mapInstance$7.value.getView().getZoom()));if(!i)return;let g=[];const[y,k]=drawShipModelByZoom[i]||[0,0],[L,$]=n;if(i<=mapZoom.shipModelMax&&i>mapZoom.shipModelMin&&e.length>=y&&e.breadth>=k)g=rotateShapeModel(drawCurrentShipShapeModel(e,i),e.angle).map(z=>{const[j,oe]=z;return[L+j,$+oe]});else{const V=rotateShapeModel(triangleModel,e.angle);n.length===2&&(g=V.map(z=>{const[j,oe]=z;return[L+j,$+oe]}))}if(!(g.length>2))return!1;if(e!=null&&e.length){const V=g.length===3?30:e.length*.4;t.beginPath(),t.arc(n[0],n[1],V,0,2*Math.PI),t.fillStyle="rgba(255, 255, 255, 0.001)",t.fill()}t.save(),t.beginPath(),t.moveTo(g[0][0],g[0][1]);for(let V=1;V<g.length;V++)t.lineTo(g[V][0],g[V][1]);return t.closePath(),t.strokeStyle=r?"#ff0000":"#000",t.lineWidth=r?2:1,t.stroke(),t.fillStyle=e.fill,t.fill(),t.restore(),g},drawHeading=(t,e,n,r)=>{const[i,g]=n[0],y=getShipDirectPath(e);if(y){const k=y.map(function(L){const[$,V]=L;return[$+i,V+g]});if(t.save(),t.beginPath(),e.angle>0){t.translate(i,g);const L=e.angle*Math.PI/180;t.rotate(L),t.translate(-i,-g)}t.moveTo(i,g);for(let L=1;L<k.length;L++){const[$,V]=k[L];t.lineTo($,V)}t.strokeStyle=r?"#ff0000":"#000",t.lineWidth=r?2:1,t.stroke(),t.restore()}},drawSelectBounds=(t,e)=>{let[n,r,i,g]=getPixelFromCoordinate(e);const y=4;n-=y,r-=y,i+=y,g+=y,t.save(),t.strokeStyle="#ff0000",t.lineWidth=4;const k=8;t.beginPath(),t.moveTo(n+k,g),t.lineTo(n,g),t.lineTo(n,g-k),t.moveTo(n,r+k),t.lineTo(n,r),t.lineTo(n+k,r),t.moveTo(i-k,r),t.lineTo(i,r),t.lineTo(i,r+k),t.moveTo(i,g-k),t.lineTo(i,g),t.lineTo(i-k,g),t.stroke(),t.restore()},drawShipLabel=(t,e,n)=>{if(!e.selected&&shipLabels.value.find(z=>z.name===e.name))return;const[r,i]=n,g=r,y=i,k=e.name;let L;e.leftIconColor&&(L={color:e.leftIconColor,icon:""});const $=getShipCustomIcon(e),V={id:e.id,center:[g,y],text:k,fill:e.fill,color:"#fff",textColor:"#000",bgColor:"#fff",leftIcon:L,rightIcons:$,selected:e.selected,blinkColors:e.blinkColors,type:"ShipName"};drawLabel(t,V,shipLabels.value)},drawCurrentShipShapeModel=(t,e)=>{let n=0;e<=14?n=.058:e===15?n=.12:e===16?n=.22:e===17?n=.435:e===18&&(n=.857);const r=t.length/4*n,i=t.breadth*n;let g=cloneDeep(shipShapeModel);return g=g.map(([y,k])=>[y*i,k*r]),g},getShipDirectPath=t=>{const{speed:e,hdg:n,cog:r}=t;let i="",g=null;if(e&&e>1&&(n!==null&&n!=511&&r!==null?r-n>=3?i="left":r-n<=-3?i="right":i="front":i="front",i&&e))for(let y=0;y<speedCondition.length;y++){const k=speedCondition[y];if(e>=k[0]&&e<k[1]){g=shipDirectPath[i][y];break}}return g},getShipCustomIcon=t=>{const e=[];return t.existDevice&&e.push(""),t.existMobile&&e.push(""),t.existWaterGauge&&e.push(""),e||[]};class FeatureFormat{constructor(){this.dataProjection=void 0,this.defaultFeatureProjection=void 0,this.featureClass=Feature,this.supportedMediaTypes=null}getReadOptions(e,n){if(n){let r=n.dataProjection?get$1(n.dataProjection):this.readProjection(e);n.extent&&r&&r.getUnits()==="tile-pixels"&&(r=get$1(r),r.setWorldExtent(n.extent)),n={dataProjection:r,featureProjection:n.featureProjection}}return this.adaptOptions(n)}adaptOptions(e){return Object.assign({dataProjection:this.dataProjection,featureProjection:this.defaultFeatureProjection,featureClass:this.featureClass},e)}getType(){return abstract()}readFeature(e,n){return abstract()}readFeatures(e,n){return abstract()}readGeometry(e,n){return abstract()}readProjection(e){return abstract()}writeFeature(e,n){return abstract()}writeFeatures(e,n){return abstract()}writeGeometry(e,n){return abstract()}}function transformGeometryWithOptions(t,e,n){const r=n?get$1(n.featureProjection):null,i=n?get$1(n.dataProjection):null;let g=t;if(r&&i&&!equivalent(r,i)){e&&(g=t.clone());const y=e?r:i,k=e?i:r;y.getUnits()==="tile-pixels"?g.transform(y,k):g.applyTransform(getTransform(y,k))}if(e&&n&&n.decimals!==void 0){const y=Math.pow(10,n.decimals),k=function(L){for(let $=0,V=L.length;$<V;++$)L[$]=Math.round(L[$]*y)/y;return L};g===t&&(g=t.clone()),g.applyTransform(k)}return g}const GeometryConstructor={Point,LineString,Polygon,MultiPoint,MultiLineString,MultiPolygon};function orientFlatCoordinates(t,e,n){return Array.isArray(e[0])?(linearRingssAreOriented(t,0,e,n)||(t=t.slice(),orientLinearRingsArray(t,0,e,n)),t):(linearRingsAreOriented(t,0,e,n)||(t=t.slice(),orientLinearRings(t,0,e,n)),t)}function createRenderFeature(t,e){var g;const n=t.geometry;if(!n)return[];if(Array.isArray(n))return n.map(y=>createRenderFeature({...t,geometry:y})).flat();const r=n.type==="MultiPolygon"?"Polygon":n.type;if(r==="GeometryCollection"||r==="Circle")throw new Error("Unsupported geometry type: "+r);const i=n.layout.length;return transformGeometryWithOptions(new RenderFeature(r,r==="Polygon"?orientFlatCoordinates(n.flatCoordinates,n.ends,i):n.flatCoordinates,(g=n.ends)==null?void 0:g.flat(),i,t.properties||{},t.id).enableSimplifyTransformed(),!1,e)}function createGeometry(t,e){if(!t)return null;if(Array.isArray(t)){const r=t.map(i=>createGeometry(i,e));return new GeometryCollection(r)}const n=GeometryConstructor[t.type];return transformGeometryWithOptions(new n(t.flatCoordinates,t.layout,t.ends),!1,e)}class JSONFeature extends FeatureFormat{constructor(){super()}getType(){return"json"}readFeature(e,n){return this.readFeatureFromObject(getObject(e),this.getReadOptions(e,n))}readFeatures(e,n){return this.readFeaturesFromObject(getObject(e),this.getReadOptions(e,n))}readFeatureFromObject(e,n){return abstract()}readFeaturesFromObject(e,n){return abstract()}readGeometry(e,n){return this.readGeometryFromObject(getObject(e),this.getReadOptions(e,n))}readGeometryFromObject(e,n){return abstract()}readProjection(e){return this.readProjectionFromObject(getObject(e))}readProjectionFromObject(e){return abstract()}writeFeature(e,n){return JSON.stringify(this.writeFeatureObject(e,n))}writeFeatureObject(e,n){return abstract()}writeFeatures(e,n){return JSON.stringify(this.writeFeaturesObject(e,n))}writeFeaturesObject(e,n){return abstract()}writeGeometry(e,n){return JSON.stringify(this.writeGeometryObject(e,n))}writeGeometryObject(e,n){return abstract()}}function getObject(t){if(typeof t=="string"){const e=JSON.parse(t);return e||null}return t!==null?t:null}class GeoJSON extends JSONFeature{constructor(e){e=e||{},super(),this.dataProjection=get$1(e.dataProjection?e.dataProjection:"EPSG:4326"),e.featureProjection&&(this.defaultFeatureProjection=get$1(e.featureProjection)),e.featureClass&&(this.featureClass=e.featureClass),this.geometryName_=e.geometryName,this.extractGeometryName_=e.extractGeometryName,this.supportedMediaTypes=["application/geo+json","application/vnd.geo+json"]}readFeatureFromObject(e,n){let r=null;e.type==="Feature"?r=e:r={type:"Feature",geometry:e,properties:null};const i=readGeometryInternal(r.geometry);if(this.featureClass===RenderFeature)return createRenderFeature({geometry:i,id:r.id,properties:r.properties},n);const g=new Feature;return this.geometryName_?g.setGeometryName(this.geometryName_):this.extractGeometryName_&&r.geometry_name&&g.setGeometryName(r.geometry_name),g.setGeometry(createGeometry(i,n)),"id"in r&&g.setId(r.id),r.properties&&g.setProperties(r.properties,!0),g}readFeaturesFromObject(e,n){const r=e;let i=null;if(r.type==="FeatureCollection"){const g=e;i=[];const y=g.features;for(let k=0,L=y.length;k<L;++k){const $=this.readFeatureFromObject(y[k],n);$&&i.push($)}}else i=[this.readFeatureFromObject(e,n)];return i.flat()}readGeometryFromObject(e,n){return readGeometry(e,n)}readProjectionFromObject(e){const n=e.crs;let r;if(n)if(n.type=="name")r=get$1(n.properties.name);else if(n.type==="EPSG")r=get$1("EPSG:"+n.properties.code);else throw new Error("Unknown SRS type");else r=this.dataProjection;return r}writeFeatureObject(e,n){n=this.adaptOptions(n);const r={type:"Feature",geometry:null,properties:null},i=e.getId();if(i!==void 0&&(r.id=i),!e.hasProperties())return r;const g=e.getProperties(),y=e.getGeometry();return y&&(r.geometry=writeGeometry(y,n),delete g[e.getGeometryName()]),isEmpty$1(g)||(r.properties=g),r}writeFeaturesObject(e,n){n=this.adaptOptions(n);const r=[];for(let i=0,g=e.length;i<g;++i)r.push(this.writeFeatureObject(e[i],n));return{type:"FeatureCollection",features:r}}writeGeometryObject(e,n){return writeGeometry(e,this.adaptOptions(n))}}function readGeometryInternal(t,e){if(!t)return null;let n;switch(t.type){case"Point":{n=readPointGeometry(t);break}case"LineString":{n=readLineStringGeometry(t);break}case"Polygon":{n=readPolygonGeometry(t);break}case"MultiPoint":{n=readMultiPointGeometry(t);break}case"MultiLineString":{n=readMultiLineStringGeometry(t);break}case"MultiPolygon":{n=readMultiPolygonGeometry(t);break}case"GeometryCollection":{n=readGeometryCollectionGeometry(t);break}default:throw new Error("Unsupported GeoJSON type: "+t.type)}return n}function readGeometry(t,e){const n=readGeometryInternal(t);return createGeometry(n,e)}function readGeometryCollectionGeometry(t,e){return t.geometries.map(function(r){return readGeometryInternal(r)})}function readPointGeometry(t){const e=t.coordinates;return{type:"Point",flatCoordinates:e,layout:getLayoutForStride(e.length)}}function readLineStringGeometry(t){var r;const e=t.coordinates,n=e.flat();return{type:"LineString",flatCoordinates:n,ends:[n.length],layout:getLayoutForStride(((r=e[0])==null?void 0:r.length)||2)}}function readMultiLineStringGeometry(t){var g,y;const e=t.coordinates,n=((y=(g=e[0])==null?void 0:g[0])==null?void 0:y.length)||2,r=[],i=deflateCoordinatesArray(r,0,e,n);return{type:"MultiLineString",flatCoordinates:r,ends:i,layout:getLayoutForStride(n)}}function readMultiPointGeometry(t){var n;const e=t.coordinates;return{type:"MultiPoint",flatCoordinates:e.flat(),layout:getLayoutForStride(((n=e[0])==null?void 0:n.length)||2)}}function readMultiPolygonGeometry(t){var g,y;const e=t.coordinates,n=[],r=((y=(g=e[0])==null?void 0:g[0])==null?void 0:y[0].length)||2,i=deflateMultiCoordinatesArray(n,0,e,r);return{type:"MultiPolygon",flatCoordinates:n,ends:i,layout:getLayoutForStride(r)}}function readPolygonGeometry(t){var g,y;const e=t.coordinates,n=[],r=(y=(g=e[0])==null?void 0:g[0])==null?void 0:y.length,i=deflateCoordinatesArray(n,0,e,r);return{type:"Polygon",flatCoordinates:n,ends:i,layout:getLayoutForStride(r)}}function writeGeometry(t,e){t=transformGeometryWithOptions(t,!0,e);const n=t.getType();let r;switch(n){case"Point":{r=writePointGeometry(t);break}case"LineString":{r=writeLineStringGeometry(t);break}case"Polygon":{r=writePolygonGeometry(t,e);break}case"MultiPoint":{r=writeMultiPointGeometry(t);break}case"MultiLineString":{r=writeMultiLineStringGeometry(t);break}case"MultiPolygon":{r=writeMultiPolygonGeometry(t,e);break}case"GeometryCollection":{r=writeGeometryCollectionGeometry(t,e);break}case"Circle":{r={type:"GeometryCollection",geometries:[]};break}default:throw new Error("Unsupported geometry type: "+n)}return r}function writeGeometryCollectionGeometry(t,e){return e=Object.assign({},e),delete e.featureProjection,{type:"GeometryCollection",geometries:t.getGeometriesArray().map(function(r){return writeGeometry(r,e)})}}function writeLineStringGeometry(t,e){return{type:"LineString",coordinates:t.getCoordinates()}}function writeMultiLineStringGeometry(t,e){return{type:"MultiLineString",coordinates:t.getCoordinates()}}function writeMultiPointGeometry(t,e){return{type:"MultiPoint",coordinates:t.getCoordinates()}}function writeMultiPolygonGeometry(t,e){let n;return e&&(n=e.rightHanded),{type:"MultiPolygon",coordinates:t.getCoordinates(n)}}function writePointGeometry(t,e){return{type:"Point",coordinates:t.getCoordinates()}}function writePolygonGeometry(t,e){let n;return e&&(n=e.rightHanded),{type:"Polygon",coordinates:t.getCoordinates(n)}}class TextFeature extends FeatureFormat{constructor(){super()}getType(){return"text"}readFeature(e,n){return this.readFeatureFromText(getText(e),this.adaptOptions(n))}readFeatureFromText(e,n){return abstract()}readFeatures(e,n){return this.readFeaturesFromText(getText(e),this.adaptOptions(n))}readFeaturesFromText(e,n){return abstract()}readGeometry(e,n){return this.readGeometryFromText(getText(e),this.adaptOptions(n))}readGeometryFromText(e,n){return abstract()}readProjection(e){return this.readProjectionFromText(getText(e))}readProjectionFromText(e){return this.dataProjection}writeFeature(e,n){return this.writeFeatureText(e,this.adaptOptions(n))}writeFeatureText(e,n){return abstract()}writeFeatures(e,n){return this.writeFeaturesText(e,this.adaptOptions(n))}writeFeaturesText(e,n){return abstract()}writeGeometry(e,n){return this.writeGeometryText(e,this.adaptOptions(n))}writeGeometryText(e,n){return abstract()}}function getText(t){return typeof t=="string"?t:""}function flipXY(t,e,n,r,i,g){i!==void 0?(i=i,g=g!==void 0?g:0):(i=[],g=0);let y=e;for(;y<n;){const k=t[y++];i[g++]=t[y++],i[g++]=k;for(let L=2;L<r;++L)i[g++]=t[y++]}return i.length=g,i}class Polyline extends TextFeature{constructor(e){super(),e=e||{},this.dataProjection=get$1("EPSG:4326"),this.factor_=e.factor?e.factor:1e5,this.geometryLayout_=e.geometryLayout?e.geometryLayout:"XY"}readFeatureFromText(e,n){const r=this.readGeometryFromText(e,n);return new Feature(r)}readFeaturesFromText(e,n){return[this.readFeatureFromText(e,n)]}readGeometryFromText(e,n){const r=getStrideForLayout(this.geometryLayout_),i=decodeDeltas(e,r,this.factor_);flipXY(i,0,i.length,r,i);const g=inflateCoordinates(i,0,i.length,r),y=new LineString(g,this.geometryLayout_);return transformGeometryWithOptions(y,!1,this.adaptOptions(n))}writeFeatureText(e,n){const r=e.getGeometry();if(r)return this.writeGeometryText(r,n);throw new Error("Expected `feature` to have a geometry")}writeFeaturesText(e,n){return this.writeFeatureText(e[0],n)}writeGeometryText(e,n){e=transformGeometryWithOptions(e,!0,this.adaptOptions(n));const r=e.getFlatCoordinates(),i=e.getStride();return flipXY(r,0,r.length,i,r),encodeDeltas(r,i,this.factor_)}}function encodeDeltas(t,e,n){n=n||1e5;let r;const i=new Array(e);for(r=0;r<e;++r)i[r]=0;for(let g=0,y=t.length;g<y;)for(r=0;r<e;++r,++g){const k=t[g],L=k-i[r];i[r]=k,t[g]=L}return encodeFloats(t,n)}function decodeDeltas(t,e,n){n=n||1e5;let r;const i=new Array(e);for(r=0;r<e;++r)i[r]=0;const g=decodeFloats(t,n);for(let y=0,k=g.length;y<k;)for(r=0;r<e;++r,++y)i[r]+=g[y],g[y]=i[r];return g}function encodeFloats(t,e){e=e||1e5;for(let n=0,r=t.length;n<r;++n)t[n]=Math.round(t[n]*e);return encodeSignedIntegers(t)}function decodeFloats(t,e){e=e||1e5;const n=decodeSignedIntegers(t);for(let r=0,i=n.length;r<i;++r)n[r]/=e;return n}function encodeSignedIntegers(t){for(let e=0,n=t.length;e<n;++e){const r=t[e];t[e]=r<0?~(r<<1):r<<1}return encodeUnsignedIntegers(t)}function decodeSignedIntegers(t){const e=decodeUnsignedIntegers(t);for(let n=0,r=e.length;n<r;++n){const i=e[n];e[n]=i&1?~(i>>1):i>>1}return e}function encodeUnsignedIntegers(t){let e="";for(let n=0,r=t.length;n<r;++n)e+=encodeUnsignedInteger(t[n]);return e}function decodeUnsignedIntegers(t){const e=[];let n=0,r=0;for(let i=0,g=t.length;i<g;++i){const y=t.charCodeAt(i)-63;n|=(y&31)<<r,y<32?(e.push(n),n=0,r=0):r+=5}return e}function encodeUnsignedInteger(t){let e,n="";for(;t>=32;)e=(32|t&31)+63,n+=String.fromCharCode(e),t>>=5;return e=t+63,n+=String.fromCharCode(e),n}const mapInstance$6=vue.ref(),renderShipSetInstance=t=>mapInstance$6.value=t;let shipsMarkerList=[],shipsVectorSource,largeAmountShipsSource;const selectedShipData=vue.ref(null),selectedShips=vue.ref([]);let selectShipsVectorSource;const renderShips=t=>{var n,r,i,g;if(!mapInstance$6.value||showTrackLayer.value)return;const e=Math.round(Number(mapInstance$6.value.getView().getZoom()));if(selectedShipData.value&&vue.nextTick(()=>{selectSingleShipMarker(selectedShipData.value)}).then(y=>{}),!(!e||e<mapZoom.shipGreenDotMax)&&(allShips.value=[...t,...selectedShips.value],!hiddenOrther.value))return e>=mapZoom.shipGreenDotMax&&e<mapZoom.shipModelMin?((n=shipsLayer.value)==null||n.setVisible(!1),(r=largeAmountShipsLayer.value)==null||r.setVisible(!0),renderLargeAmountShips(allShips.value)):((i=largeAmountShipsLayer.value)==null||i.setVisible(!1),(g=shipsLayer.value)==null||g.setVisible(!0),renderShipsMarker(allShips.value))},renderLargeAmountShips=t=>{if(!mapInstance$6.value)return;const e=t.map(n=>({type:"Feature",geometry:{type:"Point",coordinates:[n.lon,n.lat]},properties:n}));return largeAmountShipsSource==null||largeAmountShipsSource.clear(),largeAmountShipsSource=new VectorSource({features:new GeoJSON().readFeatures({type:"FeatureCollection",features:e},{featureProjection:projection.mercator})}),largeAmountShipsLayer.value=new WebGLPointsLayer({source:largeAmountShipsSource,style:{"shape-points":3,"shape-radius":9,"shape-fill-color":["case",["==",["get","fill"],"#D9001C"],"#D9001C",["==",["get","fill"],"#04C900"],"#04C900","#04C900"],"shape-rotate-with-view":!1,"shape-rotation":["+",["get","cog"],180],"shape-scale":[.8,1.2],"shape-stroke-color":"#000000","shape-stroke-width":.5}}),mapInstance$6.value.addLayer(largeAmountShipsLayer.value),largeAmountShipsLayer.value},renderShipsMarker=t=>{var n;if(!mapInstance$6.value)return;deleteAllShipMarkers();let e=convertShipMapData(t);if(e=customFilterShips(e),!!(e!=null&&e.length))return e.forEach((r,i)=>{const g=[r.lon,r.lat],y=new Feature({geometry:new Point(fromLonLat(g))}),k=1;y.set("clickGeometry",new Circle(fromLonLat(g),k)),y.set("data",r),y.set("index",i),y.setStyle(setShipStyle(!1)),shipsMarkerList.push({ship:r,lonlat:g,feature:y})}),shipsVectorSource=new VectorSource({features:shipsMarkerList.map(r=>r.feature)}),shipsLayer.value=new VectorLayer({source:shipsVectorSource,zIndex:100}),(n=mapInstance$6.value)==null||n.addLayer(shipsLayer.value),shipsLayer.value},onShipsMarkerHover=()=>{var r;let t=null,e=0;const n=100;(r=mapInstance$6.value)==null||r.on("pointermove",function(i){var L,$;const g=Date.now();if(g-e<n)return;e=g;const y=(L=mapInstance$6.value)==null?void 0:L.forEachFeatureAtPixel(i.pixel,V=>V),k=($=mapInstance$6.value)==null?void 0:$.getTargetElement();if(k&&(k.style.cursor=y?"pointer":""),t!==y){if(t){const V=t.get("data");if(!(V!=null&&V.mmsi))return;t.setStyle(setShipStyle(!1,!1))}if(y){const V=y.get("data");if(!(V!=null&&V.mmsi))return;t=y,y.setStyle(setShipStyle(!1,!0))}else t=null}})},customFilterShips=t=>{let e=cloneDeep(t);return e=e.filter(n=>{var i;const r=getFilterItem(n).every(({btnShow:g,value:y})=>g?!!y:!0);return(switchBtnShow.value.camera||switchBtnShow.value.mobile||switchBtnShow.value.waterGauge)&&((i=selectedShipData.value)==null?void 0:i.id)===n.id&&clearSelectFeature(),r}),e},getFilterItem=t=>[{btnShow:switchBtnShow.value.camera,value:t==null?void 0:t.existDevice},{btnShow:switchBtnShow.value.mobile,value:t==null?void 0:t.existMobile},{btnShow:switchBtnShow.value.waterGauge,value:t==null?void 0:t.existWaterGauge}],deleteAllShipMarkers=()=>{shipsMarkerList.forEach(t=>{t.feature&&(shipsVectorSource==null||shipsVectorSource.removeFeature(t.feature))}),clearAllInterval(),shipsMarkerList=[]},selectSingleShipMarker=t=>{var g;if(!mapInstance$6.value)return;const e=cloneDeep(selectSingleShipData.value);selectSingleShipData.value=convertShipMapData(t);const n=[selectSingleShipData.value.lon,selectSingleShipData.value.lat],r=new Feature({geometry:new Point(fromLonLat(n))});r.set("data",selectSingleShipData.value),r.setStyle(setShipStyle(!0)),shipsMarkerList.push({ship:selectSingleShipData.value,lonlat:n,feature:r}),selectShipsVectorSource==null||selectShipsVectorSource.clear(),selectShipsVectorSource=new VectorSource({features:[r]}),selectShipsLayer.value=new VectorLayer({source:selectShipsVectorSource}),shipsVectorSource&&setVisibleFeatureById(shipsVectorSource,selectSingleShipData.value.id,!0);const i=(g=shipsLayer.value)==null?void 0:g.getSource();return i&&(e&&setVisibleFeatureById(i,e.id,!0),setVisibleFeatureById(i,selectSingleShipData.value.id,!1)),mapInstance$6.value.addLayer(selectShipsLayer.value),selectShipsLayer.value.setVisible(!0),selectShipsLayer.value},setVisibleFeatureById=(t,e,n)=>{t&&t.forEachFeature(r=>{const i=r.get("data");i&&i.id===e&&r.setStyle(n?setShipStyle(!1,i.id):setBlankStyle())})},findShip=(t,e,n=!0)=>{var i,g,y,k,L;if(!t||!mapInstance$6.value)return;const r=(y=(g=(i=shipsLayer.value)==null?void 0:i.getSource())==null?void 0:g.getFeatures())==null?void 0:y.find($=>{var V;return((V=$.get("data"))==null?void 0:V.id)===t});if(r)selectedShipData.value=r.get("data");else if(e)selectedShipData.value=e;else{console.error("找不到船舶");return}if(selectedShips.value.some($=>{var V;return $.id===((V=selectedShipData.value)==null?void 0:V.id)})||selectedShips.value.push(selectedShipData.value),n&&((k=selectedShipData.value)!=null&&k.lon)&&((L=selectedShipData.value)!=null&&L.lat)){const $=mapInstance$6.value.getView(),V=new Point([selectedShipData.value.lon,selectedShipData.value.lat]);$.setCenter(transform(V.getCoordinates(),projection.data,projection.mercator));const z=$.getZoom(),j=z<mapZoom.findShipMin?mapZoom.findShip:z;$.setZoom(j)}return setTimeout(()=>{e&&selectSingleShipMarker(e)},50),r},clearSelectFeature=()=>{var t;if(selectedShipData.value&&shipsVectorSource&&selectSingleShipData.value){setVisibleFeatureById(shipsVectorSource,selectSingleShipData.value.id,!1);const e=(t=shipsLayer.value)==null?void 0:t.getSource();e&&setVisibleFeatureById(e,selectSingleShipData.value.id,!0)}selectedShipData.value=null,mapInstance$6.value&&(selectShipsVectorSource==null||selectShipsVectorSource.clear(),selectShipsLayer.value=new VectorLayer({source:selectShipsVectorSource}),mapInstance$6.value.addLayer(selectShipsLayer.value),selectShipsLayer.value.setVisible(!1))},hiddenAllShips=()=>{var t,e;(t=shipsLayer.value)==null||t.setVisible(!1),(e=largeAmountShipsLayer.value)==null||e.setVisible(!1)},switchBtnShow=vue.ref({[SWITCH_BTN.Camera]:!1,[SWITCH_BTN.Mobile]:!1,[SWITCH_BTN.WaterGauge]:!1}),switchFilterItem=(t,e)=>{switchBtnShow.value[t]=e,renderShips(allShips.value)},rerenderShip=()=>{renderShips(allShips.value)},labelAlpha=.8,pixelRatio=window.devicePixelRatio||1,labelFont=`500 ${12*pixelRatio}px Arial`,labelOutSize=2*pixelRatio,labelHeight=10*pixelRatio,fillRectRadius=(t,e,n,r,i,g,y=4)=>{t.beginPath(),t.moveTo(e+y,n),t.arcTo(e+r,n,e+r,n+y,y),t.arcTo(e+r,n+i,e+r-y,n+i,y),t.arcTo(e,n+i,e,n+i-y,y),t.arcTo(e,n,e+y,n,y),t.closePath(),t.fillStyle=g,t.fill()},getPixelFromCoordinate=t=>{if(!t||t.length===0)throw new Error("Points array is empty or invalid.");let e=1/0,n=1/0,r=-1/0,i=-1/0;for(const[g,y]of t)g<e&&(e=g),y<n&&(n=y),g>r&&(r=g),y>i&&(i=y);return[e,n,r,i]},calculatePolygonCentroid=t=>{if(!Array.isArray(t)||t.length<3)throw new Error("A polygon must have at least 3 coordinates.");let e=0,n=0,r=0;const i=t.length;for(let k=0;k<i-1;k++){const[L,$]=t[k],[V,z]=t[k+1],j=L*z-V*$;r+=j,e+=(L+V)*j,n+=($+z)*j}if(r*=.5,r===0)throw new Error("多边形面积为零");const g=e/(6*r),y=n/(6*r);return[g,y]},rotateShapeModel=(t,e)=>{const[n,r]=calculatePolygonCentroid(t),i=e*Math.PI/180,g=Math.cos(i),y=Math.sin(i);return t.map(([k,L])=>{const $=k-n,V=L-r,z=$*g-V*y+n,j=$*y+V*g+r;return[z,j]})},getTopLeftPoint=t=>[t[0],t[3]],getBottomLeftPoint=t=>[t[2],t[3]],getBottomRightPoint=t=>[t[2],t[1]],getTopRighttPoint=t=>[t[0],t[1]];function calculateBounds(t,e,n,r,i){let g,y,k,L;const $=t[0],V=t[1];switch(e){case 0:g=$+i,y=g+n,L=V-i,k=L-r;break;case 1:g=$+i,y=g+n,L=V+r/2,k=L-r;break;case 2:g=$+i,y=g+n,L=V+i+r,k=L-r;break;case 3:g=$-n/2,y=g+n,L=V+i+r,k=L-r;break;case 4:y=$,g=y-n,L=V+i+r,k=L-r;break;case 5:y=$-i,g=y-n,L=V+r/2,k=L-r;break;case 6:y=$,g=y-n,L=V-i,k=L-r;break;case 7:g=$-n/2,y=g+n,L=V-i,k=L-r}if(!(!g||!k||!y||!L))return[Math.min(g,y),Math.min(k,L),Math.max(g,y),Math.max(k,L)+1]}function calculateAnchorPoint(t,e,n=70,r=20,i=20){const g=[0,0];switch(e){case 0:g[0]=t[0]+i,g[1]=t[1]-i-r/2;break;case 1:g[0]=t[0]+i,g[1]=t[1];break;case 2:g[0]=t[0]+i,g[1]=t[1]+i+r/2;break;case 3:g[0]=t[0],g[1]=t[1]+i+r/4;break;case 4:g[0]=Math.max(t[0]-i,t[0]-n/2),g[1]=t[1]+i+r/4;break;case 5:g[0]=t[0]-i,g[1]=t[1];break;case 6:g[0]=Math.max(t[0]-i,t[0]-n/2),g[1]=t[1]-i-r/4;break;case 7:g[0]=t[0],g[1]=t[1]-i-r/4}return g}function drawLabelBody(t,e,n){if(!t)return;const{font:r,labelOutSize:i=2,labelHeight:g,center:y,text:k,leftIcon:L,shipColor:$,lineLength:V=20,selected:z}=n;t.save(),r&&(t.font=r);let j=t.measureText(k).width+4*i;(L||$)&&(j+=g+6*i),t.restore();let oe,re=20,ie=-1,ae=g+3*i;if(V)for(let le=0;le<8;le++){oe=calculateBounds(y,le,j,ae,V);let de=!1;for(let pe=0;pe<e.length;++pe){let ue=e[pe].bounds,he=[ue[0]-re,ue[1]-re,ue[2]+re,ue[3]+re];if(oe&&isOverlapping(oe,he)){de=!0;break}}if(!de){ie=le;break}}else ie=0,oe=calculateBounds(y,ie,j,ae,V);if(z&&ie===-1&&(ie=0),oe&&ie>-1){let le=getBottomLeftPoint(oe),de=getTopRighttPoint(oe);return{center:y,x:calculateAnchorPoint(y,ie,j,ae,V),l:de,r:le,bounds:oe,position:ie,name:k}}else return null}const drawText=(t,e)=>{if(!t)return;const{center:n,text:r,textColor:i,leftIcon:g,rightIcons:y,font:k}=e;t.save(),t.setTransform(1,0,0,1,0,0);let[L,$]=n;if(g){t.font=`${18*pixelRatio}px map-iconfont`;let V=getIconFont(g.icon);t.fillStyle=g.color,t.fillText(V,L+labelOutSize-3*pixelRatio,$+2.6*pixelRatio),L+=23*pixelRatio}if(y!=null&&y.length){t.font=`${12*pixelRatio}px map-iconfont`,t.fillStyle="#3370ff";const V=t.measureText(r).width+6*pixelRatio;y.forEach((z,j)=>{const oe=getIconFont(z),re=20*pixelRatio*j;t.fillText(oe,L+V+re,$)})}t.font=k||labelFont,t.fillStyle=i,t.fillText(r,L+2,$),t.restore()},drawPolygon=(t,e)=>{let{points:n,strokeColor:r,fillColor:i,shouldClosePath:g,translation:y,rotation:k,rotationCenter:L,scale:$,globalAlpha:V}=e;if(V||(V=1),n&&t){t.save(),t.beginPath(),k&&k!==0&&L==null&&t.rotate(k),y&&t.translate(y[0],y[1]),k&&(L!=null&&L.length)&&t.rotate(k),$&&t.scale($,$),t.moveTo(n[0][0],n[0][1]);for(let z=1;z<n.length;z++)t.lineTo(n[z][0],n[z][1]);g&&t.closePath(),r&&(t.strokeStyle=r,t.stroke()),i&&g&&(V&&(t.globalAlpha=V),t.fillStyle=i,t.fill()),t.restore()}},intervalIds={},drawLabel=(t,e,n)=>{var z,j,oe,re,ie,ae,le;let{center:r,text:i,color:g,textColor:y,bgColor:k,leftIcon:L,rightIcons:$,type:V}=e;if(r&&i){const de={font:labelFont,labelOutSize,labelHeight,center:r,text:i,leftIcon:L,selected:e.selected};(z=e.blinkColors)!=null&&z.length&&e.fill&&(k=e.fill,y=getForegroundColor(e.fill));const pe=drawLabelBody(t,n,de);if(pe){const{x:ue,bounds:he,l:Ce}=pe,_e=[getTopLeftPoint(he),getBottomLeftPoint(he),getBottomRightPoint(he),getTopRighttPoint(he)];n.find(kt=>kt.name===i)||n.push(pe),drawPolygon(t,{points:[r,ue],strokeColor:g,fillColor:"#000",shouldClosePath:!0,translation:void 0,rotation:void 0,rotationCenter:void 0,scale:void 0,globalAlpha:labelAlpha}),$!=null&&$.length&&$.forEach((kt,Dt)=>{_e[1][0]+=34+Dt*2,_e[2][0]+=34+Dt*2});const Ie={points:_e,strokeColor:g,fillColor:k,shouldClosePath:!0},[Oe,$e]=Ce,qe={center:[Oe,$e+labelOutSize+labelHeight+1],text:i,textColor:y,leftIcon:L,rightIcons:$,blinkColors:e.blinkColors};if(drawPolygon(t,Ie),drawText(t,qe),e!=null&&e.blinkColors&&e.blinkColors.length>0){let kt=Date.now(),Dt=0;const Ve=e.blinkColors;!!!((re=(oe=(j=selectShipsLayer.value)==null?void 0:j.getSource())==null?void 0:oe.getFeatures())!=null&&re.find(ze=>{var Ue;return((Ue=ze.get("data"))==null?void 0:Ue.id)===e.id})||(le=(ae=(ie=shipsLayer.value)==null?void 0:ie.getSource())==null?void 0:ae.getFeatures())!=null&&le.find(ze=>{var Ue;return((Ue=ze.get("data"))==null?void 0:Ue.id)===e.id}))||hiddenOrther.value?(clearInterval(intervalIds[e.id]),deleteLabelFromArray(n,i)):(intervalIds[e.id]&&clearInterval(intervalIds[e.id]),intervalIds[e.id]=window.setInterval(()=>{var Et,Pt,hn;const ze=Date.now();ze-kt>=500&&(Dt=(Dt+1)%Ve.length,kt=ze,Ie.fillColor=Ve[Dt],drawPolygon(t,Ie),qe.textColor=getForegroundColor(Ie.fillColor),drawText(t,qe));const Ue=shipsMarkerList==null?void 0:shipsMarkerList.some(Lt=>{var jt;return((jt=Lt.ship)==null?void 0:jt.id)===e.id}),Ne=(hn=(Pt=(Et=shipsLayer.value)==null?void 0:Et.getSource())==null?void 0:Pt.getFeatures())==null?void 0:hn.some(Lt=>{const jt=Lt.get("data");return(jt==null?void 0:jt.id)===e.id});!Ue&&!Ne&&(clearInterval(intervalIds[e.id]),deleteLabelFromArray(n,i))},10))}else shipLabels.value.find(Dt=>Dt.name===i)&&(clearInterval(intervalIds[e.id]),drawPolygon(t,Ie),drawText(t,qe))}}return null},clearAllInterval=()=>{Object.keys(intervalIds).forEach(t=>{clearInterval(t)})},deleteLabelFromArray=(t,e)=>{const n=t.findIndex(r=>r.name===e);n!==-1&&t.splice(n,1)},PI=Math.PI,a=6378245,ee=.006693421622965943;function transformLat(t,e){let n=-100+2*t+3*e+.2*e*e+.1*t*e+.2*Math.sqrt(Math.abs(t));return n+=(20*Math.sin(6*t*PI)+20*Math.sin(2*t*PI))*2/3,n+=(20*Math.sin(e*PI)+40*Math.sin(e/3*PI))*2/3,n+=(160*Math.sin(e/12*PI)+320*Math.sin(e*PI/30))*2/3,n}function transformLng(t,e){let n=300+t+2*e+.1*t*t+.1*t*e+.1*Math.sqrt(Math.abs(t));return n+=(20*Math.sin(6*t*PI)+20*Math.sin(2*t*PI))*2/3,n+=(20*Math.sin(t*PI)+40*Math.sin(t/3*PI))*2/3,n+=(150*Math.sin(t/12*PI)+300*Math.sin(t/30*PI))*2/3,n}function outOfChina(t,e){return!(t>73.66&&t<135.05&&e>3.86&&e<53.55)}function gcj02ToWgs84(t){const[e,n]=t.split(",").map(Number);if(outOfChina(e,n))return`${e.toFixed(6)}, ${n.toFixed(6)}`;{let r=transformLat(e-105,n-35),i=transformLng(e-105,n-35);const g=n/180*PI;let y=Math.sin(g);y=1-ee*y*y;const k=Math.sqrt(y);r=r*180/(a*(1-ee)/(y*k)*PI),i=i*180/(a/k*Math.cos(g)*PI);const L=n+r,$=e+i;return`${(e*2-$).toFixed(6)}, ${(n*2-L).toFixed(6)}`}}function calculateCirclePoints(t,e){const n=fromLonLat(t),r=e*1e3,i=[n[0]-r,n[1]-r,n[0]+r,n[1]+r],g=transformExtent(i,projection.mercator,projection.data);return{leftTopPoint:{lng:g[0],lat:g[3]},rightTopPoint:{lng:g[2],lat:g[3]},rightBottomPoint:{lng:g[2],lat:g[1]},leftBottomPoint:{lng:g[0],lat:g[1]}}}const equatorialCircumference=2003750834e-2;function lonLatToMercator(t){const e=t[0]*equatorialCircumference/180;let n=Math.log(Math.tan((90+t[1])*Math.PI/360))/(Math.PI/180);return n=n*equatorialCircumference/180,[e,n]}function mercatorToLonLat(t,e="lonlat"){const n={lon:0,lat:0},r=t[0]/equatorialCircumference*180;let i=t[1]/equatorialCircumference*180;return i=180/Math.PI*(2*Math.atan(Math.exp(i*Math.PI/180))-Math.PI/2),n.lon=r,n.lat=i,e==="lonlat"?n:[r,i]}function calculateBoundingBox(t){let e=1/0,n=-1/0,r=1/0,i=-1/0;t.forEach(ie=>{const[ae,le]=ie;e=Math.min(e,le),n=Math.max(n,le),r=Math.min(r,ae),i=Math.max(i,ae)});const g=i-r,y=n-e,k=Math.max(g,y),L=(r+i)/2,$=(e+n)/2,V=k/2,z=L-V,j=L+V,oe=$-V,re=$+V;return[j,oe,z,re]}const transformUtils={gcj02ToWgs84,calculateCirclePoints,lonLatToMercator,mercatorToLonLat,calculateBoundingBox},mapInstance$5=vue.ref(),renderTrackStyleSetInstance=t=>mapInstance$5.value=t,stopIcon="",stopColor="#E31818",slowIcon="",slowColor="#1890FF",dropletsIcon="",trackList$1=vue.ref([]);let animationFeature;const renderTrackLine=(t,e,n)=>{var g,y,k;const r=t[e];if(!r)return;allTracks.value[e]=r,trackList$1.value=[],trackList$1.value=r.map((L,$)=>(L.center=[L.lon,L.lat],L.centerPoint=transformUtils.lonLatToMercator(L.center),L.id=e,L.index=$,L.time=hooks(L.createdAt).format("YYYY-MM-DD HH:mm:ss"),L));const i=trackList$1.value.map(L=>L.centerPoint);if(i.length>=2){const L=new LineString(i),$=new Feature({geometry:L});$.setStyle(new Style({stroke:new Stroke({color:n,width:2})})),$.setId(e),$.set("type","line"),(y=(g=shipTrackVectorLayer.value)==null?void 0:g.getSource())==null||y.clear(),shipTrackLineFeatures.value=[];const V=shipTrackLineFeatures.value.findIndex(j=>j.getId()===e);V>=0?shipTrackLineFeatures.value[V]=$:shipTrackLineFeatures.value.push($);const z=createAnimatedIconFeature(n,i);trackLineVectorSource.value=new VectorSource({features:[...shipTrackLineFeatures.value]}),animationFeature=z,console.log(animationFeature),shipTrackVectorLayer.value=new VectorLayer({source:trackLineVectorSource.value,zIndex:102}),renderPoint(n),(k=mapInstance$5.value)==null||k.addLayer(shipTrackVectorLayer.value)}},handlePlay=(t,e)=>{const n=allTracks.value[String(t)];playAnimation(n.map(r=>[r.lon,r.lat]),e)},removeShipTrackLineFeatureByIndex=(t,e)=>{t>=0&&t<shipTrackLineFeatures.value.length&&(shipTrackLineFeatures.value.splice(t,1),delete allTracks.value[e]),trackLineVectorSource.value=new VectorSource({features:[...shipTrackLineFeatures.value]}),shipTrackVectorLayer.value&&shipTrackVectorLayer.value.setSource(trackLineVectorSource.value)},createAnimatedIconFeature=(t,e)=>{const n=new Feature({geometry:new Point(fromLonLat([e[0][0],e[0][1]]))}),r=new Style({text:new Text({font:"700 14px map-iconfont",text:getIconFont(""),fill:new Fill({color:t})})});return n.setStyle(r),n},geoMarkerStyle=new Style({text:new Text({font:"700 20px map-iconfont",text:getIconFont(""),fill:new Fill({color:"#ff0000"}),rotation:0})});let polyline,linePath,startMarker,position,geoMarker,vectorLayer;const trackAnimating=vue.ref(!1);let distance=0,lastTime=Date.now(),moveFeatureHandler=null;const moveFeature=(t,e)=>{var z,j,oe;const n=Number(50*e),r=((z=t.frameState)==null?void 0:z.time)??Date.now(),i=r-lastTime;if(distance=(distance+n*i/1e6)%2,lastTime=r,distance>=1){stopAnimation();return}const g=linePath.getCoordinateAt(distance>1?2-distance:distance),y=linePath.getCoordinateAt(distance>1?distance-.01:distance),k=linePath.getCoordinateAt(distance>1?2-distance:distance+.01),$=getRotation(transformUtils.mercatorToLonLat(y,"array"),transformUtils.mercatorToLonLat(k,"array"))*Math.PI/180;(j=geoMarkerStyle.getText())==null||j.setRotation($),position.setCoordinates(g);const V=getVectorContext(t);V.context_.save(),V.setStyle(geoMarkerStyle),V.drawGeometry(position),V.context_.restore(),(oe=mapInstance$5.value)==null||oe.render()},startAnimation=()=>{var t;trackAnimating.value=!0,showTrackAnimatMarker.value=!0,lastTime=Date.now(),distance=0,position=((t=startMarker.getGeometry())==null?void 0:t.clone())||new Point([0,0]),moveFeatureHandler&&(vectorLayer==null||vectorLayer.on("postrender",moveFeatureHandler)),geoMarker==null||geoMarker.setGeometry(void 0)},stopAnimation=()=>{var t;trackAnimating.value&&(trackAnimating.value=!1,geoMarker==null||geoMarker.setGeometry(void 0),moveFeatureHandler&&vectorLayer&&vectorLayer.un("postrender",moveFeatureHandler),vectorLayer&&((t=mapInstance$5.value)==null||t.removeLayer(vectorLayer)),vectorLayer=null,geoMarker=null)},playAnimation=(t,e)=>{var r;trackAnimating.value&&stopAnimation(),polyline=new Polyline({factor:1e6}).writeGeometry(new LineString(t)),linePath=new Polyline({factor:1e6}).readGeometry(polyline,{dataProjection:projection.data,featureProjection:projection.mercator}),startMarker=new Feature({type:"icon",geometry:new Point(linePath.getFirstCoordinate())});const n=startMarker.getGeometry();position=n?n.clone():new Point([0,0]),geoMarker=new Feature({type:"geoMarker",style:geoMarkerStyle,geometry:position}),vectorLayer=new VectorLayer({source:new VectorSource({features:[geoMarker]})}),(r=mapInstance$5.value)==null||r.addLayer(vectorLayer),moveFeatureHandler=i=>moveFeature(i,e),startAnimation()},renderPoint=t=>{if(!mapInstance$5.value)return;const e=trackList$1.value||[];if(!(e&&e.length>1))return[];const n={16:24,17:15,default:4},r=[],i=e.length;for(let k=0;k<i;k++){e[k].index=k;const L=mapInstance$5.value.getPixelFromCoordinate(e[k].centerPoint);if(L){let $=L.concat(L);$=adjustBounds($,[20,20]);const V=mapInstance$5.value.getView().getZoom();if(!V)return;if(V>15){const j=n[V]||n.default;$=adjustBounds($,[j,j])}let z=!0;if(e[k].state!=="0"){for(let j=0;j<r.length;j++)if(isOverlapping($,r[j].bounds)){z=!1;break}}z&&(e[k].bounds=$,r.push(e[k]))}}const g=getIconStyle(stopIcon),y=getIconStyle(slowIcon);r.forEach((k,L)=>{var z,j;const $=new Feature({geometry:new Point(k.centerPoint)});$.set("type","track_point"),$.set("data",k),$.setStyle([new Style({image:new CircleStyle({stroke:new Stroke({color:"rgba(0, 0, 0, 0.01)",width:20}),radius:3})}),new Style({image:new CircleStyle({fill:new Fill({color:t}),stroke:new Stroke({color:"#fff",width:2}),radius:3})})]),trackLineVectorSource.value.addFeature($);const V=new Feature({geometry:new Point(fromLonLat(k.center))});if(V.set("type","track_label"),V.set("track_label_index",L),V.setStyle(setTrackLabelStyle(k,t)),trackLineVectorSource.value.addFeature(V),typeof k=="object"&&k.hasOwnProperty("state")){const oe=new Feature({geometry:new Point(k.centerPoint)});oe.set("type","track_icon");const re=new Style({text:new Text({font:"Normal 22px map-iconfont",text:getIconFont(dropletsIcon),offsetY:-10}),zIndex:99}),ie=[];Number(k.state)===0?((z=re.getText())==null||z.setFill(new Fill({color:stopColor})),ie.push(g)):Number(k.state)===1&&((j=re.getText())==null||j.setFill(new Fill({color:slowColor})),ie.push(y)),ie.push(re),oe.setStyle(ie),trackLineVectorSource.value.addFeature(oe)}}),renderArrow(r,t),renderIconPoint()},renderArrow=(t,e)=>{const n=t.length;n||(t.push(trackList$1.value[0]),t.push(trackList$1.value[trackList$1.value.length-1]));for(let r=0;r<n-1;r++){let i;const g=t[r],y=(t[r+1].index+g.index)/2;if(y%2===0)i=trackList$1.value[y].centerPoint;else{const k=trackList$1.value[Math.floor(y)],L=trackList$1.value[Math.ceil(y)];if(k&&L){const[$,V]=k.centerPoint,[z,j]=L.centerPoint;i=[($+z)/2,(V+j)/2]}}if(i){const k=new Feature({geometry:new Point(i)});k.set("type","track_arrow"),k.setStyle(new Style({text:new Text({font:"700 14px map-iconfont",text:getIconFont(""),fill:new Fill({color:e}),rotation:getRotation(t[r].center,t[r+1].center)*(Math.PI/180)})})),trackLineVectorSource.value.addFeature(k)}}},renderIconPoint=()=>{const t="",e="#fcdc3f",n="#ff0000";(trackList$1.value.length<2?[trackList$1.value[0]]:[trackList$1.value[0],trackList$1.value[trackList$1.value.length-1]]).forEach(i=>{const g=new Feature({geometry:new Point(i.centerPoint)});g.set("type","track_begin"),g.set("data",i);const y=i.index===0&&trackList$1.value.length>=2?e:n;g.setStyle(new Style({text:new Text({font:"Normal 14px map-iconfont",text:getIconFont(t),fill:new Fill({color:y})}),zIndex:101})),trackLineVectorSource.value.addFeature(g)})},setTrackLabelStyle=(t,e)=>new Style({renderer:(n,r)=>{const i=r.context,k={id:t.id||"",center:n,text:t.time,color:e,textColor:"#000",bgColor:"rgba(255,255,255,.8)",selected:!0,type:"TrackTime"};drawLabel(i,k,trackLabels.value)}}),mapInstance$4=vue.ref(),renderCustomOverlaySetInstance=t=>mapInstance$4.value=t,drawCustomContent=(t,e,n,r="top-left",i=!1)=>{var V,z;if(!e||!mapInstance$4.value)return;document.querySelectorAll(".truck-custom-content").forEach(j=>{var oe;return(oe=j.parentNode)==null?void 0:oe.removeChild(j)});const g=document.createElement("div");g.innerHTML=n;const y=new Overlay({element:g,position:e,positioning:r,stopEvent:i});if(i){let j=!1,oe=[0,0],re=[0,0],ie=0,ae=0;g.addEventListener("mousedown",function(le){var pe;j=!0,ie=le.clientX,ae=le.clientY;const de=(pe=mapInstance$4.value)==null?void 0:pe.getCoordinateFromPixel([le.clientX-200,le.clientY-200]);de&&(oe=de),re=[le.clientX-g.getBoundingClientRect().left+160,le.clientY-g.getBoundingClientRect().top+84],le.preventDefault(),console.log(t,ie,ae)}),document.addEventListener("mousemove",function(le){var de;if(j){const pe=(de=mapInstance$4.value)==null?void 0:de.getCoordinateFromPixel([le.clientX-re[0],le.clientY-re[1]]),ue=pe[0]-oe[0],he=pe[1]-oe[1];y.setPosition([oe[0]+ue,oe[1]+he])}}),document.addEventListener("mouseup",function(){j=!1})}(V=mapInstance$4.value)==null||V.addOverlay(y);const k=g.querySelector(".close-button");k&&k.addEventListener("click",()=>{var j,oe;(j=mapInstance$4.value)==null||j.removeOverlay(y),(oe=g.parentNode)==null||oe.removeChild(g)});const L=JSON.parse(JSON.stringify(e)),$=(z=mapInstance$4.value)==null?void 0:z.getCoordinateFromPixel(L);return y.setPosition($),y},mapInstance$3=vue.ref(),renderTrackSetInstance=t=>mapInstance$3.value=t,showTracks=vue.ref([]),trackList=vue.ref([]);vue.ref(null);const trackId=vue.ref(""),cursor=vue.ref(0),renderTrack=(t,e,n,r,i="ship")=>{var V;if(console.log(i),vue.nextTick(()=>{hiddenAllShips()}).then(z=>{}),(e==null?void 0:e.length)<2){((V=showTracks.value)==null?void 0:V.findIndex(z=>z.id===t))<0&&showTracks.value.push({id:t,length:""});return}const g={};e.forEach(z=>{z.state?z.state=Number(z.state):delete z.state}),trackId.value=t,g[t]=e,trackList.value=e;const y=["#ff0000","#00ff00","#0079ff","#ffa500","#800080","#008080","#ffc0cb","#800000","#000080","#808000"],k=g[t].map(z=>transform([z.lon,z.lat],projection.data,projection.mercator)),L=new LineString(k),$=formatUtils.formatLength(L,r)||"--";vue.nextTick(()=>{var j,oe;const z=(j=showTracks.value)==null?void 0:j.findIndex(re=>re.id===t);z<0?showTracks.value.push({id:t,length:$}):showTracks.value[z].length=$,++cursor.value,cursor.value>y.length&&(cursor.value=0),renderTrackLine(g,t,n),vue.nextTick(()=>{resetTrackView(t)}).then(()=>{}),(oe=mapInstance$3.value)==null||oe.on("moveend",()=>{showTrackLayer.value&&(trackLabels.value=[],renderTrackLine(g,t,n))}),renderTrackPointPopup()}).then(()=>{})},renderTrackPointPopup=()=>{var e;const t=vue.ref(null);(e=mapInstance$3.value)==null||e.on("pointermove",n=>{var i,g,y,k;t.value&&((i=mapInstance$3.value)==null||i.removeOverlay(t.value));const r=(g=mapInstance$3.value)==null?void 0:g.forEachFeatureAtPixel(n.pixel,L=>L);if(r){const L=r.get("data");if(!(L!=null&&L.time))return;let $="";L!=null&&L.stayTime&&($=`
|
|
655
|
+
}`;const $=`u_texture${g}`;let V="1.";"fill-color"in t&&(V=e.getFillColorExpression()),e.setFillColorExpression(`${V} * sampleFillPattern(${$}, ${y}, ${L}, ${k}, pxOrigin, pxPos)`)}}function parseLiteralStyle(t,e){const n=newCompilationContext(),r={...newCompilationContext(),inFragmentShader:!0,variables:n.variables},i=new ShaderBuilder,g={};if("icon-src"in t?parseIconProperties(t,i,g,n,r):"shape-points"in t?parseShapeProperties(t,i,g,n,r):"circle-radius"in t&&parseCircleProperties(t,i,g,n,r),parseStrokeProperties(t,i,g,n,r),parseFillProperties(t,i,g,n,r),t.filter){const L=expressionToGlsl(r,t.filter,BooleanType);i.setFragmentDiscardExpression(`!${L}`)}for(const L in r.variables){const $=r.variables[L],V=uniformNameForVariable($.name);let z=getGlslTypeFromType($.type);$.type===ColorType&&(z="vec4"),i.addUniform(`${z} ${V}`),g[V]=()=>{const j=e[$.name];return typeof j=="number"?j:typeof j=="boolean"?j?1:0:$.type===ColorType?asArray(j||"#eee"):typeof j=="string"?getStringNumberEquivalent(j):j}}for(const L in r.properties){const $=r.properties[L];n.properties[L]||(n.properties[L]=$);let V=getGlslTypeFromType($.type),z=`a_prop_${$.name}`;$.type===ColorType&&(V="vec4",z=`unpackColor(${z})`,i.addVertexShaderFunction(UNPACK_COLOR_FN)),i.addVarying(`v_prop_${$.name}`,V,z)}for(const L in n.properties){const $=n.properties[L];i.addAttribute(`${getGlslTypeFromType($.type)} a_prop_${$.name}`)}for(const L in n.functions)i.addVertexShaderFunction(n.functions[L]);for(const L in r.functions)i.addFragmentShaderFunction(r.functions[L]);const y={};for(const L in n.properties){const $=n.properties[L],V=z=>{const j=z.get($.name);return $.type===ColorType?packColor([...asArray(j||"#eee")]):typeof j=="string"?getStringNumberEquivalent(j):typeof j=="boolean"?j?1:0:j};y[`prop_${$.name}`]={size:getGlslSizeFromType($.type),callback:V}}function k(L,$,V,z){const j=n[L],oe=r[L];if(!j&&!oe)return;const re=getGlslTypeFromType(V),ie=getGlslSizeFromType(V);i.addAttribute(`${re} a_${$}`),oe&&i.addVarying(`v_${$}`,re,`a_${$}`),y[$]={size:ie,callback:z}}return k("geometryType",GEOMETRY_TYPE_PROPERTY_NAME,StringType,L=>getStringNumberEquivalent(computeGeometryType(L.getGeometry()))),k("featureId",FEATURE_ID_PROPERTY_NAME,StringType|NumberType,L=>{const $=L.getId()??null;return typeof $=="string"?getStringNumberEquivalent($):$}),{builder:i,attributes:y,uniforms:g}}class WebGLPointsLayer extends Layer{constructor(e){const n=Object.assign({},e);super(n),this.styleVariables_=e.variables||{},this.parseResult_=parseLiteralStyle(e.style,this.styleVariables_),this.hitDetectionDisabled_=!!e.disableHitDetection}createRenderer(){const e=Object.keys(this.parseResult_.attributes).map(n=>({name:n,...this.parseResult_.attributes[n]}));return new WebGLPointsLayerRenderer(this,{vertexShader:this.parseResult_.builder.getSymbolVertexShader(),fragmentShader:this.parseResult_.builder.getSymbolFragmentShader(),hitDetectionEnabled:!this.hitDetectionDisabled_,uniforms:this.parseResult_.uniforms,attributes:e})}updateStyleVariables(e){Object.assign(this.styleVariables_,e),this.changed()}}var CAR_COLOR=(t=>(t[t.BLUE=1]="BLUE",t[t.YELLOW=2]="YELLOW",t[t.Y_GREEN=3]="Y_GREEN",t))(CAR_COLOR||{}),DEVICE_TYPE=(t=>(t[t.HOST=1]="HOST",t[t.TALK=2]="TALK",t[t.STORAGE=3]="STORAGE",t[t.INTERNET=4]="INTERNET",t[t.CAMERA=5]="CAMERA",t[t.LOAD=6]="LOAD",t))(DEVICE_TYPE||{}),LENGTH_UNIT=(t=>(t[t.M=1]="M",t[t.KM=2]="KM",t[t.NM=3]="NM",t))(LENGTH_UNIT||{}),SWITCH_BTN=(t=>(t.Camera="camera",t.Mobile="mobile",t.WaterGauge="waterGauge",t))(SWITCH_BTN||{}),SHIP_SAIL_STATUS=(t=>(t[t.发动机使用中=0]="发动机使用中",t[t.锚泊=1]="锚泊",t[t.未操作=2]="未操作",t[t.操纵能力受限=3]="操纵能力受限",t[t.吃水受限=4]="吃水受限",t[t.系泊=5]="系泊",t[t.搁浅=6]="搁浅",t[t.从事捕捞=7]="从事捕捞",t[t.航行中=8]="航行中",t[t.留作将来修正导航状态=9]="留作将来修正导航状态",t[t.高速船留用=10]="高速船留用",t[t.机动船尾推作业=11]="机动船尾推作业",t[t.机动船顶推或侧推作业=12]="机动船顶推或侧推作业",t[t.飞翼船留用=13]="飞翼船留用",t[t.现行的=14]="现行的",t[t.未定义=15]="未定义",t))(SHIP_SAIL_STATUS||{});class ShipMapData{constructor(e,n,r,i,g,y,k,L,$,V,z,j,oe,re,ie,ae,le,de,pe,ue,he,Ce,_e,xe){qn(this,"id");qn(this,"mmsi");qn(this,"fill");qn(this,"shipType");qn(this,"name");qn(this,"length");qn(this,"breadth");qn(this,"lon");qn(this,"lat");qn(this,"createdAt");qn(this,"speed");qn(this,"from");qn(this,"sailStatus");qn(this,"hdg");qn(this,"cog");qn(this,"posType");qn(this,"type");qn(this,"angle");qn(this,"leftIconColor");qn(this,"existDevice");qn(this,"existMobile");qn(this,"existWaterGauge");qn(this,"selected");qn(this,"blinkColors");this.id=e,this.mmsi=n,this.fill=r,this.shipType=i,this.name=g,this.length=y,this.breadth=k,this.lon=L,this.lat=$,this.createdAt=V,this.speed=z,this.from=j,this.sailStatus=oe,this.hdg=re,this.cog=ie,this.posType=ae,this.type=le,this.angle=de,this.leftIconColor=pe,this.existDevice=ue,this.existMobile=he,this.existWaterGauge=Ce,this.selected=_e,this.blinkColors=xe}}const formatLength=function(t,e){const r=getLength(t);let i="";switch(e){case LENGTH_UNIT.M:i=Math.round(r*100)/100+" m";break;case LENGTH_UNIT.KM:i=Math.round(r/1e3*100)/100+" km";break;case LENGTH_UNIT.NM:i=(Math.round(r/1e3*100)/100/1.852).toFixed(2)+" nm";break}return i},convertSixHundredThousandToLatLng=function(t,e){const n=Number(e)/6e5;return[Number(t)/6e5,n]},formatArea=(t,e)=>{const r=getArea(t);let i;switch(e){case LENGTH_UNIT.KM:r>1e4?i=Math.round(r/1e6*100)/100+" km<sup>2</sup>":i=Math.round(r*100)/100+" m<sup>2</sup>";break;case LENGTH_UNIT.NM:const g=Math.pow(1.852,2);r>1e4?i=Math.round(r/1e6/g*100)/100+" nm<sup>2</sup>":i=Math.round(r*100)/100+" m<sup>2</sup>";break}return i},convertShipMapData=t=>{const e=n=>new ShipMapData(n.id,n.id,n.fill||"#04C900","70",(n.cnname||n.enname||n.name||n.id)+`${n.existName?n.existName:""}`,n.len||n.length,n.wid||n.breadth,n.lon,n.lat,new Date().getTime(),n.spd,n.from,n.status,Number(n.hdg),n.cog,Number(n.postype),"other",n.cog,n.leftIconColor,n.existDevice,n.existMobile,n.existWaterGauge,n.selected,n.blinkColors);return Array.isArray(t)?t.map(n=>e(n)):e(t)},formatUtils={formatLength,convertSixHundredThousandToLatLng,formatArea},_hoisted_1$a={key:0,class:"measure-panel"},_hoisted_2$6={class:"d-flex justify-content-between align-content-start w-100"},_hoisted_3$5={class:"measure-history-list"},_hoisted_4$2={class:"left-panel"},_hoisted_5$2={class:"text index"},_hoisted_6$2={class:"text"},_hoisted_7$2=["onClick"],_sfc_main$c=vue.defineComponent({__name:"measure",props:vue.mergeModels({viewMode:{}},{visible:{type:Boolean},visibleModifiers:{}}),emits:vue.mergeModels(["close"],["update:visible"]),setup(t,{expose:e,emit:n}){const r=vue.inject("mapInstance"),i=n,g=vue.useModel(t,"visible"),y=vue.ref("3"),k=vue.ref([]),L=vue.ref(!1),$=new VectorSource;let V,z,j,oe,re;const ie=new VectorLayer({source:$,style:{"fill-color":"rgba(255, 255, 255, 0.2)","stroke-color":"#ffcc33","stroke-width":2,"circle-radius":7,"circle-fill-color":"#ffcc33"}}),ae=function(Oe){if(Oe.dragging)return;let $e="点击选择起点";V&&($e="单击继续,双击结束"),z&&(z.innerHTML=$e,j.setPosition(Oe.coordinate),z.classList.remove("hidden"))},le=()=>{var Oe,$e;r!=null&&r.value&&((Oe=r==null?void 0:r.value)==null||Oe.on("pointermove",ae),($e=r==null?void 0:r.value)==null||$e.getViewport().addEventListener("mouseout",function(){var qe;(qe=z==null?void 0:z.classList)==null||qe.add("hidden")}),L.value=!0)};let de;const pe=new Style({fill:new Fill({color:"rgba(255, 255, 255, 0.2)"}),stroke:new Stroke({color:"rgba(255,204,51)",lineDash:[10,10],width:2}),image:new CircleStyle({radius:5,stroke:new Stroke({color:"rgba(0, 0, 0, 0.7)"}),fill:new Fill({color:"rgba(255, 255, 255, 0.2)"})})});function ue(){var Oe,$e;if(r!=null&&r.value){if(k.value=[],document.querySelectorAll(".ol-tooltip.ol-tooltip-static").forEach(qe=>{var kt;(kt=qe==null?void 0:qe.parentNode)==null||kt.removeChild(qe)}),$.clear(),de){const qe=r.value.getInteractions().getArray().find(kt=>getUid(kt)===getUid(de));qe&&((Oe=r.value)==null||Oe.removeInteraction(qe))}($e=r.value)==null||$e.removeLayer(ie),z!=null&&z.parentNode&&z.parentNode.removeChild(z),oe!=null&&oe.parentNode&&oe.parentNode.removeChild(oe)}}function he(){var $e,qe;ue(),($e=r==null?void 0:r.value)==null||$e.addLayer(ie),de=new Draw({source:$,type:"LineString",style:function(){return pe},condition:function(kt){return kt.originalEvent.target.tagName!=="DIV"}}),(qe=r==null?void 0:r.value)==null||qe.addInteraction(de),_e(),Ce();let Oe;de.on("drawstart",function(kt){var Ve;V=kt.feature;let Dt;Oe=(Ve=V.getGeometry())==null?void 0:Ve.on("change",function(Fe){const ze=Fe.target;let Ue=formatUtils.formatLength(ze,Number(y.value));Dt=ze.getLastCoordinate(),oe&&Ue&&(oe.innerHTML=Ue),re.setPosition(Dt)})}),de.on("drawend",function(){var kt,Dt;oe&&(oe.className="ol-tooltip ol-tooltip-static ol-tooltip-measure"),oe!=null&&oe.innerHTML&&(k.value.push(oe==null?void 0:oe.innerHTML),oe.innerHTML=`${oe.innerHTML}<div class="ol-tooltip-delete-button" data-index="${((kt=k.value)==null?void 0:kt.length)-1}"><i class="map-iconfont icon-delete"></i></div>`),(Dt=document.querySelector(".ol-selectable:has(.ol-tooltip-delete-button):last-child .ol-tooltip-delete-button"))==null||Dt.addEventListener("click",Ve=>{var ze;Ve.preventDefault(),Ve.stopPropagation();const Fe=(ze=Ve.target)==null?void 0:ze.getAttribute("data-index");Fe&&xe(Number(Fe))}),re.setOffset([0,-7]),V=null,oe=null,_e(),Oe&&unByKey(Oe)})}function Ce(){var Oe;z!=null&&z.parentNode&&z.parentNode.removeChild(z),z=document.createElement("div"),z.className="ol-tooltip hidden",j=new Overlay({element:z,offset:[15,0],positioning:"center-left"}),(Oe=r==null?void 0:r.value)==null||Oe.addOverlay(j)}function _e(){var Oe;oe!=null&&oe.parentNode&&oe.parentNode.removeChild(oe),oe=document.createElement("div"),oe.className="ol-tooltip ol-tooltip-measure",re=new Overlay({element:oe,offset:[0,-15],positioning:"bottom-center",stopEvent:!1,insertFirst:!1}),(Oe=r==null?void 0:r.value)==null||Oe.addOverlay(re)}const xe=Oe=>{var kt,Dt;k.value[Oe]&&k.value.splice(Oe,1);const $e=document.querySelectorAll(".ol-tooltip.ol-tooltip-static.ol-tooltip-measure");$e[Oe]&&((Dt=(kt=$e[Oe])==null?void 0:kt.parentNode)==null||Dt.removeChild($e[Oe]));const qe=$.getFeatures();qe[Oe]&&$.removeFeature(qe[Oe])},Ie=()=>{i("close")};return vue.watch(()=>g,()=>{g.value&&!L.value&&(le(),he())},{deep:!0,immediate:!0}),e({addInteraction:he,removeInteraction:ue}),(Oe,$e)=>g.value&&Oe.viewMode!=="WxMiniprogram"?(vue.openBlock(),vue.createElementBlock("div",_hoisted_1$a,[vue.createElementVNode("div",{class:"header"},[$e[1]||($e[1]=vue.createElementVNode("div",{class:"title"},"测量",-1)),vue.createElementVNode("i",{onClick:Ie,class:"map-iconfont icon-close"})]),vue.createElementVNode("div",_hoisted_2$6,[$e[2]||($e[2]=vue.createElementVNode("div",{class:"tips"},"在地图上点击多个点测量距离,距离单位",-1)),vue.createVNode(vue.unref(ElSelect),{class:"select-length-unit",modelValue:y.value,"onUpdate:modelValue":$e[0]||($e[0]=qe=>y.value=qe)},{default:vue.withCtx(()=>[vue.createVNode(vue.unref(ElOption),{label:"m",value:"1"}),vue.createVNode(vue.unref(ElOption),{label:"km",value:"2"}),vue.createVNode(vue.unref(ElOption),{label:"nm",value:"3"})]),_:1},8,["modelValue"])]),vue.createElementVNode("div",_hoisted_3$5,[(vue.openBlock(!0),vue.createElementBlock(vue.Fragment,null,vue.renderList(k.value,(qe,kt)=>(vue.openBlock(),vue.createElementBlock("div",{class:"measure-history-item",key:kt},[vue.createElementVNode("div",_hoisted_4$2,[$e[3]||($e[3]=vue.createElementVNode("i",{class:"map-iconfont icon-line"},null,-1)),vue.createElementVNode("span",_hoisted_5$2,"线段"+vue.toDisplayString(kt+1),1),vue.createElementVNode("span",_hoisted_6$2,vue.toDisplayString(qe),1)]),vue.createElementVNode("div",{class:"delete-button",onClick:Dt=>xe(kt)},$e[4]||($e[4]=[vue.createElementVNode("i",{class:"map-iconfont icon-delete"},null,-1)]),8,_hoisted_7$2)]))),128))])])):vue.createCommentVNode("",!0)}}),Measure=_export_sfc(_sfc_main$c,[["__scopeId","data-v-9b1d2f55"]]),mapInstance$8=vue.ref(),renderMarkerSetInstance=t=>mapInstance$8.value=t,markerPosition=vue.ref(""),marker=vue.ref(),createIconStyle=t=>new Style({image:new Icon({src:CDN_URL+"map/poi-marker-default.png",anchor:[.5,1]}),text:new Text({text:t,offsetY:-90,font:"12px",fill:new Fill({color:"#000"}),stroke:new Stroke({color:"#fff",width:2}),backgroundFill:new Fill({color:"#fff"}),backgroundStroke:new Stroke({color:"#000",width:1}),padding:[2,2,2,2]})}),renderMarker=(t,e=!0,n=!0)=>{var V;if(!mapInstance$8.value||!t||t.split(",").length!==2)return;const[r,i]=t.split(",").map(Number);marker.value=new Feature({geometry:new Point(fromLonLat([r,i]))});const g=n?`${r}, ${i}`:"";(V=marker.value)==null||V.setStyle(createIconStyle(g));const y=new VectorSource({features:[marker.value]}),k=new VectorLayer({source:y}),L=mapInstance$8.value.getView();if(mapInstance$8.value.addLayer(k),e){const z=new Translate({layers:[k]});z.on("translating",function(j){var ie;const oe=j.features.item(0).getGeometry().getCoordinates(),re=toLonLat(oe);markerPosition.value=`${re[0].toFixed(6)}, ${re[1].toFixed(6)}`,(ie=marker.value)==null||ie.setStyle(createIconStyle(markerPosition.value))}),mapInstance$8.value.addInteraction(z)}const $=new Point([r,i]);L.setCenter(transform($.getCoordinates(),projection.data,projection.mercator)),L.setZoom(mapZoom.findShip)},setMarkerPosition=t=>{var i,g;if(!mapInstance$8.value)return;const e=mapInstance$8.value.getView(),n=t.split(",").map(Number);(g=(i=marker.value)==null?void 0:i.getGeometry())==null||g.setCoordinates(fromLonLat([n[0],n[1]]));const r=new Point([n[0],n[1]]);e.setCenter(transform(r.getCoordinates(),projection.data,projection.mercator)),e.setZoom(mapZoom.markerPosition)},CDN_URL="https://static.zhihaoscm.cn/",tiandituKey="a6e8f78974f2581f2ca00485b40c948f",zhongkeKey="15c81cc0a191a232e0a0ca1a51c3ca81",baseMap={tiandituTile:`https://t0.tianditu.gov.cn/vec_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=vec&TILEMATRIXSET=w&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=${tiandituKey}`,tiandituTileMark:`https://t0.tianditu.gov.cn/cva_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=cva&TILEMATRIXSET=w&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=${tiandituKey}`,tiandituImgTile:`https://t0.tianditu.gov.cn/img_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=img&TILEMATRIXSET=w&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=${tiandituKey}`,tiandituImgTileMark:`https://t0.tianditu.gov.cn/cia_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=cia&TILEMATRIXSET=w&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=${tiandituKey}`,greenTile:`${CDN_URL}/map/tile/{z}/{x}/{y}.png`},mapZoom={default:6,min:3,max:18,findShipMin:10,findShip:13,findTruck:14,shipGreenDotMax:11,truckDefault:14,truckStatistics:8,shipModelMin:13,shipModelMax:18,markerPosition:14},renderShipsLimit=200,mapDefaultCenter=[114.84,30.52],projection={data:"EPSG:4326",mercator:"EPSG:3857"},LOG_DATE_FORMAT="YYYY-MM-DD HH:mm:ss",DEFAULT_VALUE="--";vue.ref();const shipsLayer=vue.ref(),largeAmountShipsLayer=vue.ref(),selectShipsLayer=vue.ref(),allShips=vue.ref([]),selectSingleShipData=vue.ref();vue.ref();const trucksLayer=vue.ref(),shipTrackLineFeatures=vue.ref([]),trackLineVectorSource=vue.ref(),shipTrackVectorLayer=vue.ref();vue.ref(),vue.ref();const shipLabels=vue.ref([]),trackLabels=vue.ref([]),showTrackLayer=vue.ref(!1),allTracks=vue.ref([]),currentTrackId=vue.ref(""),showTrackAnimatMarker=vue.ref(!1),hiddenOrther=vue.ref(!1),showMeasure=vue.ref(!1),getShowMeasure=()=>showMeasure.value;function getIconFont(unicode=""){return unicode.indexOf("&")!==-1&&(unicode=unicode.replace("&","&")),unicode.indexOf("&")!==-1&&(unicode=unicode.replace("&","&")),eval('("'+unicode.replace("&#x","\\u").replace(";","")+'")')}const multiplyPixelRatio=t=>{const e=window.devicePixelRatio||1;return t.map(n=>n.map(r=>r*e))},adjustBounds=(t,e)=>e.length===2?[t[0]-e[0],t[1]-e[1],t[2]+e[0],t[3]+e[1]]:[t[0]+e[0],t[1]+e[1],t[2]+e[2],t[3]+e[3]],isOverlapping=(t,e)=>t[0]<=e[2]&&t[2]>=e[0]&&t[1]<=e[3]&&t[3]>=e[1],getIconStyle=t=>new Style({text:new Text({font:"Normal 14px map-iconfont",text:getIconFont(t),fill:new Fill({color:"#fff"}),offsetY:-14}),zIndex:100}),getRotation=(t,e,n)=>{function r(z){return 180*(z%(2*Math.PI))/Math.PI}function i(z){return z%360*Math.PI/180}function g(z){if(!z)throw new Error("Coordinate is required");if(!Array.isArray(z)){if(z.type==="Feature"&&z.geometry!==null&&z.geometry.type==="Point")return z.geometry.coordinates;if(z.type==="Point")return z.coordinates}if(Array.isArray(z)&&z.length>=2&&!Array.isArray(z[0])&&!Array.isArray(z[1]))return z;throw new Error("Coordinate must be GeoJSON Point or an Array of numbers")}function y(z,j,oe={}){if(oe.final)return function(Ce,_e){return(y(_e,Ce)+180)%360}(z,j);const re=g(z),ie=g(j),ae=i(re[0]),le=i(ie[0]),de=i(re[1]),pe=i(ie[1]),ue=Math.sin(le-ae)*Math.cos(pe),he=Math.cos(de)*Math.sin(pe)-Math.sin(de)*Math.cos(pe)*Math.cos(le-ae);return r(Math.atan2(ue,he))}function k(z){return!isNaN(z)&&z!==null&&!Array.isArray(z)}function L(z,j={},oe={}){return z||console.log("Coordinates are required"),Array.isArray(z)||console.log("Coordinates must be an Array"),z.length<2&&console.log("Coordinates must be at least 2 numbers long"),(!k(z[0])||!k(z[1]))&&console.log("Coordinates must contain numbers"),$({type:"Point",coordinates:z},j,oe)}function $(z,j={},oe={}){const re={type:"Feature"};return oe.id!==void 0&&(re.id=oe.id),oe.bbox&&(re.bbox=oe.bbox),re.properties=j||{},re.geometry=z,re}const V=y(L(t),L(e),n);return V<0?360+V:V},triangleModel=multiplyPixelRatio([[0,-8],[5,8],[-5,8]]),shipShapeModel=multiplyPixelRatio([[0,-4.545],[-.56,-3.909],[-1,-2.727],[-1,3.636],[-.8,4.545],[.8,4.545],[1,3.636],[1,-2.727],[.56,-3.909],[0,-4.545]]),shipDirectPath={left:{0:[[0,0],[0,-8],[-4,-8]],1:[[0,0],[0,-16],[-6,-16]],2:[[0,0],[0,-24],[-8,-24]]},right:{0:[[0,0],[0,-8],[-4,-8]],1:[[0,0],[0,-16],[-6,-16]],2:[[0,0],[0,-24],[-8,-24]]},front:{0:[[0,0],[0,-8]],1:[[0,0],[0,-16]],2:[[0,0],[0,-24]]}},setBlankStyle=()=>new Style({image:new CircleStyle({radius:0})}),mapInstance$7=vue.ref(),renderShipStyleSetInstance=t=>mapInstance$7.value=t,speedCondition=[[1,10],[10,20],[20,1/0]],drawShipModelByZoom={14:[200,30],15:[115,15],16:[55,8],17:[25,5],18:[1,1]},setShipStyle=(t,e=!1)=>new Style({renderer:(n,r)=>{n=n;const i=r.context,g=r.feature.get("data");if(!g)return;r.feature.get("index")===0&&(shipLabels.value=[]);try{const k=drawShipBody(i,g,n,e);k&&(drawHeading(i,g,k,e),g.selected=t,t&&setTimeout(()=>{drawSelectBounds(i,k)},50)),drawShipLabel(i,g,n)}catch{return!1}}}),drawShipBody=(t,e,n,r)=>{if(!mapInstance$7.value)return;const i=Math.round(Number(mapInstance$7.value.getView().getZoom()));if(!i)return;let g=[];const[y,k]=drawShipModelByZoom[i]||[0,0],[L,$]=n;if(i<=mapZoom.shipModelMax&&i>mapZoom.shipModelMin&&e.length>=y&&e.breadth>=k)g=rotateShapeModel(drawCurrentShipShapeModel(e,i),e.angle).map(z=>{const[j,oe]=z;return[L+j,$+oe]});else{const V=rotateShapeModel(triangleModel,e.angle);n.length===2&&(g=V.map(z=>{const[j,oe]=z;return[L+j,$+oe]}))}if(!(g.length>2))return!1;if(e!=null&&e.length){const V=g.length===3?30:e.length*.4;t.beginPath(),t.arc(n[0],n[1],V,0,2*Math.PI),t.fillStyle="rgba(255, 255, 255, 0.001)",t.fill()}t.save(),t.beginPath(),t.moveTo(g[0][0],g[0][1]);for(let V=1;V<g.length;V++)t.lineTo(g[V][0],g[V][1]);return t.closePath(),t.strokeStyle=r?"#ff0000":"#000",t.lineWidth=r?2:1,t.stroke(),t.fillStyle=e.fill,t.fill(),t.restore(),g},drawHeading=(t,e,n,r)=>{const[i,g]=n[0],y=getShipDirectPath(e);if(y){const k=y.map(function(L){const[$,V]=L;return[$+i,V+g]});if(t.save(),t.beginPath(),e.angle>0){t.translate(i,g);const L=e.angle*Math.PI/180;t.rotate(L),t.translate(-i,-g)}t.moveTo(i,g);for(let L=1;L<k.length;L++){const[$,V]=k[L];t.lineTo($,V)}t.strokeStyle=r?"#ff0000":"#000",t.lineWidth=r?2:1,t.stroke(),t.restore()}},drawSelectBounds=(t,e)=>{let[n,r,i,g]=getPixelFromCoordinate(e);const y=4;n-=y,r-=y,i+=y,g+=y,t.save(),t.strokeStyle="#ff0000",t.lineWidth=4;const k=8;t.beginPath(),t.moveTo(n+k,g),t.lineTo(n,g),t.lineTo(n,g-k),t.moveTo(n,r+k),t.lineTo(n,r),t.lineTo(n+k,r),t.moveTo(i-k,r),t.lineTo(i,r),t.lineTo(i,r+k),t.moveTo(i,g-k),t.lineTo(i,g),t.lineTo(i-k,g),t.stroke(),t.restore()},drawShipLabel=(t,e,n)=>{if(!e.selected&&shipLabels.value.find(z=>z.name===e.name))return;const[r,i]=n,g=r,y=i,k=e.name;let L;e.leftIconColor&&(L={color:e.leftIconColor,icon:""});const $=getShipCustomIcon(e),V={id:e.id,center:[g,y],text:k,fill:e.fill,color:"#fff",textColor:"#000",bgColor:"#fff",leftIcon:L,rightIcons:$,selected:e.selected,blinkColors:e.blinkColors,type:"ShipName"};drawLabel(t,V,shipLabels.value)},drawCurrentShipShapeModel=(t,e)=>{let n=0;e<=14?n=.058:e===15?n=.12:e===16?n=.22:e===17?n=.435:e===18&&(n=.857);const r=t.length/4*n,i=t.breadth*n;let g=cloneDeep(shipShapeModel);return g=g.map(([y,k])=>[y*i,k*r]),g},getShipDirectPath=t=>{const{speed:e,hdg:n,cog:r}=t;let i="",g=null;if(e&&e>1&&(n!==null&&n!=511&&r!==null?r-n>=3?i="left":r-n<=-3?i="right":i="front":i="front",i&&e))for(let y=0;y<speedCondition.length;y++){const k=speedCondition[y];if(e>=k[0]&&e<k[1]){g=shipDirectPath[i][y];break}}return g},getShipCustomIcon=t=>{const e=[];return t.existDevice&&e.push(""),t.existMobile&&e.push(""),t.existWaterGauge&&e.push(""),e||[]};class FeatureFormat{constructor(){this.dataProjection=void 0,this.defaultFeatureProjection=void 0,this.featureClass=Feature,this.supportedMediaTypes=null}getReadOptions(e,n){if(n){let r=n.dataProjection?get$1(n.dataProjection):this.readProjection(e);n.extent&&r&&r.getUnits()==="tile-pixels"&&(r=get$1(r),r.setWorldExtent(n.extent)),n={dataProjection:r,featureProjection:n.featureProjection}}return this.adaptOptions(n)}adaptOptions(e){return Object.assign({dataProjection:this.dataProjection,featureProjection:this.defaultFeatureProjection,featureClass:this.featureClass},e)}getType(){return abstract()}readFeature(e,n){return abstract()}readFeatures(e,n){return abstract()}readGeometry(e,n){return abstract()}readProjection(e){return abstract()}writeFeature(e,n){return abstract()}writeFeatures(e,n){return abstract()}writeGeometry(e,n){return abstract()}}function transformGeometryWithOptions(t,e,n){const r=n?get$1(n.featureProjection):null,i=n?get$1(n.dataProjection):null;let g=t;if(r&&i&&!equivalent(r,i)){e&&(g=t.clone());const y=e?r:i,k=e?i:r;y.getUnits()==="tile-pixels"?g.transform(y,k):g.applyTransform(getTransform(y,k))}if(e&&n&&n.decimals!==void 0){const y=Math.pow(10,n.decimals),k=function(L){for(let $=0,V=L.length;$<V;++$)L[$]=Math.round(L[$]*y)/y;return L};g===t&&(g=t.clone()),g.applyTransform(k)}return g}const GeometryConstructor={Point,LineString,Polygon,MultiPoint,MultiLineString,MultiPolygon};function orientFlatCoordinates(t,e,n){return Array.isArray(e[0])?(linearRingssAreOriented(t,0,e,n)||(t=t.slice(),orientLinearRingsArray(t,0,e,n)),t):(linearRingsAreOriented(t,0,e,n)||(t=t.slice(),orientLinearRings(t,0,e,n)),t)}function createRenderFeature(t,e){var g;const n=t.geometry;if(!n)return[];if(Array.isArray(n))return n.map(y=>createRenderFeature({...t,geometry:y})).flat();const r=n.type==="MultiPolygon"?"Polygon":n.type;if(r==="GeometryCollection"||r==="Circle")throw new Error("Unsupported geometry type: "+r);const i=n.layout.length;return transformGeometryWithOptions(new RenderFeature(r,r==="Polygon"?orientFlatCoordinates(n.flatCoordinates,n.ends,i):n.flatCoordinates,(g=n.ends)==null?void 0:g.flat(),i,t.properties||{},t.id).enableSimplifyTransformed(),!1,e)}function createGeometry(t,e){if(!t)return null;if(Array.isArray(t)){const r=t.map(i=>createGeometry(i,e));return new GeometryCollection(r)}const n=GeometryConstructor[t.type];return transformGeometryWithOptions(new n(t.flatCoordinates,t.layout,t.ends),!1,e)}class JSONFeature extends FeatureFormat{constructor(){super()}getType(){return"json"}readFeature(e,n){return this.readFeatureFromObject(getObject(e),this.getReadOptions(e,n))}readFeatures(e,n){return this.readFeaturesFromObject(getObject(e),this.getReadOptions(e,n))}readFeatureFromObject(e,n){return abstract()}readFeaturesFromObject(e,n){return abstract()}readGeometry(e,n){return this.readGeometryFromObject(getObject(e),this.getReadOptions(e,n))}readGeometryFromObject(e,n){return abstract()}readProjection(e){return this.readProjectionFromObject(getObject(e))}readProjectionFromObject(e){return abstract()}writeFeature(e,n){return JSON.stringify(this.writeFeatureObject(e,n))}writeFeatureObject(e,n){return abstract()}writeFeatures(e,n){return JSON.stringify(this.writeFeaturesObject(e,n))}writeFeaturesObject(e,n){return abstract()}writeGeometry(e,n){return JSON.stringify(this.writeGeometryObject(e,n))}writeGeometryObject(e,n){return abstract()}}function getObject(t){if(typeof t=="string"){const e=JSON.parse(t);return e||null}return t!==null?t:null}class GeoJSON extends JSONFeature{constructor(e){e=e||{},super(),this.dataProjection=get$1(e.dataProjection?e.dataProjection:"EPSG:4326"),e.featureProjection&&(this.defaultFeatureProjection=get$1(e.featureProjection)),e.featureClass&&(this.featureClass=e.featureClass),this.geometryName_=e.geometryName,this.extractGeometryName_=e.extractGeometryName,this.supportedMediaTypes=["application/geo+json","application/vnd.geo+json"]}readFeatureFromObject(e,n){let r=null;e.type==="Feature"?r=e:r={type:"Feature",geometry:e,properties:null};const i=readGeometryInternal(r.geometry);if(this.featureClass===RenderFeature)return createRenderFeature({geometry:i,id:r.id,properties:r.properties},n);const g=new Feature;return this.geometryName_?g.setGeometryName(this.geometryName_):this.extractGeometryName_&&r.geometry_name&&g.setGeometryName(r.geometry_name),g.setGeometry(createGeometry(i,n)),"id"in r&&g.setId(r.id),r.properties&&g.setProperties(r.properties,!0),g}readFeaturesFromObject(e,n){const r=e;let i=null;if(r.type==="FeatureCollection"){const g=e;i=[];const y=g.features;for(let k=0,L=y.length;k<L;++k){const $=this.readFeatureFromObject(y[k],n);$&&i.push($)}}else i=[this.readFeatureFromObject(e,n)];return i.flat()}readGeometryFromObject(e,n){return readGeometry(e,n)}readProjectionFromObject(e){const n=e.crs;let r;if(n)if(n.type=="name")r=get$1(n.properties.name);else if(n.type==="EPSG")r=get$1("EPSG:"+n.properties.code);else throw new Error("Unknown SRS type");else r=this.dataProjection;return r}writeFeatureObject(e,n){n=this.adaptOptions(n);const r={type:"Feature",geometry:null,properties:null},i=e.getId();if(i!==void 0&&(r.id=i),!e.hasProperties())return r;const g=e.getProperties(),y=e.getGeometry();return y&&(r.geometry=writeGeometry(y,n),delete g[e.getGeometryName()]),isEmpty$1(g)||(r.properties=g),r}writeFeaturesObject(e,n){n=this.adaptOptions(n);const r=[];for(let i=0,g=e.length;i<g;++i)r.push(this.writeFeatureObject(e[i],n));return{type:"FeatureCollection",features:r}}writeGeometryObject(e,n){return writeGeometry(e,this.adaptOptions(n))}}function readGeometryInternal(t,e){if(!t)return null;let n;switch(t.type){case"Point":{n=readPointGeometry(t);break}case"LineString":{n=readLineStringGeometry(t);break}case"Polygon":{n=readPolygonGeometry(t);break}case"MultiPoint":{n=readMultiPointGeometry(t);break}case"MultiLineString":{n=readMultiLineStringGeometry(t);break}case"MultiPolygon":{n=readMultiPolygonGeometry(t);break}case"GeometryCollection":{n=readGeometryCollectionGeometry(t);break}default:throw new Error("Unsupported GeoJSON type: "+t.type)}return n}function readGeometry(t,e){const n=readGeometryInternal(t);return createGeometry(n,e)}function readGeometryCollectionGeometry(t,e){return t.geometries.map(function(r){return readGeometryInternal(r)})}function readPointGeometry(t){const e=t.coordinates;return{type:"Point",flatCoordinates:e,layout:getLayoutForStride(e.length)}}function readLineStringGeometry(t){var r;const e=t.coordinates,n=e.flat();return{type:"LineString",flatCoordinates:n,ends:[n.length],layout:getLayoutForStride(((r=e[0])==null?void 0:r.length)||2)}}function readMultiLineStringGeometry(t){var g,y;const e=t.coordinates,n=((y=(g=e[0])==null?void 0:g[0])==null?void 0:y.length)||2,r=[],i=deflateCoordinatesArray(r,0,e,n);return{type:"MultiLineString",flatCoordinates:r,ends:i,layout:getLayoutForStride(n)}}function readMultiPointGeometry(t){var n;const e=t.coordinates;return{type:"MultiPoint",flatCoordinates:e.flat(),layout:getLayoutForStride(((n=e[0])==null?void 0:n.length)||2)}}function readMultiPolygonGeometry(t){var g,y;const e=t.coordinates,n=[],r=((y=(g=e[0])==null?void 0:g[0])==null?void 0:y[0].length)||2,i=deflateMultiCoordinatesArray(n,0,e,r);return{type:"MultiPolygon",flatCoordinates:n,ends:i,layout:getLayoutForStride(r)}}function readPolygonGeometry(t){var g,y;const e=t.coordinates,n=[],r=(y=(g=e[0])==null?void 0:g[0])==null?void 0:y.length,i=deflateCoordinatesArray(n,0,e,r);return{type:"Polygon",flatCoordinates:n,ends:i,layout:getLayoutForStride(r)}}function writeGeometry(t,e){t=transformGeometryWithOptions(t,!0,e);const n=t.getType();let r;switch(n){case"Point":{r=writePointGeometry(t);break}case"LineString":{r=writeLineStringGeometry(t);break}case"Polygon":{r=writePolygonGeometry(t,e);break}case"MultiPoint":{r=writeMultiPointGeometry(t);break}case"MultiLineString":{r=writeMultiLineStringGeometry(t);break}case"MultiPolygon":{r=writeMultiPolygonGeometry(t,e);break}case"GeometryCollection":{r=writeGeometryCollectionGeometry(t,e);break}case"Circle":{r={type:"GeometryCollection",geometries:[]};break}default:throw new Error("Unsupported geometry type: "+n)}return r}function writeGeometryCollectionGeometry(t,e){return e=Object.assign({},e),delete e.featureProjection,{type:"GeometryCollection",geometries:t.getGeometriesArray().map(function(r){return writeGeometry(r,e)})}}function writeLineStringGeometry(t,e){return{type:"LineString",coordinates:t.getCoordinates()}}function writeMultiLineStringGeometry(t,e){return{type:"MultiLineString",coordinates:t.getCoordinates()}}function writeMultiPointGeometry(t,e){return{type:"MultiPoint",coordinates:t.getCoordinates()}}function writeMultiPolygonGeometry(t,e){let n;return e&&(n=e.rightHanded),{type:"MultiPolygon",coordinates:t.getCoordinates(n)}}function writePointGeometry(t,e){return{type:"Point",coordinates:t.getCoordinates()}}function writePolygonGeometry(t,e){let n;return e&&(n=e.rightHanded),{type:"Polygon",coordinates:t.getCoordinates(n)}}class TextFeature extends FeatureFormat{constructor(){super()}getType(){return"text"}readFeature(e,n){return this.readFeatureFromText(getText(e),this.adaptOptions(n))}readFeatureFromText(e,n){return abstract()}readFeatures(e,n){return this.readFeaturesFromText(getText(e),this.adaptOptions(n))}readFeaturesFromText(e,n){return abstract()}readGeometry(e,n){return this.readGeometryFromText(getText(e),this.adaptOptions(n))}readGeometryFromText(e,n){return abstract()}readProjection(e){return this.readProjectionFromText(getText(e))}readProjectionFromText(e){return this.dataProjection}writeFeature(e,n){return this.writeFeatureText(e,this.adaptOptions(n))}writeFeatureText(e,n){return abstract()}writeFeatures(e,n){return this.writeFeaturesText(e,this.adaptOptions(n))}writeFeaturesText(e,n){return abstract()}writeGeometry(e,n){return this.writeGeometryText(e,this.adaptOptions(n))}writeGeometryText(e,n){return abstract()}}function getText(t){return typeof t=="string"?t:""}function flipXY(t,e,n,r,i,g){i!==void 0?(i=i,g=g!==void 0?g:0):(i=[],g=0);let y=e;for(;y<n;){const k=t[y++];i[g++]=t[y++],i[g++]=k;for(let L=2;L<r;++L)i[g++]=t[y++]}return i.length=g,i}class Polyline extends TextFeature{constructor(e){super(),e=e||{},this.dataProjection=get$1("EPSG:4326"),this.factor_=e.factor?e.factor:1e5,this.geometryLayout_=e.geometryLayout?e.geometryLayout:"XY"}readFeatureFromText(e,n){const r=this.readGeometryFromText(e,n);return new Feature(r)}readFeaturesFromText(e,n){return[this.readFeatureFromText(e,n)]}readGeometryFromText(e,n){const r=getStrideForLayout(this.geometryLayout_),i=decodeDeltas(e,r,this.factor_);flipXY(i,0,i.length,r,i);const g=inflateCoordinates(i,0,i.length,r),y=new LineString(g,this.geometryLayout_);return transformGeometryWithOptions(y,!1,this.adaptOptions(n))}writeFeatureText(e,n){const r=e.getGeometry();if(r)return this.writeGeometryText(r,n);throw new Error("Expected `feature` to have a geometry")}writeFeaturesText(e,n){return this.writeFeatureText(e[0],n)}writeGeometryText(e,n){e=transformGeometryWithOptions(e,!0,this.adaptOptions(n));const r=e.getFlatCoordinates(),i=e.getStride();return flipXY(r,0,r.length,i,r),encodeDeltas(r,i,this.factor_)}}function encodeDeltas(t,e,n){n=n||1e5;let r;const i=new Array(e);for(r=0;r<e;++r)i[r]=0;for(let g=0,y=t.length;g<y;)for(r=0;r<e;++r,++g){const k=t[g],L=k-i[r];i[r]=k,t[g]=L}return encodeFloats(t,n)}function decodeDeltas(t,e,n){n=n||1e5;let r;const i=new Array(e);for(r=0;r<e;++r)i[r]=0;const g=decodeFloats(t,n);for(let y=0,k=g.length;y<k;)for(r=0;r<e;++r,++y)i[r]+=g[y],g[y]=i[r];return g}function encodeFloats(t,e){e=e||1e5;for(let n=0,r=t.length;n<r;++n)t[n]=Math.round(t[n]*e);return encodeSignedIntegers(t)}function decodeFloats(t,e){e=e||1e5;const n=decodeSignedIntegers(t);for(let r=0,i=n.length;r<i;++r)n[r]/=e;return n}function encodeSignedIntegers(t){for(let e=0,n=t.length;e<n;++e){const r=t[e];t[e]=r<0?~(r<<1):r<<1}return encodeUnsignedIntegers(t)}function decodeSignedIntegers(t){const e=decodeUnsignedIntegers(t);for(let n=0,r=e.length;n<r;++n){const i=e[n];e[n]=i&1?~(i>>1):i>>1}return e}function encodeUnsignedIntegers(t){let e="";for(let n=0,r=t.length;n<r;++n)e+=encodeUnsignedInteger(t[n]);return e}function decodeUnsignedIntegers(t){const e=[];let n=0,r=0;for(let i=0,g=t.length;i<g;++i){const y=t.charCodeAt(i)-63;n|=(y&31)<<r,y<32?(e.push(n),n=0,r=0):r+=5}return e}function encodeUnsignedInteger(t){let e,n="";for(;t>=32;)e=(32|t&31)+63,n+=String.fromCharCode(e),t>>=5;return e=t+63,n+=String.fromCharCode(e),n}const mapInstance$6=vue.ref(),renderShipSetInstance=t=>mapInstance$6.value=t;let shipsMarkerList=[],shipsVectorSource,largeAmountShipsSource;const selectedShipData=vue.ref(null),selectedShips=vue.ref([]);let selectShipsVectorSource;const renderShips=t=>{var n,r,i,g;if(!mapInstance$6.value||showTrackLayer.value)return;const e=Math.round(Number(mapInstance$6.value.getView().getZoom()));if(selectedShipData.value&&vue.nextTick(()=>{selectSingleShipMarker(selectedShipData.value)}).then(y=>{}),!(!e||e<mapZoom.shipGreenDotMax)&&(allShips.value=[...t,...selectedShips.value],!hiddenOrther.value))return e>=mapZoom.shipGreenDotMax&&e<mapZoom.shipModelMin?((n=shipsLayer.value)==null||n.setVisible(!1),(r=largeAmountShipsLayer.value)==null||r.setVisible(!0),renderLargeAmountShips(allShips.value)):((i=largeAmountShipsLayer.value)==null||i.setVisible(!1),(g=shipsLayer.value)==null||g.setVisible(!0),renderShipsMarker(allShips.value))},renderLargeAmountShips=t=>{if(!mapInstance$6.value)return;const e=t.map(n=>({type:"Feature",geometry:{type:"Point",coordinates:[n.lon,n.lat]},properties:n}));return largeAmountShipsSource==null||largeAmountShipsSource.clear(),largeAmountShipsSource=new VectorSource({features:new GeoJSON().readFeatures({type:"FeatureCollection",features:e},{featureProjection:projection.mercator})}),largeAmountShipsLayer.value=new WebGLPointsLayer({source:largeAmountShipsSource,style:{"shape-points":3,"shape-radius":9,"shape-fill-color":["case",["==",["get","fill"],"#D9001C"],"#D9001C",["==",["get","fill"],"#04C900"],"#04C900","#04C900"],"shape-rotate-with-view":!1,"shape-rotation":["+",["get","cog"],180],"shape-scale":[.8,1.2],"shape-stroke-color":"#000000","shape-stroke-width":.5}}),mapInstance$6.value.addLayer(largeAmountShipsLayer.value),largeAmountShipsLayer.value},renderShipsMarker=t=>{var n;if(!mapInstance$6.value)return;deleteAllShipMarkers();let e=convertShipMapData(t);if(e=customFilterShips(e),!!(e!=null&&e.length))return e.forEach((r,i)=>{const g=[r.lon,r.lat],y=new Feature({geometry:new Point(fromLonLat(g))}),k=1;y.set("clickGeometry",new Circle(fromLonLat(g),k)),y.set("data",r),y.set("index",i),y.setStyle(setShipStyle(!1)),shipsMarkerList.push({ship:r,lonlat:g,feature:y})}),shipsVectorSource=new VectorSource({features:shipsMarkerList.map(r=>r.feature)}),shipsLayer.value=new VectorLayer({source:shipsVectorSource,zIndex:100}),(n=mapInstance$6.value)==null||n.addLayer(shipsLayer.value),shipsLayer.value},onShipsMarkerHover=()=>{var r;let t=null,e=0;const n=100;(r=mapInstance$6.value)==null||r.on("pointermove",function(i){var L,$;const g=Date.now();if(g-e<n)return;e=g;const y=(L=mapInstance$6.value)==null?void 0:L.forEachFeatureAtPixel(i.pixel,V=>V),k=($=mapInstance$6.value)==null?void 0:$.getTargetElement();if(k&&(k.style.cursor=y?"pointer":""),t!==y){if(t){const V=t.get("data");if(!(V!=null&&V.mmsi))return;t.setStyle(setShipStyle(!1,!1))}if(y){const V=y.get("data");if(!(V!=null&&V.mmsi))return;t=y,y.setStyle(setShipStyle(!1,!0))}else t=null}})},customFilterShips=t=>{let e=cloneDeep(t);return e=e.filter(n=>{var i;const r=getFilterItem(n).every(({btnShow:g,value:y})=>g?!!y:!0);return(switchBtnShow.value.camera||switchBtnShow.value.mobile||switchBtnShow.value.waterGauge)&&((i=selectedShipData.value)==null?void 0:i.id)===n.id&&clearSelectFeature(),r}),e},getFilterItem=t=>[{btnShow:switchBtnShow.value.camera,value:t==null?void 0:t.existDevice},{btnShow:switchBtnShow.value.mobile,value:t==null?void 0:t.existMobile},{btnShow:switchBtnShow.value.waterGauge,value:t==null?void 0:t.existWaterGauge}],deleteAllShipMarkers=()=>{shipsMarkerList.forEach(t=>{t.feature&&(shipsVectorSource==null||shipsVectorSource.removeFeature(t.feature))}),clearAllInterval(),shipsMarkerList=[]},selectSingleShipMarker=t=>{var g;if(!mapInstance$6.value)return;const e=cloneDeep(selectSingleShipData.value);selectSingleShipData.value=convertShipMapData(t);const n=[selectSingleShipData.value.lon,selectSingleShipData.value.lat],r=new Feature({geometry:new Point(fromLonLat(n))});r.set("data",selectSingleShipData.value),r.setStyle(setShipStyle(!0)),shipsMarkerList.push({ship:selectSingleShipData.value,lonlat:n,feature:r}),selectShipsVectorSource==null||selectShipsVectorSource.clear(),selectShipsVectorSource=new VectorSource({features:[r]}),selectShipsLayer.value=new VectorLayer({source:selectShipsVectorSource}),shipsVectorSource&&setVisibleFeatureById(shipsVectorSource,selectSingleShipData.value.id,!0);const i=(g=shipsLayer.value)==null?void 0:g.getSource();return i&&(e&&setVisibleFeatureById(i,e.id,!0),setVisibleFeatureById(i,selectSingleShipData.value.id,!1)),mapInstance$6.value.addLayer(selectShipsLayer.value),selectShipsLayer.value.setVisible(!0),selectShipsLayer.value},setVisibleFeatureById=(t,e,n)=>{t&&t.forEachFeature(r=>{const i=r.get("data");i&&i.id===e&&r.setStyle(n?setShipStyle(!1,i.id):setBlankStyle())})},findShip=(t,e,n=!0)=>{var i,g,y,k,L;if(!t||!mapInstance$6.value)return;const r=(y=(g=(i=shipsLayer.value)==null?void 0:i.getSource())==null?void 0:g.getFeatures())==null?void 0:y.find($=>{var V;return((V=$.get("data"))==null?void 0:V.id)===t});if(r)selectedShipData.value=r.get("data");else if(e)selectedShipData.value=e;else{console.error("找不到船舶");return}if(selectedShips.value.some($=>{var V;return $.id===((V=selectedShipData.value)==null?void 0:V.id)})||selectedShips.value.push(selectedShipData.value),n&&((k=selectedShipData.value)!=null&&k.lon)&&((L=selectedShipData.value)!=null&&L.lat)){const $=mapInstance$6.value.getView(),V=new Point([selectedShipData.value.lon,selectedShipData.value.lat]);$.setCenter(transform(V.getCoordinates(),projection.data,projection.mercator));const z=$.getZoom(),j=z<mapZoom.findShipMin?mapZoom.findShip:z;$.setZoom(j)}return setTimeout(()=>{e&&selectSingleShipMarker(e)},50),r},clearSelectFeature=()=>{var t;if(selectedShipData.value&&shipsVectorSource&&selectSingleShipData.value){setVisibleFeatureById(shipsVectorSource,selectSingleShipData.value.id,!1);const e=(t=shipsLayer.value)==null?void 0:t.getSource();e&&setVisibleFeatureById(e,selectSingleShipData.value.id,!0)}selectedShipData.value=null,mapInstance$6.value&&(selectShipsVectorSource==null||selectShipsVectorSource.clear(),selectShipsLayer.value=new VectorLayer({source:selectShipsVectorSource}),mapInstance$6.value.addLayer(selectShipsLayer.value),selectShipsLayer.value.setVisible(!1))},hiddenAllShips=()=>{var t,e;(t=shipsLayer.value)==null||t.setVisible(!1),(e=largeAmountShipsLayer.value)==null||e.setVisible(!1)},switchBtnShow=vue.ref({[SWITCH_BTN.Camera]:!1,[SWITCH_BTN.Mobile]:!1,[SWITCH_BTN.WaterGauge]:!1}),switchFilterItem=(t,e)=>{switchBtnShow.value[t]=e,renderShips(allShips.value)},rerenderShip=()=>{renderShips(allShips.value)},labelAlpha=.8,pixelRatio=window.devicePixelRatio||1,labelFont=`500 ${12*pixelRatio}px Arial`,labelOutSize=2*pixelRatio,labelHeight=10*pixelRatio,fillRectRadius=(t,e,n,r,i,g,y=4)=>{t.beginPath(),t.moveTo(e+y,n),t.arcTo(e+r,n,e+r,n+y,y),t.arcTo(e+r,n+i,e+r-y,n+i,y),t.arcTo(e,n+i,e,n+i-y,y),t.arcTo(e,n,e+y,n,y),t.closePath(),t.fillStyle=g,t.fill()},getPixelFromCoordinate=t=>{if(!t||t.length===0)throw new Error("Points array is empty or invalid.");let e=1/0,n=1/0,r=-1/0,i=-1/0;for(const[g,y]of t)g<e&&(e=g),y<n&&(n=y),g>r&&(r=g),y>i&&(i=y);return[e,n,r,i]},calculatePolygonCentroid=t=>{if(!Array.isArray(t)||t.length<3)throw new Error("A polygon must have at least 3 coordinates.");let e=0,n=0,r=0;const i=t.length;for(let k=0;k<i-1;k++){const[L,$]=t[k],[V,z]=t[k+1],j=L*z-V*$;r+=j,e+=(L+V)*j,n+=($+z)*j}if(r*=.5,r===0)throw new Error("多边形面积为零");const g=e/(6*r),y=n/(6*r);return[g,y]},rotateShapeModel=(t,e)=>{const[n,r]=calculatePolygonCentroid(t),i=e*Math.PI/180,g=Math.cos(i),y=Math.sin(i);return t.map(([k,L])=>{const $=k-n,V=L-r,z=$*g-V*y+n,j=$*y+V*g+r;return[z,j]})},getTopLeftPoint=t=>[t[0],t[3]],getBottomLeftPoint=t=>[t[2],t[3]],getBottomRightPoint=t=>[t[2],t[1]],getTopRighttPoint=t=>[t[0],t[1]];function calculateBounds(t,e,n,r,i){let g,y,k,L;const $=t[0],V=t[1];switch(e){case 0:g=$+i,y=g+n,L=V-i,k=L-r;break;case 1:g=$+i,y=g+n,L=V+r/2,k=L-r;break;case 2:g=$+i,y=g+n,L=V+i+r,k=L-r;break;case 3:g=$-n/2,y=g+n,L=V+i+r,k=L-r;break;case 4:y=$,g=y-n,L=V+i+r,k=L-r;break;case 5:y=$-i,g=y-n,L=V+r/2,k=L-r;break;case 6:y=$,g=y-n,L=V-i,k=L-r;break;case 7:g=$-n/2,y=g+n,L=V-i,k=L-r}if(!(!g||!k||!y||!L))return[Math.min(g,y),Math.min(k,L),Math.max(g,y),Math.max(k,L)+1]}function calculateAnchorPoint(t,e,n=70,r=20,i=20){const g=[0,0];switch(e){case 0:g[0]=t[0]+i,g[1]=t[1]-i-r/2;break;case 1:g[0]=t[0]+i,g[1]=t[1];break;case 2:g[0]=t[0]+i,g[1]=t[1]+i+r/2;break;case 3:g[0]=t[0],g[1]=t[1]+i+r/4;break;case 4:g[0]=Math.max(t[0]-i,t[0]-n/2),g[1]=t[1]+i+r/4;break;case 5:g[0]=t[0]-i,g[1]=t[1];break;case 6:g[0]=Math.max(t[0]-i,t[0]-n/2),g[1]=t[1]-i-r/4;break;case 7:g[0]=t[0],g[1]=t[1]-i-r/4}return g}function drawLabelBody(t,e,n){if(!t)return;const{font:r,labelOutSize:i=2,labelHeight:g,center:y,text:k,leftIcon:L,shipColor:$,lineLength:V=20,selected:z}=n;t.save(),r&&(t.font=r);let j=t.measureText(k).width+4*i;(L||$)&&(j+=g+6*i),t.restore();let oe,re=20,ie=-1,ae=g+3*i;if(V)for(let le=0;le<8;le++){oe=calculateBounds(y,le,j,ae,V);let de=!1;for(let pe=0;pe<e.length;++pe){let ue=e[pe].bounds,he=[ue[0]-re,ue[1]-re,ue[2]+re,ue[3]+re];if(oe&&isOverlapping(oe,he)){de=!0;break}}if(!de){ie=le;break}}else ie=0,oe=calculateBounds(y,ie,j,ae,V);if(z&&ie===-1&&(ie=0),oe&&ie>-1){let le=getBottomLeftPoint(oe),de=getTopRighttPoint(oe);return{center:y,x:calculateAnchorPoint(y,ie,j,ae,V),l:de,r:le,bounds:oe,position:ie,name:k}}else return null}const drawText=(t,e)=>{if(!t)return;const{center:n,text:r,textColor:i,leftIcon:g,rightIcons:y,font:k}=e;t.save(),t.setTransform(1,0,0,1,0,0);let[L,$]=n;if(g){t.font=`${18*pixelRatio}px map-iconfont`;let V=getIconFont(g.icon);t.fillStyle=g.color,t.fillText(V,L+labelOutSize-3*pixelRatio,$+2.6*pixelRatio),L+=23*pixelRatio}if(y!=null&&y.length){t.font=`${12*pixelRatio}px map-iconfont`,t.fillStyle="#3370ff";const V=t.measureText(r).width+6*pixelRatio;y.forEach((z,j)=>{const oe=getIconFont(z),re=20*pixelRatio*j;t.fillText(oe,L+V+re,$)})}t.font=k||labelFont,t.fillStyle=i,t.fillText(r,L+2,$),t.restore()},drawPolygon=(t,e)=>{let{points:n,strokeColor:r,fillColor:i,shouldClosePath:g,translation:y,rotation:k,rotationCenter:L,scale:$,globalAlpha:V}=e;if(V||(V=1),n&&t){t.save(),t.beginPath(),k&&k!==0&&L==null&&t.rotate(k),y&&t.translate(y[0],y[1]),k&&(L!=null&&L.length)&&t.rotate(k),$&&t.scale($,$),t.moveTo(n[0][0],n[0][1]);for(let z=1;z<n.length;z++)t.lineTo(n[z][0],n[z][1]);g&&t.closePath(),r&&(t.strokeStyle=r,t.stroke()),i&&g&&(V&&(t.globalAlpha=V),t.fillStyle=i,t.fill()),t.restore()}},intervalIds={},drawLabel=(t,e,n)=>{var z,j,oe,re,ie,ae,le;let{center:r,text:i,color:g,textColor:y,bgColor:k,leftIcon:L,rightIcons:$,type:V}=e;if(r&&i){const de={font:labelFont,labelOutSize,labelHeight,center:r,text:i,leftIcon:L,selected:e.selected};(z=e.blinkColors)!=null&&z.length&&e.fill&&(k=e.fill,y=getForegroundColor(e.fill));const pe=drawLabelBody(t,n,de);if(pe){const{x:ue,bounds:he,l:Ce}=pe,_e=[getTopLeftPoint(he),getBottomLeftPoint(he),getBottomRightPoint(he),getTopRighttPoint(he)];n.find(kt=>kt.name===i)||n.push(pe),drawPolygon(t,{points:[r,ue],strokeColor:g,fillColor:"#000",shouldClosePath:!0,translation:void 0,rotation:void 0,rotationCenter:void 0,scale:void 0,globalAlpha:labelAlpha}),$!=null&&$.length&&$.forEach((kt,Dt)=>{_e[1][0]+=34+Dt*2,_e[2][0]+=34+Dt*2});const Ie={points:_e,strokeColor:g,fillColor:k,shouldClosePath:!0},[Oe,$e]=Ce,qe={center:[Oe,$e+labelOutSize+labelHeight+1],text:i,textColor:y,leftIcon:L,rightIcons:$,blinkColors:e.blinkColors};if(drawPolygon(t,Ie),drawText(t,qe),e!=null&&e.blinkColors&&e.blinkColors.length>0){let kt=Date.now(),Dt=0;const Ve=e.blinkColors;!!!((re=(oe=(j=selectShipsLayer.value)==null?void 0:j.getSource())==null?void 0:oe.getFeatures())!=null&&re.find(ze=>{var Ue;return((Ue=ze.get("data"))==null?void 0:Ue.id)===e.id})||(le=(ae=(ie=shipsLayer.value)==null?void 0:ie.getSource())==null?void 0:ae.getFeatures())!=null&&le.find(ze=>{var Ue;return((Ue=ze.get("data"))==null?void 0:Ue.id)===e.id}))||hiddenOrther.value?(clearInterval(intervalIds[e.id]),deleteLabelFromArray(n,i)):(intervalIds[e.id]&&clearInterval(intervalIds[e.id]),intervalIds[e.id]=window.setInterval(()=>{var Et,Pt,hn;const ze=Date.now();ze-kt>=500&&(Dt=(Dt+1)%Ve.length,kt=ze,Ie.fillColor=Ve[Dt],drawPolygon(t,Ie),qe.textColor=getForegroundColor(Ie.fillColor),drawText(t,qe));const Ue=shipsMarkerList==null?void 0:shipsMarkerList.some(Lt=>{var jt;return((jt=Lt.ship)==null?void 0:jt.id)===e.id}),Ne=(hn=(Pt=(Et=shipsLayer.value)==null?void 0:Et.getSource())==null?void 0:Pt.getFeatures())==null?void 0:hn.some(Lt=>{const jt=Lt.get("data");return(jt==null?void 0:jt.id)===e.id});!Ue&&!Ne&&(clearInterval(intervalIds[e.id]),deleteLabelFromArray(n,i))},10))}else shipLabels.value.find(Dt=>Dt.name===i)&&(clearInterval(intervalIds[e.id]),drawPolygon(t,Ie),drawText(t,qe))}}return null},clearAllInterval=()=>{Object.keys(intervalIds).forEach(t=>{clearInterval(t)})},deleteLabelFromArray=(t,e)=>{const n=t.findIndex(r=>r.name===e);n!==-1&&t.splice(n,1)},PI=Math.PI,a=6378245,ee=.006693421622965943;function transformLat(t,e){let n=-100+2*t+3*e+.2*e*e+.1*t*e+.2*Math.sqrt(Math.abs(t));return n+=(20*Math.sin(6*t*PI)+20*Math.sin(2*t*PI))*2/3,n+=(20*Math.sin(e*PI)+40*Math.sin(e/3*PI))*2/3,n+=(160*Math.sin(e/12*PI)+320*Math.sin(e*PI/30))*2/3,n}function transformLng(t,e){let n=300+t+2*e+.1*t*t+.1*t*e+.1*Math.sqrt(Math.abs(t));return n+=(20*Math.sin(6*t*PI)+20*Math.sin(2*t*PI))*2/3,n+=(20*Math.sin(t*PI)+40*Math.sin(t/3*PI))*2/3,n+=(150*Math.sin(t/12*PI)+300*Math.sin(t/30*PI))*2/3,n}function outOfChina(t,e){return!(t>73.66&&t<135.05&&e>3.86&&e<53.55)}function gcj02ToWgs84(t){const[e,n]=t.split(",").map(Number);if(outOfChina(e,n))return`${e.toFixed(6)}, ${n.toFixed(6)}`;{let r=transformLat(e-105,n-35),i=transformLng(e-105,n-35);const g=n/180*PI;let y=Math.sin(g);y=1-ee*y*y;const k=Math.sqrt(y);r=r*180/(a*(1-ee)/(y*k)*PI),i=i*180/(a/k*Math.cos(g)*PI);const L=n+r,$=e+i;return`${(e*2-$).toFixed(6)}, ${(n*2-L).toFixed(6)}`}}function calculateCirclePoints(t,e){const n=fromLonLat(t),r=e*1e3,i=[n[0]-r,n[1]-r,n[0]+r,n[1]+r],g=transformExtent(i,projection.mercator,projection.data);return{leftTopPoint:{lng:g[0],lat:g[3]},rightTopPoint:{lng:g[2],lat:g[3]},rightBottomPoint:{lng:g[2],lat:g[1]},leftBottomPoint:{lng:g[0],lat:g[1]}}}const equatorialCircumference=2003750834e-2;function lonLatToMercator(t){const e=t[0]*equatorialCircumference/180;let n=Math.log(Math.tan((90+t[1])*Math.PI/360))/(Math.PI/180);return n=n*equatorialCircumference/180,[e,n]}function mercatorToLonLat(t,e="lonlat"){const n={lon:0,lat:0},r=t[0]/equatorialCircumference*180;let i=t[1]/equatorialCircumference*180;return i=180/Math.PI*(2*Math.atan(Math.exp(i*Math.PI/180))-Math.PI/2),n.lon=r,n.lat=i,e==="lonlat"?n:[r,i]}function calculateBoundingBox(t){let e=1/0,n=-1/0,r=1/0,i=-1/0;t.forEach(ie=>{const[ae,le]=ie;e=Math.min(e,le),n=Math.max(n,le),r=Math.min(r,ae),i=Math.max(i,ae)});const g=i-r,y=n-e,k=Math.max(g,y),L=(r+i)/2,$=(e+n)/2,V=k/2,z=L-V,j=L+V,oe=$-V,re=$+V;return[j,oe,z,re]}const transformUtils={gcj02ToWgs84,calculateCirclePoints,lonLatToMercator,mercatorToLonLat,calculateBoundingBox},mapInstance$5=vue.ref(),renderTrackStyleSetInstance=t=>mapInstance$5.value=t,stopIcon="",stopColor="#E31818",slowIcon="",slowColor="#1890FF",dropletsIcon="",trackList$1=vue.ref([]);let animationFeature;const renderTrackLine=(t,e,n)=>{var g,y,k;const r=t[e];if(!r)return;allTracks.value[e]=r,trackList$1.value=[],trackList$1.value=r.map((L,$)=>(L.center=[L.lon,L.lat],L.centerPoint=transformUtils.lonLatToMercator(L.center),L.id=e,L.index=$,L.time=hooks(L.createdAt).format("YYYY-MM-DD HH:mm:ss"),L));const i=trackList$1.value.map(L=>L.centerPoint);if(i.length>=2){const L=new LineString(i),$=new Feature({geometry:L});$.setStyle(new Style({stroke:new Stroke({color:n,width:2})})),$.setId(e),$.set("type","line"),(y=(g=shipTrackVectorLayer.value)==null?void 0:g.getSource())==null||y.clear(),shipTrackLineFeatures.value=[];const V=shipTrackLineFeatures.value.findIndex(j=>j.getId()===e);V>=0?shipTrackLineFeatures.value[V]=$:shipTrackLineFeatures.value.push($);const z=createAnimatedIconFeature(n,i);trackLineVectorSource.value=new VectorSource({features:[...shipTrackLineFeatures.value]}),animationFeature=z,console.log(animationFeature),shipTrackVectorLayer.value=new VectorLayer({source:trackLineVectorSource.value,zIndex:102}),renderPoint(n),(k=mapInstance$5.value)==null||k.addLayer(shipTrackVectorLayer.value)}},handlePlay=(t,e)=>{const n=allTracks.value[String(t)];playAnimation(n.map(r=>[r.lon,r.lat]),e)},removeShipTrackLineFeatureByIndex=(t,e)=>{t>=0&&t<shipTrackLineFeatures.value.length&&(shipTrackLineFeatures.value.splice(t,1),delete allTracks.value[e]),trackLineVectorSource.value=new VectorSource({features:[...shipTrackLineFeatures.value]}),shipTrackVectorLayer.value&&shipTrackVectorLayer.value.setSource(trackLineVectorSource.value)},createAnimatedIconFeature=(t,e)=>{const n=new Feature({geometry:new Point(fromLonLat([e[0][0],e[0][1]]))}),r=new Style({text:new Text({font:"700 14px map-iconfont",text:getIconFont(""),fill:new Fill({color:t})})});return n.setStyle(r),n},geoMarkerStyle=new Style({text:new Text({font:"700 20px map-iconfont",text:getIconFont(""),fill:new Fill({color:"#ff0000"}),rotation:0})});let polyline,linePath,startMarker,position,geoMarker,vectorLayer;const trackAnimating=vue.ref(!1);let distance=0,lastTime=Date.now(),moveFeatureHandler=null;const moveFeature=(t,e)=>{var z,j,oe;const n=Number(50*e),r=((z=t.frameState)==null?void 0:z.time)??Date.now(),i=r-lastTime;if(distance=(distance+n*i/1e6)%2,lastTime=r,distance>=1){stopAnimation();return}const g=linePath.getCoordinateAt(distance>1?2-distance:distance),y=linePath.getCoordinateAt(distance>1?distance-.01:distance),k=linePath.getCoordinateAt(distance>1?2-distance:distance+.01),$=getRotation(transformUtils.mercatorToLonLat(y,"array"),transformUtils.mercatorToLonLat(k,"array"))*Math.PI/180;(j=geoMarkerStyle.getText())==null||j.setRotation($),position.setCoordinates(g);const V=getVectorContext(t);V.context_.save(),V.setStyle(geoMarkerStyle),V.drawGeometry(position),V.context_.restore(),(oe=mapInstance$5.value)==null||oe.render()},startAnimation=()=>{var t;trackAnimating.value=!0,showTrackAnimatMarker.value=!0,lastTime=Date.now(),distance=0,position=((t=startMarker.getGeometry())==null?void 0:t.clone())||new Point([0,0]),moveFeatureHandler&&(vectorLayer==null||vectorLayer.on("postrender",moveFeatureHandler)),geoMarker==null||geoMarker.setGeometry(void 0)},stopAnimation=()=>{var t;trackAnimating.value&&(trackAnimating.value=!1,geoMarker==null||geoMarker.setGeometry(void 0),moveFeatureHandler&&vectorLayer&&vectorLayer.un("postrender",moveFeatureHandler),vectorLayer&&((t=mapInstance$5.value)==null||t.removeLayer(vectorLayer)),vectorLayer=null,geoMarker=null)},playAnimation=(t,e)=>{var r;trackAnimating.value&&stopAnimation(),polyline=new Polyline({factor:1e6}).writeGeometry(new LineString(t)),linePath=new Polyline({factor:1e6}).readGeometry(polyline,{dataProjection:projection.data,featureProjection:projection.mercator}),startMarker=new Feature({type:"icon",geometry:new Point(linePath.getFirstCoordinate())});const n=startMarker.getGeometry();position=n?n.clone():new Point([0,0]),geoMarker=new Feature({type:"geoMarker",style:geoMarkerStyle,geometry:position}),vectorLayer=new VectorLayer({source:new VectorSource({features:[geoMarker]})}),(r=mapInstance$5.value)==null||r.addLayer(vectorLayer),moveFeatureHandler=i=>moveFeature(i,e),startAnimation()},renderPoint=t=>{if(!mapInstance$5.value)return;const e=trackList$1.value||[];if(!(e&&e.length>1))return[];const n={16:24,17:15,default:4},r=[],i=e.length;for(let k=0;k<i;k++){e[k].index=k;const L=mapInstance$5.value.getPixelFromCoordinate(e[k].centerPoint);if(L){let $=L.concat(L);$=adjustBounds($,[20,20]);const V=mapInstance$5.value.getView().getZoom();if(!V)return;if(V>15){const j=n[V]||n.default;$=adjustBounds($,[j,j])}let z=!0;if(e[k].state!=="0"){for(let j=0;j<r.length;j++)if(isOverlapping($,r[j].bounds)){z=!1;break}}z&&(e[k].bounds=$,r.push(e[k]))}}const g=getIconStyle(stopIcon),y=getIconStyle(slowIcon);r.forEach((k,L)=>{var z,j;const $=new Feature({geometry:new Point(k.centerPoint)});$.set("type","track_point"),$.set("data",k),$.setStyle([new Style({image:new CircleStyle({stroke:new Stroke({color:"rgba(0, 0, 0, 0.01)",width:20}),radius:3})}),new Style({image:new CircleStyle({fill:new Fill({color:t}),stroke:new Stroke({color:"#fff",width:2}),radius:3})})]),trackLineVectorSource.value.addFeature($);const V=new Feature({geometry:new Point(fromLonLat(k.center))});if(V.set("type","track_label"),V.set("track_label_index",L),V.setStyle(setTrackLabelStyle(k,t)),trackLineVectorSource.value.addFeature(V),typeof k=="object"&&k.hasOwnProperty("state")){const oe=new Feature({geometry:new Point(k.centerPoint)});oe.set("type","track_icon");const re=new Style({text:new Text({font:"Normal 22px map-iconfont",text:getIconFont(dropletsIcon),offsetY:-10}),zIndex:99}),ie=[];Number(k.state)===0?((z=re.getText())==null||z.setFill(new Fill({color:stopColor})),ie.push(g)):Number(k.state)===1&&((j=re.getText())==null||j.setFill(new Fill({color:slowColor})),ie.push(y)),ie.push(re),oe.setStyle(ie),trackLineVectorSource.value.addFeature(oe)}}),renderArrow(r,t),renderIconPoint()},renderArrow=(t,e)=>{const n=t.length;n||(t.push(trackList$1.value[0]),t.push(trackList$1.value[trackList$1.value.length-1]));for(let r=0;r<n-1;r++){let i;const g=t[r],y=(t[r+1].index+g.index)/2;if(y%2===0)i=trackList$1.value[y].centerPoint;else{const k=trackList$1.value[Math.floor(y)],L=trackList$1.value[Math.ceil(y)];if(k&&L){const[$,V]=k.centerPoint,[z,j]=L.centerPoint;i=[($+z)/2,(V+j)/2]}}if(i){const k=new Feature({geometry:new Point(i)});k.set("type","track_arrow"),k.setStyle(new Style({text:new Text({font:"700 14px map-iconfont",text:getIconFont(""),fill:new Fill({color:e}),rotation:getRotation(t[r].center,t[r+1].center)*(Math.PI/180)})})),trackLineVectorSource.value.addFeature(k)}}},renderIconPoint=()=>{const t="",e="#fcdc3f",n="#ff0000";(trackList$1.value.length<2?[trackList$1.value[0]]:[trackList$1.value[0],trackList$1.value[trackList$1.value.length-1]]).forEach(i=>{const g=new Feature({geometry:new Point(i.centerPoint)});g.set("type","track_begin"),g.set("data",i);const y=i.index===0&&trackList$1.value.length>=2?e:n;g.setStyle(new Style({text:new Text({font:"Normal 14px map-iconfont",text:getIconFont(t),fill:new Fill({color:y})}),zIndex:101})),trackLineVectorSource.value.addFeature(g)})},setTrackLabelStyle=(t,e)=>new Style({renderer:(n,r)=>{const i=r.context,k={id:t.id||"",center:n,text:t.time,color:e,textColor:"#000",bgColor:"rgba(255,255,255,.8)",selected:!0,type:"TrackTime"};drawLabel(i,k,trackLabels.value)}}),mapInstance$4=vue.ref(),renderCustomOverlaySetInstance=t=>mapInstance$4.value=t,drawCustomContent=(t,e,n,r="top-left",i=!1)=>{var V,z;if(!e||!mapInstance$4.value)return;document.querySelectorAll(".truck-custom-content").forEach(j=>{var oe;return(oe=j.parentNode)==null?void 0:oe.removeChild(j)});const g=document.createElement("div");g.innerHTML=n;const y=new Overlay({element:g,position:e,positioning:r,stopEvent:i});if(i){let j=!1,oe=[0,0],re=[0,0],ie=0,ae=0;g.addEventListener("mousedown",function(le){var pe;j=!0,ie=le.clientX,ae=le.clientY;const de=(pe=mapInstance$4.value)==null?void 0:pe.getCoordinateFromPixel([le.clientX-200,le.clientY-200]);de&&(oe=de),re=[le.clientX-g.getBoundingClientRect().left+160,le.clientY-g.getBoundingClientRect().top+84],le.preventDefault(),console.log(t,ie,ae)}),document.addEventListener("mousemove",function(le){var de;if(j){const pe=(de=mapInstance$4.value)==null?void 0:de.getCoordinateFromPixel([le.clientX-re[0],le.clientY-re[1]]),ue=pe[0]-oe[0],he=pe[1]-oe[1];y.setPosition([oe[0]+ue,oe[1]+he])}}),document.addEventListener("mouseup",function(){j=!1})}(V=mapInstance$4.value)==null||V.addOverlay(y);const k=g.querySelector(".close-button");k&&k.addEventListener("click",()=>{var j,oe;(j=mapInstance$4.value)==null||j.removeOverlay(y),(oe=g.parentNode)==null||oe.removeChild(g)});const L=JSON.parse(JSON.stringify(e)),$=(z=mapInstance$4.value)==null?void 0:z.getCoordinateFromPixel(L);return y.setPosition($),y},mapInstance$3=vue.ref(),renderTrackSetInstance=t=>mapInstance$3.value=t,showTracks=vue.ref([]),trackList=vue.ref([]);vue.ref(null);const trackId=vue.ref(""),cursor=vue.ref(0),renderTrack=(t,e,n,r,i="ship")=>{var V;if(console.log(i),vue.nextTick(()=>{hiddenAllShips()}).then(z=>{}),(e==null?void 0:e.length)<2){((V=showTracks.value)==null?void 0:V.findIndex(z=>z.id===t))<0&&showTracks.value.push({id:t,length:""});return}const g={};e.forEach(z=>{z.state?z.state=Number(z.state):delete z.state}),trackId.value=t,g[t]=e,trackList.value=e;const y=["#ff0000","#00ff00","#0079ff","#ffa500","#800080","#008080","#ffc0cb","#800000","#000080","#808000"],k=g[t].map(z=>transform([z.lon,z.lat],projection.data,projection.mercator)),L=new LineString(k),$=formatUtils.formatLength(L,r)||"--";vue.nextTick(()=>{var j,oe;const z=(j=showTracks.value)==null?void 0:j.findIndex(re=>re.id===t);z<0?showTracks.value.push({id:t,length:$}):showTracks.value[z].length=$,++cursor.value,cursor.value>y.length&&(cursor.value=0),renderTrackLine(g,t,n),vue.nextTick(()=>{resetTrackView(t)}).then(()=>{}),(oe=mapInstance$3.value)==null||oe.on("moveend",()=>{showTrackLayer.value&&(trackLabels.value=[],renderTrackLine(g,t,n))}),renderTrackPointPopup()}).then(()=>{})},renderTrackPointPopup=()=>{var e;const t=vue.ref(null);(e=mapInstance$3.value)==null||e.on("pointermove",n=>{var i,g,y,k;t.value&&((i=mapInstance$3.value)==null||i.removeOverlay(t.value));const r=(g=mapInstance$3.value)==null?void 0:g.forEachFeatureAtPixel(n.pixel,L=>L);if(r){const L=r.get("data");if(!(L!=null&&L.time))return;let $="";L!=null&&L.stayTime&&($=`
|
|
656
656
|
<div class="item w-100">
|
|
657
657
|
<div class="item-label">停泊时间约</div>
|
|
658
658
|
<div class="item-item">${formatMinutesToDDHHMM(Number(L.stayTime))}</div>
|
|
@@ -688,7 +688,7 @@ void main(void) {
|
|
|
688
688
|
<div class="item-item">${L.time}</div>
|
|
689
689
|
</div>
|
|
690
690
|
${$??$}
|
|
691
|
-
</div>`,z=(y=mapInstance$3.value)==null?void 0:y.getPixelFromCoordinate(n.coordinate);if(z){const j=drawCustomContent(L.time,z,V,"top-left");j&&(t.value=j)}}else t.value&&((k=mapInstance$3.value)==null||k.removeOverlay(t.value))})},removeAllTrackLayer=()=>{var t;showTracks.value=[],(t=trackLineVectorSource.value)==null||t.clear()},playTrack=(t,e)=>{handlePlay(String(t),e)},resetTrackView=t=>{var i;const e=mapInstance$3.value.getView(),n=t?shipTrackLineFeatures.value.find(g=>g.getId()===t):shipTrackLineFeatures.value[0];if(!n)return;const r=(i=n==null?void 0:n.getGeometry())==null?void 0:i.getExtent();if(r!=null&&r.length)try{const g=buffer(r,Math.max(r[2]-r[0],r[3]-r[1])*.02);e.fit(g)}catch(g){console.log(g)}},formatMinutesToDDHHMM=t=>{const e=hooks.duration(t,"minutes"),n=Math.floor(e.asDays()),r=e.hours(),i=e.minutes();let g=`${String(i).padStart(2,"0")}分`;return r!==0&&(g=`${String(r).padStart(2,"0")}时${g}`),n!==0&&(g=`${String(n).padStart(2,"0")}天${g}`),g},_hoisted_1$9={key:0,class:"more-tool-panel"},_hoisted_2$5={class:"switch-buttons"},_hoisted_3$4={class:"tool-components"},_sfc_main$b=vue.defineComponent({__name:"toolPanel",props:{vehicleMode:{},viewMode:{},disableGreenDot:{type:Boolean},showTrackLayer:{type:Boolean},mapTileMode:{}},emits:["switchGreenDot","switchMapTile"],setup(t,{emit:e}){var oe,re;const n=vue.inject("mapInstance"),r=t,i=e,g=vue.ref(((re=(oe=n.value)==null?void 0:oe.getView())==null?void 0:re.getZoom())||mapZoom.default),y=vue.ref(!1),k=vue.ref(null),L=vue.ref(!0),$=()=>{r.disableGreenDot||g.value>=mapZoom.shipGreenDotMax||(L.value=!L.value,i("switchGreenDot",L.value))},V=()=>{i("switchMapTile",r.mapTileMode===BaseMapType.vector?BaseMapType.satellite:BaseMapType.vector)},z=()=>{var ie,ae;y.value?(ie=k.value)==null||ie.removeInteraction():(ae=k.value)==null||ae.addInteraction(),y.value=!y.value},j=()=>{var ie;(ie=k.value)==null||ie.removeInteraction(),y.value=!1};return vue.onMounted(()=>{vue.nextTick(()=>{var ie;(ie=n.value)==null||ie.on("moveend",()=>{var le,de;const ae=(de=(le=n.value)==null?void 0:le.getView())==null?void 0:de.getZoom();ae&&(g.value=ae)})})}),(ie,ae)=>(vue.openBlock(),vue.createElementBlock(vue.Fragment,null,[vue.createElementVNode("div",{class:vue.normalizeClass(`tool-panel ${ie.viewMode}`)},[ie.viewMode==="WxMiniprogram"?(vue.openBlock(),vue.createElementBlock("div",_hoisted_1$9,[vue.createElementVNode("div",_hoisted_2$5,[ie.vehicleMode==="ship"?(vue.openBlock(),vue.createElementBlock("div",{key:0,class:vue.normalizeClass(["switch-btn",`${y.value&&"active"}`]),onClick:z},ae[5]||(ae[5]=[vue.createElementVNode("i",{class:"map-iconfont icon-measure"},null,-1),vue.createElementVNode("div",{class:"button-text"},"测距",-1)]),2)):vue.createCommentVNode("",!0),ie.vehicleMode==="ship"?(vue.openBlock(),vue.createElementBlock("div",{key:1,class:vue.normalizeClass(`switch-btn ${L.value&&"active"} ${(ie.disableGreenDot||g.value>=vue.unref(mapZoom).shipGreenDotMax)&&"disabled"}`),onClick:$},ae[6]||(ae[6]=[vue.createElementVNode("i",{class:"map-iconfont icon-ship"},null,-1),vue.createElementVNode("div",{class:"button-text"},"绿点",-1)]),2)):vue.createCommentVNode("",!0),ie.vehicleMode==="ship"?(vue.openBlock(),vue.createElementBlock("div",{key:2,class:vue.normalizeClass(`switch-btn ${ie.mapTileMode===vue.unref(BaseMapType).satellite&&"active"}`),onClick:ae[0]||(ae[0]=le=>V())},ae[7]||(ae[7]=[vue.createElementVNode("i",{class:"map-iconfont icon-space"},null,-1),vue.createElementVNode("div",{class:"button-text"},"图层",-1)]),2)):vue.createCommentVNode("",!0),ie.vehicleMode==="truck"?(vue.openBlock(),vue.createElementBlock("div",{key:3,class:vue.normalizeClass(`switch-btn ${ie.mapTileMode===vue.unref(BaseMapType).satellite&&"active"}`),onClick:ae[1]||(ae[1]=le=>V())},ae[8]||(ae[8]=[vue.createElementVNode("i",{class:"map-iconfont icon-space"},null,-1),vue.createElementVNode("div",{class:"button-text"},"卫星",-1)]),2)):vue.createCommentVNode("",!0),ie.showTrackLayer?(vue.openBlock(),vue.createElementBlock(vue.Fragment,{key:4},[vue.createElementVNode("div",{class:"switch-btn multiple",onClick:ae[2]||(ae[2]=le=>vue.unref(playTrack)(vue.unref(currentTrackId),1))},ae[9]||(ae[9]=[vue.createElementVNode("i",{class:"map-iconfont icon-play"},null,-1),vue.createElementVNode("div",{class:"button-text"},"播放轨迹",-1)])),vue.createElementVNode("div",{class:"switch-btn multiple",onClick:ae[3]||(ae[3]=le=>vue.unref(resetTrackView)())},ae[10]||(ae[10]=[vue.createElementVNode("i",{class:"map-iconfont icon-center"},null,-1),vue.createElementVNode("div",{class:"button-text"},"轨迹居中",-1)]))],64)):vue.createCommentVNode("",!0),vue.renderSlot(ie.$slots,"toolPanel",{},void 0,!0)])])):(vue.openBlock(),vue.createElementBlock(vue.Fragment,{key:1},[ie.vehicleMode==="ship"?(vue.openBlock(),vue.createElementBlock(vue.Fragment,{key:0},[vue.createElementVNode("div",{class:vue.normalizeClass(["switch-btn",`${y.value&&"active"}`]),onClick:z},ae[11]||(ae[11]=[vue.createElementVNode("i",{class:"map-iconfont icon-measure"},null,-1),vue.createElementVNode("div",{class:"button-text"},"测距",-1)]),2),ie.vehicleMode==="ship"?(vue.openBlock(),vue.createElementBlock("div",{key:0,class:vue.normalizeClass(`switch-btn ${L.value&&"active"} ${(ie.disableGreenDot||g.value>=vue.unref(mapZoom).shipGreenDotMax)&&"disabled"}`),onClick:$},ae[12]||(ae[12]=[vue.createElementVNode("i",{class:"map-iconfont icon-ship"},null,-1),vue.createElementVNode("div",{class:"button-text"},"绿点",-1)]),2)):vue.createCommentVNode("",!0)],64)):vue.createCommentVNode("",!0),vue.createElementVNode("div",{class:vue.normalizeClass(["switch-btn",{active:ie.mapTileMode===vue.unref(BaseMapType).satellite}]),onClick:V},ae[13]||(ae[13]=[vue.createElementVNode("i",{class:"map-iconfont icon-space"},null,-1),vue.createElementVNode("div",{class:"button-text"},"卫星",-1)]),2)],64))],2),vue.createElementVNode("div",_hoisted_3$4,[y.value?(vue.openBlock(),vue.createBlock(Measure,{key:0,ref_key:"measureRef",ref:k,visible:y.value,"onUpdate:visible":ae[4]||(ae[4]=le=>y.value=le),onClose:j,"view-mode":ie.viewMode},null,8,["visible","view-mode"])):vue.createCommentVNode("",!0)])],64))}}),ToolPanel=_export_sfc(_sfc_main$b,[["__scopeId","data-v-458187f4"]]),UNITS_PROP="units",LEADING_DIGITS=[1,2,5],DEFAULT_DPI=25.4/.28;let ScaleLine$1=class extends Control{constructor(e){e=e||{};const n=document.createElement("div");n.style.pointerEvents="none",super({element:n,render:e.render,target:e.target}),this.on,this.once,this.un;const r=e.className!==void 0?e.className:e.bar?"ol-scale-bar":"ol-scale-line";this.innerElement_=document.createElement("div"),this.innerElement_.className=r+"-inner",this.element.className=r+" "+CLASS_UNSELECTABLE,this.element.appendChild(this.innerElement_),this.viewState_=null,this.minWidth_=e.minWidth!==void 0?e.minWidth:64,this.maxWidth_=e.maxWidth,this.renderedVisible_=!1,this.renderedWidth_=void 0,this.renderedHTML_="",this.addChangeListener(UNITS_PROP,this.handleUnitsChanged_),this.setUnits(e.units||"metric"),this.scaleBar_=e.bar||!1,this.scaleBarSteps_=e.steps||4,this.scaleBarText_=e.text||!1,this.dpi_=e.dpi||void 0}getUnits(){return this.get(UNITS_PROP)}handleUnitsChanged_(){this.updateElement_()}setUnits(e){this.set(UNITS_PROP,e)}setDpi(e){this.dpi_=e}updateElement_(){const e=this.viewState_;if(!e){this.renderedVisible_&&(this.element.style.display="none",this.renderedVisible_=!1);return}const n=e.center,r=e.projection,i=this.getUnits(),g=i=="degrees"?"degrees":"m";let y=getPointResolution(r,e.resolution,n,g);const k=this.minWidth_*(this.dpi_||DEFAULT_DPI)/DEFAULT_DPI,L=this.maxWidth_!==void 0?this.maxWidth_*(this.dpi_||DEFAULT_DPI)/DEFAULT_DPI:void 0;let $=k*y,V="";if(i=="degrees"){const pe=METERS_PER_UNIT$1.degrees;$*=pe,$<pe/60?(V="″",y*=3600):$<pe?(V="′",y*=60):V="°"}else if(i=="imperial")$<.9144?(V="in",y/=.0254):$<1609.344?(V="ft",y/=.3048):(V="mi",y/=1609.344);else if(i=="nautical")y/=1852,V="NM";else if(i=="metric")$<1e-6?(V="nm",y*=1e9):$<.001?(V="μm",y*=1e6):$<1?(V="mm",y*=1e3):$<1e3?V="m":(V="km",y/=1e3);else if(i=="us")$<.9144?(V="in",y*=39.37):$<1609.344?(V="ft",y/=.30480061):(V="mi",y/=1609.3472);else throw new Error("Invalid units");let z=3*Math.floor(Math.log(k*y)/Math.log(10)),j,oe,re,ie,ae,le;for(;;){re=Math.floor(z/3);const pe=Math.pow(10,re);if(j=LEADING_DIGITS[(z%3+3)%3]*pe,oe=Math.round(j/y),isNaN(oe)){this.element.style.display="none",this.renderedVisible_=!1;return}if(L!==void 0&&oe>=L){j=ie,oe=ae,re=le;break}else if(oe>=k)break;ie=j,ae=oe,le=re,++z}const de=this.scaleBar_?this.createScaleBar(oe,j,V):j.toFixed(re<0?-re:0)+" "+V;this.renderedHTML_!=de&&(this.innerElement_.innerHTML=de,this.renderedHTML_=de),this.renderedWidth_!=oe&&(this.innerElement_.style.width=oe+"px",this.renderedWidth_=oe),this.renderedVisible_||(this.element.style.display="",this.renderedVisible_=!0)}createScaleBar(e,n,r){const i=this.getScaleForResolution(),g=i<1?Math.round(1/i).toLocaleString()+" : 1":"1 : "+Math.round(i).toLocaleString(),y=this.scaleBarSteps_,k=e/y,L=[this.createMarker("absolute")];for(let V=0;V<y;++V){const z=V%2===0?"ol-scale-singlebar-odd":"ol-scale-singlebar-even";L.push(`<div><div class="ol-scale-singlebar ${z}" style="width: ${k}px;"></div>`+this.createMarker("relative")+(V%2===0||y===2?this.createStepText(V,e,!1,n,r):"")+"</div>")}return L.push(this.createStepText(y,e,!0,n,r)),(this.scaleBarText_?`<div class="ol-scale-text" style="width: ${e}px;">`+g+"</div>":"")+L.join("")}createMarker(e){return`<div class="ol-scale-step-marker" style="position: ${e}; top: ${e==="absolute"?3:-10}px;"></div>`}createStepText(e,n,r,i,g){const k=(e===0?0:Math.round(i/this.scaleBarSteps_*e*100)/100)+(e===0?"":" "+g),L=e===0?-3:n/this.scaleBarSteps_*-1,$=e===0?0:n/this.scaleBarSteps_*2;return`<div class="ol-scale-step-text" style="margin-left: ${L}px;text-align: ${e===0?"left":"center"};min-width: ${$}px;left: ${r?n+"px":"unset"};">`+k+"</div>"}getScaleForResolution(){const e=getPointResolution(this.viewState_.projection,this.viewState_.resolution,this.viewState_.center,"m"),n=this.dpi_||DEFAULT_DPI,r=1e3/25.4;return e*r*n}render(e){const n=e.frameState;n?this.viewState_=n.viewState:this.viewState_=null,this.updateElement_()}};const _hoisted_1$8={id:"scale-line-container"},_sfc_main$a=vue.defineComponent({__name:"scaleLine",setup(t,{expose:e}){const n=vue.inject("mapInstance");return e({setScaleLine:i=>{var k;i||(i="metric");const g=new ScaleLine$1({units:i}),y=document.getElementById("scale-line-container");y&&(g.setTarget(y),(k=n==null?void 0:n.value)==null||k.addControl(g))}}),(i,g)=>(vue.openBlock(),vue.createElementBlock("div",_hoisted_1$8))}}),ScaleLine=_export_sfc(_sfc_main$a,[["__scopeId","data-v-d666f80d"]]),_hoisted_1$7={class:"zoom"},_sfc_main$9=vue.defineComponent({__name:"zoomControl",props:{map:{type:Object}},setup(t){const e=vue.inject("mapInstance"),n=()=>{if(!e.value)return;const i=e.value.getView(),g=i.getZoom();g&&i.setZoom(g+1)},r=()=>{if(!e.value)return;const i=e.value.getView(),g=i.getZoom();g&&i.setZoom(g-1)};return(i,g)=>(vue.openBlock(),vue.createElementBlock("div",_hoisted_1$7,[vue.createElementVNode("div",{onClick:n,class:"button big-button"},"+"),vue.createElementVNode("div",{onClick:r,class:"button small-button"},"-")]))}}),ZoomControl=_export_sfc(_sfc_main$9,[["__scopeId","data-v-f6b3b87d"]]),_hoisted_1$6={class:"copyright"},_hoisted_2$4=["src","width"],_sfc_main$8=vue.defineComponent({__name:"copyright",props:{type:{default:COPY_RIGHT_TYPE.HORIZONTAL}},setup(t){vue.useCssVars(g=>({"4bfada56":i.value}));const e=t,n=vue.computed(()=>e.type===COPY_RIGHT_TYPE.HORIZONTAL?"map/tdt-copyright-h.svg":`map/tdt-copyright-v${mapTile==="satellite"?"-w":""}.svg`),r=vue.computed(()=>e.type===COPY_RIGHT_TYPE.HORIZONTAL?"400px":"168px"),i=vue.computed(()=>e.type===COPY_RIGHT_TYPE.HORIZONTAL?"auto auto 0 5px":"0 auto auto 5px");return(g,y)=>(vue.openBlock(),vue.createElementBlock("div",_hoisted_1$6,[vue.createElementVNode("img",{src:vue.unref(CDN_URL)+n.value,width:r.value,class:"logo",alt:""},null,8,_hoisted_2$4)]))}}),Copyright=_export_sfc(_sfc_main$8,[["__scopeId","data-v-c49d4dee"]]),TileEventType={TILELOADSTART:"tileloadstart",TILELOADEND:"tileloadend",TILELOADERROR:"tileloaderror"},tmpTileCoord=[0,0,0],DECIMALS=5;class TileGrid{constructor(e){this.minZoom=e.minZoom!==void 0?e.minZoom:0,this.resolutions_=e.resolutions,assert(isSorted(this.resolutions_,(i,g)=>g-i),"`resolutions` must be sorted in descending order");let n;if(!e.origins){for(let i=0,g=this.resolutions_.length-1;i<g;++i)if(!n)n=this.resolutions_[i]/this.resolutions_[i+1];else if(this.resolutions_[i]/this.resolutions_[i+1]!==n){n=void 0;break}}this.zoomFactor_=n,this.maxZoom=this.resolutions_.length-1,this.origin_=e.origin!==void 0?e.origin:null,this.origins_=null,e.origins!==void 0&&(this.origins_=e.origins,assert(this.origins_.length==this.resolutions_.length,"Number of `origins` and `resolutions` must be equal"));const r=e.extent;r!==void 0&&!this.origin_&&!this.origins_&&(this.origin_=getTopLeft(r)),assert(!this.origin_&&this.origins_||this.origin_&&!this.origins_,"Either `origin` or `origins` must be configured, never both"),this.tileSizes_=null,e.tileSizes!==void 0&&(this.tileSizes_=e.tileSizes,assert(this.tileSizes_.length==this.resolutions_.length,"Number of `tileSizes` and `resolutions` must be equal")),this.tileSize_=e.tileSize!==void 0?e.tileSize:this.tileSizes_?null:DEFAULT_TILE_SIZE,assert(!this.tileSize_&&this.tileSizes_||this.tileSize_&&!this.tileSizes_,"Either `tileSize` or `tileSizes` must be configured, never both"),this.extent_=r!==void 0?r:null,this.fullTileRanges_=null,this.tmpSize_=[0,0],this.tmpExtent_=[0,0,0,0],e.sizes!==void 0?this.fullTileRanges_=e.sizes.map((i,g)=>{const y=new TileRange(Math.min(0,i[0]),Math.max(i[0]-1,-1),Math.min(0,i[1]),Math.max(i[1]-1,-1));if(r){const k=this.getTileRangeForExtentAndZ(r,g);y.minX=Math.max(k.minX,y.minX),y.maxX=Math.min(k.maxX,y.maxX),y.minY=Math.max(k.minY,y.minY),y.maxY=Math.min(k.maxY,y.maxY)}return y}):r&&this.calculateTileRanges_(r)}forEachTileCoord(e,n,r){const i=this.getTileRangeForExtentAndZ(e,n);for(let g=i.minX,y=i.maxX;g<=y;++g)for(let k=i.minY,L=i.maxY;k<=L;++k)r([n,g,k])}forEachTileCoordParentTileRange(e,n,r,i){let g,y,k,L=null,$=e[0]-1;for(this.zoomFactor_===2?(y=e[1],k=e[2]):L=this.getTileCoordExtent(e,i);$>=this.minZoom;){if(y!==void 0&&k!==void 0?(y=Math.floor(y/2),k=Math.floor(k/2),g=createOrUpdate(y,y,k,k,r)):g=this.getTileRangeForExtentAndZ(L,$,r),n($,g))return!0;--$}return!1}getExtent(){return this.extent_}getMaxZoom(){return this.maxZoom}getMinZoom(){return this.minZoom}getOrigin(e){return this.origin_?this.origin_:this.origins_[e]}getResolution(e){return this.resolutions_[e]}getResolutions(){return this.resolutions_}getTileCoordChildTileRange(e,n,r){if(e[0]<this.maxZoom){if(this.zoomFactor_===2){const g=e[1]*2,y=e[2]*2;return createOrUpdate(g,g+1,y,y+1,n)}const i=this.getTileCoordExtent(e,r||this.tmpExtent_);return this.getTileRangeForExtentAndZ(i,e[0]+1,n)}return null}getTileRangeForTileCoordAndZ(e,n,r){if(n>this.maxZoom||n<this.minZoom)return null;const i=e[0],g=e[1],y=e[2];if(n===i)return createOrUpdate(g,y,g,y,r);if(this.zoomFactor_){const L=Math.pow(this.zoomFactor_,n-i),$=Math.floor(g*L),V=Math.floor(y*L);if(n<i)return createOrUpdate($,$,V,V,r);const z=Math.floor(L*(g+1))-1,j=Math.floor(L*(y+1))-1;return createOrUpdate($,z,V,j,r)}const k=this.getTileCoordExtent(e,this.tmpExtent_);return this.getTileRangeForExtentAndZ(k,n,r)}getTileRangeForExtentAndZ(e,n,r){this.getTileCoordForXYAndZ_(e[0],e[3],n,!1,tmpTileCoord);const i=tmpTileCoord[1],g=tmpTileCoord[2];this.getTileCoordForXYAndZ_(e[2],e[1],n,!0,tmpTileCoord);const y=tmpTileCoord[1],k=tmpTileCoord[2];return createOrUpdate(i,y,g,k,r)}getTileCoordCenter(e){const n=this.getOrigin(e[0]),r=this.getResolution(e[0]),i=toSize(this.getTileSize(e[0]),this.tmpSize_);return[n[0]+(e[1]+.5)*i[0]*r,n[1]-(e[2]+.5)*i[1]*r]}getTileCoordExtent(e,n){const r=this.getOrigin(e[0]),i=this.getResolution(e[0]),g=toSize(this.getTileSize(e[0]),this.tmpSize_),y=r[0]+e[1]*g[0]*i,k=r[1]-(e[2]+1)*g[1]*i,L=y+g[0]*i,$=k+g[1]*i;return createOrUpdate$2(y,k,L,$,n)}getTileCoordForCoordAndResolution(e,n,r){return this.getTileCoordForXYAndResolution_(e[0],e[1],n,!1,r)}getTileCoordForXYAndResolution_(e,n,r,i,g){const y=this.getZForResolution(r),k=r/this.getResolution(y),L=this.getOrigin(y),$=toSize(this.getTileSize(y),this.tmpSize_);let V=k*(e-L[0])/r/$[0],z=k*(L[1]-n)/r/$[1];return i?(V=ceil(V,DECIMALS)-1,z=ceil(z,DECIMALS)-1):(V=floor(V,DECIMALS),z=floor(z,DECIMALS)),createOrUpdate$1(y,V,z,g)}getTileCoordForXYAndZ_(e,n,r,i,g){const y=this.getOrigin(r),k=this.getResolution(r),L=toSize(this.getTileSize(r),this.tmpSize_);let $=(e-y[0])/k/L[0],V=(y[1]-n)/k/L[1];return i?($=ceil($,DECIMALS)-1,V=ceil(V,DECIMALS)-1):($=floor($,DECIMALS),V=floor(V,DECIMALS)),createOrUpdate$1(r,$,V,g)}getTileCoordForCoordAndZ(e,n,r){return this.getTileCoordForXYAndZ_(e[0],e[1],n,!1,r)}getTileCoordResolution(e){return this.resolutions_[e[0]]}getTileSize(e){return this.tileSize_?this.tileSize_:this.tileSizes_[e]}getFullTileRange(e){return this.fullTileRanges_?this.fullTileRanges_[e]:this.extent_?this.getTileRangeForExtentAndZ(this.extent_,e):null}getZForResolution(e,n){const r=linearFindNearest(this.resolutions_,e,n||0);return clamp(r,this.minZoom,this.maxZoom)}tileCoordIntersectsViewport(e,n){return intersectsLinearRing(n,0,n.length,2,this.getTileCoordExtent(e))}calculateTileRanges_(e){const n=this.resolutions_.length,r=new Array(n);for(let i=this.minZoom;i<n;++i)r[i]=this.getTileRangeForExtentAndZ(e,i);this.fullTileRanges_=r}}function getForProjection(t){let e=t.getDefaultTileGrid();return e||(e=createForProjection(t),t.setDefaultTileGrid(e)),e}function wrapX(t,e,n){const r=e[0],i=t.getTileCoordCenter(e),g=extentFromProjection(n);if(!containsCoordinate(g,i)){const y=getWidth(g),k=Math.ceil((g[0]-i[0])/y);return i[0]+=y*k,t.getTileCoordForCoordAndZ(i,r)}return e}function createForExtent(t,e,n,r){r=r!==void 0?r:"top-left";const i=resolutionsFromExtent(t,e,n);return new TileGrid({extent:t,origin:getCorner(t,r),resolutions:i,tileSize:n})}function createXYZ(t){const e=t||{},n=e.extent||get$1("EPSG:3857").getExtent(),r={extent:n,minZoom:e.minZoom,tileSize:e.tileSize,resolutions:resolutionsFromExtent(n,e.maxZoom,e.tileSize,e.maxResolution)};return new TileGrid(r)}function resolutionsFromExtent(t,e,n,r){e=e!==void 0?e:DEFAULT_MAX_ZOOM,n=toSize(n!==void 0?n:DEFAULT_TILE_SIZE);const i=getHeight(t),g=getWidth(t);r=r>0?r:Math.max(g/n[0],i/n[1]);const y=e+1,k=new Array(y);for(let L=0;L<y;++L)k[L]=r/Math.pow(2,L);return k}function createForProjection(t,e,n,r){const i=extentFromProjection(t);return createForExtent(i,e,n,r)}function extentFromProjection(t){t=get$1(t);let e=t.getExtent();if(!e){const n=180*METERS_PER_UNIT$1.degrees/t.getMetersPerUnit();e=createOrUpdate$2(-n,-n,n,n)}return e}class TileSource extends Source{constructor(e){super({attributions:e.attributions,attributionsCollapsible:e.attributionsCollapsible,projection:e.projection,state:e.state,wrapX:e.wrapX,interpolate:e.interpolate}),this.on,this.once,this.un,this.tilePixelRatio_=e.tilePixelRatio!==void 0?e.tilePixelRatio:1,this.tileGrid=e.tileGrid!==void 0?e.tileGrid:null;const n=[256,256];this.tileGrid&&toSize(this.tileGrid.getTileSize(this.tileGrid.getMinZoom()),n),this.tmpSize=[0,0],this.key_=e.key||getUid(this),this.tileOptions={transition:e.transition,interpolate:e.interpolate},this.zDirection=e.zDirection?e.zDirection:0}getGutterForProjection(e){return 0}getKey(){return this.key_}setKey(e){this.key_!==e&&(this.key_=e,this.changed())}getResolutions(e){const n=e?this.getTileGridForProjection(e):this.tileGrid;return n?n.getResolutions():null}getTile(e,n,r,i,g){return abstract()}getTileGrid(){return this.tileGrid}getTileGridForProjection(e){return this.tileGrid?this.tileGrid:getForProjection(e)}getTilePixelRatio(e){return this.tilePixelRatio_}getTilePixelSize(e,n,r){const i=this.getTileGridForProjection(r),g=this.getTilePixelRatio(n),y=toSize(i.getTileSize(e),this.tmpSize);return g==1?y:scale$1(y,g,this.tmpSize)}getTileCoordForTileUrlFunction(e,n){const r=n!==void 0?n:this.getProjection(),i=n!==void 0?this.getTileGridForProjection(r):this.tileGrid||this.getTileGridForProjection(r);return this.getWrapX()&&r.isGlobal()&&(e=wrapX(i,e,r)),withinExtentAndZ(e,i)?e:null}clear(){}refresh(){this.clear(),super.refresh()}}class TileSourceEvent extends BaseEvent{constructor(e,n){super(e),this.tile=n}}const zRegEx=/\{z\}/g,xRegEx=/\{x\}/g,yRegEx=/\{y\}/g,dashYRegEx=/\{-y\}/g;function renderXYZTemplate(t,e,n,r,i){return t.replace(zRegEx,e.toString()).replace(xRegEx,n.toString()).replace(yRegEx,r.toString()).replace(dashYRegEx,function(){if(i===void 0)throw new Error("If the URL template has a {-y} placeholder, the grid extent must be known");return(i-r).toString()})}function expandUrl(t){const e=[];let n=/\{([a-z])-([a-z])\}/.exec(t);if(n){const r=n[1].charCodeAt(0),i=n[2].charCodeAt(0);let g;for(g=r;g<=i;++g)e.push(t.replace(n[0],String.fromCharCode(g)));return e}if(n=/\{(\d+)-(\d+)\}/.exec(t),n){const r=parseInt(n[2],10);for(let i=parseInt(n[1],10);i<=r;i++)e.push(t.replace(n[0],i.toString()));return e}return e.push(t),e}function createFromTemplate(t,e){return function(n,r,i){if(!n)return;let g;const y=n[0];if(e){const k=e.getFullTileRange(y);k&&(g=k.getHeight()-1)}return renderXYZTemplate(t,y,n[1],n[2],g)}}function createFromTemplates(t,e){const n=t.length,r=new Array(n);for(let i=0;i<n;++i)r[i]=createFromTemplate(t[i],e);return createFromTileUrlFunctions(r)}function createFromTileUrlFunctions(t){return t.length===1?t[0]:function(e,n,r){if(!e)return;const i=hash(e),g=modulo(i,t.length);return t[g](e,n,r)}}class UrlTile extends TileSource{constructor(e){super({attributions:e.attributions,cacheSize:e.cacheSize,projection:e.projection,state:e.state,tileGrid:e.tileGrid,tilePixelRatio:e.tilePixelRatio,wrapX:e.wrapX,transition:e.transition,interpolate:e.interpolate,key:e.key,attributionsCollapsible:e.attributionsCollapsible,zDirection:e.zDirection}),this.generateTileUrlFunction_=this.tileUrlFunction===UrlTile.prototype.tileUrlFunction,this.tileLoadFunction=e.tileLoadFunction,e.tileUrlFunction&&(this.tileUrlFunction=e.tileUrlFunction),this.urls=null,e.urls?this.setUrls(e.urls):e.url&&this.setUrl(e.url),this.tileLoadingKeys_={}}getTileLoadFunction(){return this.tileLoadFunction}getTileUrlFunction(){return Object.getPrototypeOf(this).tileUrlFunction===this.tileUrlFunction?this.tileUrlFunction.bind(this):this.tileUrlFunction}getUrls(){return this.urls}handleTileChange(e){const n=e.target,r=getUid(n),i=n.getState();let g;i==TileState.LOADING?(this.tileLoadingKeys_[r]=!0,g=TileEventType.TILELOADSTART):r in this.tileLoadingKeys_&&(delete this.tileLoadingKeys_[r],g=i==TileState.ERROR?TileEventType.TILELOADERROR:i==TileState.LOADED?TileEventType.TILELOADEND:void 0),g!=null&&this.dispatchEvent(new TileSourceEvent(g,n))}setTileLoadFunction(e){this.tileLoadFunction=e,this.changed()}setTileUrlFunction(e,n){this.tileUrlFunction=e,typeof n<"u"?this.setKey(n):this.changed()}setUrl(e){const n=expandUrl(e);this.urls=n,this.setUrls(n)}setUrls(e){this.urls=e;const n=e.join(`
|
|
691
|
+
</div>`,z=(y=mapInstance$3.value)==null?void 0:y.getPixelFromCoordinate(n.coordinate);if(z){const j=drawCustomContent(L.time,z,V,"top-left");j&&(t.value=j)}}else t.value&&((k=mapInstance$3.value)==null||k.removeOverlay(t.value))})},removeAllTrackLayer=()=>{var t;showTracks.value=[],(t=trackLineVectorSource.value)==null||t.clear()},playTrack=(t,e)=>{handlePlay(String(t),e)},resetTrackView=t=>{var i;const e=mapInstance$3.value.getView(),n=t?shipTrackLineFeatures.value.find(g=>g.getId()===t):shipTrackLineFeatures.value[0];if(!n)return;const r=(i=n==null?void 0:n.getGeometry())==null?void 0:i.getExtent();if(r!=null&&r.length)try{const g=buffer(r,Math.max(r[2]-r[0],r[3]-r[1])*.02);e.fit(g)}catch(g){console.log(g)}},formatMinutesToDDHHMM=t=>{const e=hooks.duration(t,"minutes"),n=Math.floor(e.asDays()),r=e.hours(),i=e.minutes();let g=`${String(i).padStart(2,"0")}分`;return r!==0&&(g=`${String(r).padStart(2,"0")}时${g}`),n!==0&&(g=`${String(n).padStart(2,"0")}天${g}`),g},_hoisted_1$9={key:0,class:"more-tool-panel"},_hoisted_2$5={class:"switch-buttons"},_hoisted_3$4={class:"tool-components"},_sfc_main$b=vue.defineComponent({__name:"toolPanel",props:{vehicleMode:{},viewMode:{},disableGreenDot:{type:Boolean},showTrackLayer:{type:Boolean},mapTileMode:{}},emits:["switchGreenDot","switchMapTile"],setup(t,{emit:e}){var oe,re;const n=vue.inject("mapInstance"),r=t,i=e,g=vue.ref(((re=(oe=n==null?void 0:n.value)==null?void 0:oe.getView())==null?void 0:re.getZoom())||mapZoom.default),y=vue.ref(!1),k=vue.ref(null),L=vue.ref(!0),$=()=>{r.disableGreenDot||g.value>=mapZoom.shipGreenDotMax||(L.value=!L.value,i("switchGreenDot",L.value))},V=()=>{i("switchMapTile",r.mapTileMode===BaseMapType.vector?BaseMapType.satellite:BaseMapType.vector)},z=()=>{var ie,ae;y.value?(showMeasure.value=!1,(ie=k.value)==null||ie.removeInteraction()):(showMeasure.value=!0,(ae=k.value)==null||ae.addInteraction()),y.value=!y.value},j=()=>{var ie;(ie=k.value)==null||ie.removeInteraction(),y.value=!1};return vue.onMounted(()=>{vue.nextTick(()=>{var ie;(ie=n==null?void 0:n.value)==null||ie.on("moveend",()=>{var le,de;const ae=(de=(le=n==null?void 0:n.value)==null?void 0:le.getView())==null?void 0:de.getZoom();ae&&(g.value=ae)})})}),(ie,ae)=>(vue.openBlock(),vue.createElementBlock(vue.Fragment,null,[vue.createElementVNode("div",{class:vue.normalizeClass(`tool-panel ${ie.viewMode}`)},[ie.viewMode==="WxMiniprogram"?(vue.openBlock(),vue.createElementBlock("div",_hoisted_1$9,[vue.createElementVNode("div",_hoisted_2$5,[ie.vehicleMode==="ship"?(vue.openBlock(),vue.createElementBlock("div",{key:0,class:vue.normalizeClass(["switch-btn",`${y.value&&"active"}`]),onClick:z},ae[5]||(ae[5]=[vue.createElementVNode("i",{class:"map-iconfont icon-measure"},null,-1),vue.createElementVNode("div",{class:"button-text"},"测距",-1)]),2)):vue.createCommentVNode("",!0),ie.vehicleMode==="ship"?(vue.openBlock(),vue.createElementBlock("div",{key:1,class:vue.normalizeClass(`switch-btn ${L.value&&"active"} ${(ie.disableGreenDot||g.value>=vue.unref(mapZoom).shipGreenDotMax)&&"disabled"}`),onClick:$},ae[6]||(ae[6]=[vue.createElementVNode("i",{class:"map-iconfont icon-ship"},null,-1),vue.createElementVNode("div",{class:"button-text"},"绿点",-1)]),2)):vue.createCommentVNode("",!0),ie.vehicleMode==="ship"?(vue.openBlock(),vue.createElementBlock("div",{key:2,class:vue.normalizeClass(`switch-btn ${ie.mapTileMode===vue.unref(BaseMapType).satellite&&"active"}`),onClick:ae[0]||(ae[0]=le=>V())},ae[7]||(ae[7]=[vue.createElementVNode("i",{class:"map-iconfont icon-space"},null,-1),vue.createElementVNode("div",{class:"button-text"},"图层",-1)]),2)):vue.createCommentVNode("",!0),ie.vehicleMode==="truck"?(vue.openBlock(),vue.createElementBlock("div",{key:3,class:vue.normalizeClass(`switch-btn ${ie.mapTileMode===vue.unref(BaseMapType).satellite&&"active"}`),onClick:ae[1]||(ae[1]=le=>V())},ae[8]||(ae[8]=[vue.createElementVNode("i",{class:"map-iconfont icon-space"},null,-1),vue.createElementVNode("div",{class:"button-text"},"卫星",-1)]),2)):vue.createCommentVNode("",!0),ie.showTrackLayer?(vue.openBlock(),vue.createElementBlock(vue.Fragment,{key:4},[vue.createElementVNode("div",{class:"switch-btn multiple",onClick:ae[2]||(ae[2]=le=>vue.unref(playTrack)(vue.unref(currentTrackId),1))},ae[9]||(ae[9]=[vue.createElementVNode("i",{class:"map-iconfont icon-play"},null,-1),vue.createElementVNode("div",{class:"button-text"},"播放轨迹",-1)])),vue.createElementVNode("div",{class:"switch-btn multiple",onClick:ae[3]||(ae[3]=le=>vue.unref(resetTrackView)())},ae[10]||(ae[10]=[vue.createElementVNode("i",{class:"map-iconfont icon-center"},null,-1),vue.createElementVNode("div",{class:"button-text"},"轨迹居中",-1)]))],64)):vue.createCommentVNode("",!0),vue.renderSlot(ie.$slots,"toolPanel",{},void 0,!0)])])):(vue.openBlock(),vue.createElementBlock(vue.Fragment,{key:1},[ie.vehicleMode==="ship"?(vue.openBlock(),vue.createElementBlock(vue.Fragment,{key:0},[vue.createElementVNode("div",{class:vue.normalizeClass(["switch-btn",`${y.value&&"active"}`]),onClick:z},ae[11]||(ae[11]=[vue.createElementVNode("i",{class:"map-iconfont icon-measure"},null,-1),vue.createElementVNode("div",{class:"button-text"},"测距",-1)]),2),ie.vehicleMode==="ship"?(vue.openBlock(),vue.createElementBlock("div",{key:0,class:vue.normalizeClass(`switch-btn ${L.value&&"active"} ${(ie.disableGreenDot||g.value>=vue.unref(mapZoom).shipGreenDotMax)&&"disabled"}`),onClick:$},ae[12]||(ae[12]=[vue.createElementVNode("i",{class:"map-iconfont icon-ship"},null,-1),vue.createElementVNode("div",{class:"button-text"},"绿点",-1)]),2)):vue.createCommentVNode("",!0)],64)):vue.createCommentVNode("",!0),vue.createElementVNode("div",{class:vue.normalizeClass(["switch-btn",{active:ie.mapTileMode===vue.unref(BaseMapType).satellite}]),onClick:V},ae[13]||(ae[13]=[vue.createElementVNode("i",{class:"map-iconfont icon-space"},null,-1),vue.createElementVNode("div",{class:"button-text"},"卫星",-1)]),2)],64))],2),vue.createElementVNode("div",_hoisted_3$4,[y.value?(vue.openBlock(),vue.createBlock(Measure,{key:0,ref_key:"measureRef",ref:k,visible:y.value,"onUpdate:visible":ae[4]||(ae[4]=le=>y.value=le),onClose:j,"view-mode":ie.viewMode},null,8,["visible","view-mode"])):vue.createCommentVNode("",!0)])],64))}}),ToolPanel=_export_sfc(_sfc_main$b,[["__scopeId","data-v-6b24cf3c"]]),UNITS_PROP="units",LEADING_DIGITS=[1,2,5],DEFAULT_DPI=25.4/.28;let ScaleLine$1=class extends Control{constructor(e){e=e||{};const n=document.createElement("div");n.style.pointerEvents="none",super({element:n,render:e.render,target:e.target}),this.on,this.once,this.un;const r=e.className!==void 0?e.className:e.bar?"ol-scale-bar":"ol-scale-line";this.innerElement_=document.createElement("div"),this.innerElement_.className=r+"-inner",this.element.className=r+" "+CLASS_UNSELECTABLE,this.element.appendChild(this.innerElement_),this.viewState_=null,this.minWidth_=e.minWidth!==void 0?e.minWidth:64,this.maxWidth_=e.maxWidth,this.renderedVisible_=!1,this.renderedWidth_=void 0,this.renderedHTML_="",this.addChangeListener(UNITS_PROP,this.handleUnitsChanged_),this.setUnits(e.units||"metric"),this.scaleBar_=e.bar||!1,this.scaleBarSteps_=e.steps||4,this.scaleBarText_=e.text||!1,this.dpi_=e.dpi||void 0}getUnits(){return this.get(UNITS_PROP)}handleUnitsChanged_(){this.updateElement_()}setUnits(e){this.set(UNITS_PROP,e)}setDpi(e){this.dpi_=e}updateElement_(){const e=this.viewState_;if(!e){this.renderedVisible_&&(this.element.style.display="none",this.renderedVisible_=!1);return}const n=e.center,r=e.projection,i=this.getUnits(),g=i=="degrees"?"degrees":"m";let y=getPointResolution(r,e.resolution,n,g);const k=this.minWidth_*(this.dpi_||DEFAULT_DPI)/DEFAULT_DPI,L=this.maxWidth_!==void 0?this.maxWidth_*(this.dpi_||DEFAULT_DPI)/DEFAULT_DPI:void 0;let $=k*y,V="";if(i=="degrees"){const pe=METERS_PER_UNIT$1.degrees;$*=pe,$<pe/60?(V="″",y*=3600):$<pe?(V="′",y*=60):V="°"}else if(i=="imperial")$<.9144?(V="in",y/=.0254):$<1609.344?(V="ft",y/=.3048):(V="mi",y/=1609.344);else if(i=="nautical")y/=1852,V="NM";else if(i=="metric")$<1e-6?(V="nm",y*=1e9):$<.001?(V="μm",y*=1e6):$<1?(V="mm",y*=1e3):$<1e3?V="m":(V="km",y/=1e3);else if(i=="us")$<.9144?(V="in",y*=39.37):$<1609.344?(V="ft",y/=.30480061):(V="mi",y/=1609.3472);else throw new Error("Invalid units");let z=3*Math.floor(Math.log(k*y)/Math.log(10)),j,oe,re,ie,ae,le;for(;;){re=Math.floor(z/3);const pe=Math.pow(10,re);if(j=LEADING_DIGITS[(z%3+3)%3]*pe,oe=Math.round(j/y),isNaN(oe)){this.element.style.display="none",this.renderedVisible_=!1;return}if(L!==void 0&&oe>=L){j=ie,oe=ae,re=le;break}else if(oe>=k)break;ie=j,ae=oe,le=re,++z}const de=this.scaleBar_?this.createScaleBar(oe,j,V):j.toFixed(re<0?-re:0)+" "+V;this.renderedHTML_!=de&&(this.innerElement_.innerHTML=de,this.renderedHTML_=de),this.renderedWidth_!=oe&&(this.innerElement_.style.width=oe+"px",this.renderedWidth_=oe),this.renderedVisible_||(this.element.style.display="",this.renderedVisible_=!0)}createScaleBar(e,n,r){const i=this.getScaleForResolution(),g=i<1?Math.round(1/i).toLocaleString()+" : 1":"1 : "+Math.round(i).toLocaleString(),y=this.scaleBarSteps_,k=e/y,L=[this.createMarker("absolute")];for(let V=0;V<y;++V){const z=V%2===0?"ol-scale-singlebar-odd":"ol-scale-singlebar-even";L.push(`<div><div class="ol-scale-singlebar ${z}" style="width: ${k}px;"></div>`+this.createMarker("relative")+(V%2===0||y===2?this.createStepText(V,e,!1,n,r):"")+"</div>")}return L.push(this.createStepText(y,e,!0,n,r)),(this.scaleBarText_?`<div class="ol-scale-text" style="width: ${e}px;">`+g+"</div>":"")+L.join("")}createMarker(e){return`<div class="ol-scale-step-marker" style="position: ${e}; top: ${e==="absolute"?3:-10}px;"></div>`}createStepText(e,n,r,i,g){const k=(e===0?0:Math.round(i/this.scaleBarSteps_*e*100)/100)+(e===0?"":" "+g),L=e===0?-3:n/this.scaleBarSteps_*-1,$=e===0?0:n/this.scaleBarSteps_*2;return`<div class="ol-scale-step-text" style="margin-left: ${L}px;text-align: ${e===0?"left":"center"};min-width: ${$}px;left: ${r?n+"px":"unset"};">`+k+"</div>"}getScaleForResolution(){const e=getPointResolution(this.viewState_.projection,this.viewState_.resolution,this.viewState_.center,"m"),n=this.dpi_||DEFAULT_DPI,r=1e3/25.4;return e*r*n}render(e){const n=e.frameState;n?this.viewState_=n.viewState:this.viewState_=null,this.updateElement_()}};const _hoisted_1$8={id:"scale-line-container"},_sfc_main$a=vue.defineComponent({__name:"scaleLine",setup(t,{expose:e}){const n=vue.inject("mapInstance");return e({setScaleLine:i=>{var k;i||(i="metric");const g=new ScaleLine$1({units:i}),y=document.getElementById("scale-line-container");y&&(g.setTarget(y),(k=n==null?void 0:n.value)==null||k.addControl(g))}}),(i,g)=>(vue.openBlock(),vue.createElementBlock("div",_hoisted_1$8))}}),ScaleLine=_export_sfc(_sfc_main$a,[["__scopeId","data-v-d666f80d"]]),_hoisted_1$7={class:"zoom"},_sfc_main$9=vue.defineComponent({__name:"zoomControl",props:{map:{type:Object}},setup(t){const e=vue.inject("mapInstance"),n=()=>{if(!e.value)return;const i=e.value.getView(),g=i.getZoom();g&&i.setZoom(g+1)},r=()=>{if(!e.value)return;const i=e.value.getView(),g=i.getZoom();g&&i.setZoom(g-1)};return(i,g)=>(vue.openBlock(),vue.createElementBlock("div",_hoisted_1$7,[vue.createElementVNode("div",{onClick:n,class:"button big-button"},"+"),vue.createElementVNode("div",{onClick:r,class:"button small-button"},"-")]))}}),ZoomControl=_export_sfc(_sfc_main$9,[["__scopeId","data-v-ee822625"]]),_hoisted_1$6={class:"copyright"},_hoisted_2$4=["src","width"],_sfc_main$8=vue.defineComponent({__name:"copyright",props:{type:{default:COPY_RIGHT_TYPE.HORIZONTAL}},setup(t){vue.useCssVars(g=>({"4bfada56":i.value}));const e=t,n=vue.computed(()=>e.type===COPY_RIGHT_TYPE.HORIZONTAL?"map/tdt-copyright-h.svg":`map/tdt-copyright-v${mapTile==="satellite"?"-w":""}.svg`),r=vue.computed(()=>e.type===COPY_RIGHT_TYPE.HORIZONTAL?"400px":"168px"),i=vue.computed(()=>e.type===COPY_RIGHT_TYPE.HORIZONTAL?"auto auto 0 5px":"0 auto auto 5px");return(g,y)=>(vue.openBlock(),vue.createElementBlock("div",_hoisted_1$6,[vue.createElementVNode("img",{src:vue.unref(CDN_URL)+n.value,width:r.value,class:"logo",alt:""},null,8,_hoisted_2$4)]))}}),Copyright=_export_sfc(_sfc_main$8,[["__scopeId","data-v-c49d4dee"]]),TileEventType={TILELOADSTART:"tileloadstart",TILELOADEND:"tileloadend",TILELOADERROR:"tileloaderror"},tmpTileCoord=[0,0,0],DECIMALS=5;class TileGrid{constructor(e){this.minZoom=e.minZoom!==void 0?e.minZoom:0,this.resolutions_=e.resolutions,assert(isSorted(this.resolutions_,(i,g)=>g-i),"`resolutions` must be sorted in descending order");let n;if(!e.origins){for(let i=0,g=this.resolutions_.length-1;i<g;++i)if(!n)n=this.resolutions_[i]/this.resolutions_[i+1];else if(this.resolutions_[i]/this.resolutions_[i+1]!==n){n=void 0;break}}this.zoomFactor_=n,this.maxZoom=this.resolutions_.length-1,this.origin_=e.origin!==void 0?e.origin:null,this.origins_=null,e.origins!==void 0&&(this.origins_=e.origins,assert(this.origins_.length==this.resolutions_.length,"Number of `origins` and `resolutions` must be equal"));const r=e.extent;r!==void 0&&!this.origin_&&!this.origins_&&(this.origin_=getTopLeft(r)),assert(!this.origin_&&this.origins_||this.origin_&&!this.origins_,"Either `origin` or `origins` must be configured, never both"),this.tileSizes_=null,e.tileSizes!==void 0&&(this.tileSizes_=e.tileSizes,assert(this.tileSizes_.length==this.resolutions_.length,"Number of `tileSizes` and `resolutions` must be equal")),this.tileSize_=e.tileSize!==void 0?e.tileSize:this.tileSizes_?null:DEFAULT_TILE_SIZE,assert(!this.tileSize_&&this.tileSizes_||this.tileSize_&&!this.tileSizes_,"Either `tileSize` or `tileSizes` must be configured, never both"),this.extent_=r!==void 0?r:null,this.fullTileRanges_=null,this.tmpSize_=[0,0],this.tmpExtent_=[0,0,0,0],e.sizes!==void 0?this.fullTileRanges_=e.sizes.map((i,g)=>{const y=new TileRange(Math.min(0,i[0]),Math.max(i[0]-1,-1),Math.min(0,i[1]),Math.max(i[1]-1,-1));if(r){const k=this.getTileRangeForExtentAndZ(r,g);y.minX=Math.max(k.minX,y.minX),y.maxX=Math.min(k.maxX,y.maxX),y.minY=Math.max(k.minY,y.minY),y.maxY=Math.min(k.maxY,y.maxY)}return y}):r&&this.calculateTileRanges_(r)}forEachTileCoord(e,n,r){const i=this.getTileRangeForExtentAndZ(e,n);for(let g=i.minX,y=i.maxX;g<=y;++g)for(let k=i.minY,L=i.maxY;k<=L;++k)r([n,g,k])}forEachTileCoordParentTileRange(e,n,r,i){let g,y,k,L=null,$=e[0]-1;for(this.zoomFactor_===2?(y=e[1],k=e[2]):L=this.getTileCoordExtent(e,i);$>=this.minZoom;){if(y!==void 0&&k!==void 0?(y=Math.floor(y/2),k=Math.floor(k/2),g=createOrUpdate(y,y,k,k,r)):g=this.getTileRangeForExtentAndZ(L,$,r),n($,g))return!0;--$}return!1}getExtent(){return this.extent_}getMaxZoom(){return this.maxZoom}getMinZoom(){return this.minZoom}getOrigin(e){return this.origin_?this.origin_:this.origins_[e]}getResolution(e){return this.resolutions_[e]}getResolutions(){return this.resolutions_}getTileCoordChildTileRange(e,n,r){if(e[0]<this.maxZoom){if(this.zoomFactor_===2){const g=e[1]*2,y=e[2]*2;return createOrUpdate(g,g+1,y,y+1,n)}const i=this.getTileCoordExtent(e,r||this.tmpExtent_);return this.getTileRangeForExtentAndZ(i,e[0]+1,n)}return null}getTileRangeForTileCoordAndZ(e,n,r){if(n>this.maxZoom||n<this.minZoom)return null;const i=e[0],g=e[1],y=e[2];if(n===i)return createOrUpdate(g,y,g,y,r);if(this.zoomFactor_){const L=Math.pow(this.zoomFactor_,n-i),$=Math.floor(g*L),V=Math.floor(y*L);if(n<i)return createOrUpdate($,$,V,V,r);const z=Math.floor(L*(g+1))-1,j=Math.floor(L*(y+1))-1;return createOrUpdate($,z,V,j,r)}const k=this.getTileCoordExtent(e,this.tmpExtent_);return this.getTileRangeForExtentAndZ(k,n,r)}getTileRangeForExtentAndZ(e,n,r){this.getTileCoordForXYAndZ_(e[0],e[3],n,!1,tmpTileCoord);const i=tmpTileCoord[1],g=tmpTileCoord[2];this.getTileCoordForXYAndZ_(e[2],e[1],n,!0,tmpTileCoord);const y=tmpTileCoord[1],k=tmpTileCoord[2];return createOrUpdate(i,y,g,k,r)}getTileCoordCenter(e){const n=this.getOrigin(e[0]),r=this.getResolution(e[0]),i=toSize(this.getTileSize(e[0]),this.tmpSize_);return[n[0]+(e[1]+.5)*i[0]*r,n[1]-(e[2]+.5)*i[1]*r]}getTileCoordExtent(e,n){const r=this.getOrigin(e[0]),i=this.getResolution(e[0]),g=toSize(this.getTileSize(e[0]),this.tmpSize_),y=r[0]+e[1]*g[0]*i,k=r[1]-(e[2]+1)*g[1]*i,L=y+g[0]*i,$=k+g[1]*i;return createOrUpdate$2(y,k,L,$,n)}getTileCoordForCoordAndResolution(e,n,r){return this.getTileCoordForXYAndResolution_(e[0],e[1],n,!1,r)}getTileCoordForXYAndResolution_(e,n,r,i,g){const y=this.getZForResolution(r),k=r/this.getResolution(y),L=this.getOrigin(y),$=toSize(this.getTileSize(y),this.tmpSize_);let V=k*(e-L[0])/r/$[0],z=k*(L[1]-n)/r/$[1];return i?(V=ceil(V,DECIMALS)-1,z=ceil(z,DECIMALS)-1):(V=floor(V,DECIMALS),z=floor(z,DECIMALS)),createOrUpdate$1(y,V,z,g)}getTileCoordForXYAndZ_(e,n,r,i,g){const y=this.getOrigin(r),k=this.getResolution(r),L=toSize(this.getTileSize(r),this.tmpSize_);let $=(e-y[0])/k/L[0],V=(y[1]-n)/k/L[1];return i?($=ceil($,DECIMALS)-1,V=ceil(V,DECIMALS)-1):($=floor($,DECIMALS),V=floor(V,DECIMALS)),createOrUpdate$1(r,$,V,g)}getTileCoordForCoordAndZ(e,n,r){return this.getTileCoordForXYAndZ_(e[0],e[1],n,!1,r)}getTileCoordResolution(e){return this.resolutions_[e[0]]}getTileSize(e){return this.tileSize_?this.tileSize_:this.tileSizes_[e]}getFullTileRange(e){return this.fullTileRanges_?this.fullTileRanges_[e]:this.extent_?this.getTileRangeForExtentAndZ(this.extent_,e):null}getZForResolution(e,n){const r=linearFindNearest(this.resolutions_,e,n||0);return clamp(r,this.minZoom,this.maxZoom)}tileCoordIntersectsViewport(e,n){return intersectsLinearRing(n,0,n.length,2,this.getTileCoordExtent(e))}calculateTileRanges_(e){const n=this.resolutions_.length,r=new Array(n);for(let i=this.minZoom;i<n;++i)r[i]=this.getTileRangeForExtentAndZ(e,i);this.fullTileRanges_=r}}function getForProjection(t){let e=t.getDefaultTileGrid();return e||(e=createForProjection(t),t.setDefaultTileGrid(e)),e}function wrapX(t,e,n){const r=e[0],i=t.getTileCoordCenter(e),g=extentFromProjection(n);if(!containsCoordinate(g,i)){const y=getWidth(g),k=Math.ceil((g[0]-i[0])/y);return i[0]+=y*k,t.getTileCoordForCoordAndZ(i,r)}return e}function createForExtent(t,e,n,r){r=r!==void 0?r:"top-left";const i=resolutionsFromExtent(t,e,n);return new TileGrid({extent:t,origin:getCorner(t,r),resolutions:i,tileSize:n})}function createXYZ(t){const e=t||{},n=e.extent||get$1("EPSG:3857").getExtent(),r={extent:n,minZoom:e.minZoom,tileSize:e.tileSize,resolutions:resolutionsFromExtent(n,e.maxZoom,e.tileSize,e.maxResolution)};return new TileGrid(r)}function resolutionsFromExtent(t,e,n,r){e=e!==void 0?e:DEFAULT_MAX_ZOOM,n=toSize(n!==void 0?n:DEFAULT_TILE_SIZE);const i=getHeight(t),g=getWidth(t);r=r>0?r:Math.max(g/n[0],i/n[1]);const y=e+1,k=new Array(y);for(let L=0;L<y;++L)k[L]=r/Math.pow(2,L);return k}function createForProjection(t,e,n,r){const i=extentFromProjection(t);return createForExtent(i,e,n,r)}function extentFromProjection(t){t=get$1(t);let e=t.getExtent();if(!e){const n=180*METERS_PER_UNIT$1.degrees/t.getMetersPerUnit();e=createOrUpdate$2(-n,-n,n,n)}return e}class TileSource extends Source{constructor(e){super({attributions:e.attributions,attributionsCollapsible:e.attributionsCollapsible,projection:e.projection,state:e.state,wrapX:e.wrapX,interpolate:e.interpolate}),this.on,this.once,this.un,this.tilePixelRatio_=e.tilePixelRatio!==void 0?e.tilePixelRatio:1,this.tileGrid=e.tileGrid!==void 0?e.tileGrid:null;const n=[256,256];this.tileGrid&&toSize(this.tileGrid.getTileSize(this.tileGrid.getMinZoom()),n),this.tmpSize=[0,0],this.key_=e.key||getUid(this),this.tileOptions={transition:e.transition,interpolate:e.interpolate},this.zDirection=e.zDirection?e.zDirection:0}getGutterForProjection(e){return 0}getKey(){return this.key_}setKey(e){this.key_!==e&&(this.key_=e,this.changed())}getResolutions(e){const n=e?this.getTileGridForProjection(e):this.tileGrid;return n?n.getResolutions():null}getTile(e,n,r,i,g){return abstract()}getTileGrid(){return this.tileGrid}getTileGridForProjection(e){return this.tileGrid?this.tileGrid:getForProjection(e)}getTilePixelRatio(e){return this.tilePixelRatio_}getTilePixelSize(e,n,r){const i=this.getTileGridForProjection(r),g=this.getTilePixelRatio(n),y=toSize(i.getTileSize(e),this.tmpSize);return g==1?y:scale$1(y,g,this.tmpSize)}getTileCoordForTileUrlFunction(e,n){const r=n!==void 0?n:this.getProjection(),i=n!==void 0?this.getTileGridForProjection(r):this.tileGrid||this.getTileGridForProjection(r);return this.getWrapX()&&r.isGlobal()&&(e=wrapX(i,e,r)),withinExtentAndZ(e,i)?e:null}clear(){}refresh(){this.clear(),super.refresh()}}class TileSourceEvent extends BaseEvent{constructor(e,n){super(e),this.tile=n}}const zRegEx=/\{z\}/g,xRegEx=/\{x\}/g,yRegEx=/\{y\}/g,dashYRegEx=/\{-y\}/g;function renderXYZTemplate(t,e,n,r,i){return t.replace(zRegEx,e.toString()).replace(xRegEx,n.toString()).replace(yRegEx,r.toString()).replace(dashYRegEx,function(){if(i===void 0)throw new Error("If the URL template has a {-y} placeholder, the grid extent must be known");return(i-r).toString()})}function expandUrl(t){const e=[];let n=/\{([a-z])-([a-z])\}/.exec(t);if(n){const r=n[1].charCodeAt(0),i=n[2].charCodeAt(0);let g;for(g=r;g<=i;++g)e.push(t.replace(n[0],String.fromCharCode(g)));return e}if(n=/\{(\d+)-(\d+)\}/.exec(t),n){const r=parseInt(n[2],10);for(let i=parseInt(n[1],10);i<=r;i++)e.push(t.replace(n[0],i.toString()));return e}return e.push(t),e}function createFromTemplate(t,e){return function(n,r,i){if(!n)return;let g;const y=n[0];if(e){const k=e.getFullTileRange(y);k&&(g=k.getHeight()-1)}return renderXYZTemplate(t,y,n[1],n[2],g)}}function createFromTemplates(t,e){const n=t.length,r=new Array(n);for(let i=0;i<n;++i)r[i]=createFromTemplate(t[i],e);return createFromTileUrlFunctions(r)}function createFromTileUrlFunctions(t){return t.length===1?t[0]:function(e,n,r){if(!e)return;const i=hash(e),g=modulo(i,t.length);return t[g](e,n,r)}}class UrlTile extends TileSource{constructor(e){super({attributions:e.attributions,cacheSize:e.cacheSize,projection:e.projection,state:e.state,tileGrid:e.tileGrid,tilePixelRatio:e.tilePixelRatio,wrapX:e.wrapX,transition:e.transition,interpolate:e.interpolate,key:e.key,attributionsCollapsible:e.attributionsCollapsible,zDirection:e.zDirection}),this.generateTileUrlFunction_=this.tileUrlFunction===UrlTile.prototype.tileUrlFunction,this.tileLoadFunction=e.tileLoadFunction,e.tileUrlFunction&&(this.tileUrlFunction=e.tileUrlFunction),this.urls=null,e.urls?this.setUrls(e.urls):e.url&&this.setUrl(e.url),this.tileLoadingKeys_={}}getTileLoadFunction(){return this.tileLoadFunction}getTileUrlFunction(){return Object.getPrototypeOf(this).tileUrlFunction===this.tileUrlFunction?this.tileUrlFunction.bind(this):this.tileUrlFunction}getUrls(){return this.urls}handleTileChange(e){const n=e.target,r=getUid(n),i=n.getState();let g;i==TileState.LOADING?(this.tileLoadingKeys_[r]=!0,g=TileEventType.TILELOADSTART):r in this.tileLoadingKeys_&&(delete this.tileLoadingKeys_[r],g=i==TileState.ERROR?TileEventType.TILELOADERROR:i==TileState.LOADED?TileEventType.TILELOADEND:void 0),g!=null&&this.dispatchEvent(new TileSourceEvent(g,n))}setTileLoadFunction(e){this.tileLoadFunction=e,this.changed()}setTileUrlFunction(e,n){this.tileUrlFunction=e,typeof n<"u"?this.setKey(n):this.changed()}setUrl(e){const n=expandUrl(e);this.urls=n,this.setUrls(n)}setUrls(e){this.urls=e;const n=e.join(`
|
|
692
692
|
`);this.generateTileUrlFunction_?this.setTileUrlFunction(createFromTemplates(e,this.tileGrid),n):this.setKey(n)}tileUrlFunction(e,n,r){}}class TileImage extends UrlTile{constructor(e){super({attributions:e.attributions,cacheSize:e.cacheSize,projection:e.projection,state:e.state,tileGrid:e.tileGrid,tileLoadFunction:e.tileLoadFunction?e.tileLoadFunction:defaultTileLoadFunction,tilePixelRatio:e.tilePixelRatio,tileUrlFunction:e.tileUrlFunction,url:e.url,urls:e.urls,wrapX:e.wrapX,transition:e.transition,interpolate:e.interpolate!==void 0?e.interpolate:!0,key:e.key,attributionsCollapsible:e.attributionsCollapsible,zDirection:e.zDirection}),this.crossOrigin=e.crossOrigin!==void 0?e.crossOrigin:null,this.tileClass=e.tileClass!==void 0?e.tileClass:ImageTile,this.tileGridForProjection={},this.reprojectionErrorThreshold_=e.reprojectionErrorThreshold,this.renderReprojectionEdges_=!1}getGutterForProjection(e){return this.getProjection()&&e&&!equivalent(this.getProjection(),e)?0:this.getGutter()}getGutter(){return 0}getKey(){let e=super.getKey();return this.getInterpolate()||(e+=":disable-interpolation"),e}getTileGridForProjection(e){const n=this.getProjection();if(this.tileGrid&&(!n||equivalent(n,e)))return this.tileGrid;const r=getUid(e);return r in this.tileGridForProjection||(this.tileGridForProjection[r]=getForProjection(e)),this.tileGridForProjection[r]}createTile_(e,n,r,i,g,y){const k=[e,n,r],L=this.getTileCoordForTileUrlFunction(k,g),$=L?this.tileUrlFunction(L,i,g):void 0,V=new this.tileClass(k,$!==void 0?TileState.IDLE:TileState.EMPTY,$!==void 0?$:"",this.crossOrigin,this.tileLoadFunction,this.tileOptions);return V.key=y,V.addEventListener(EventType.CHANGE,this.handleTileChange.bind(this)),V}getTile(e,n,r,i,g){const y=this.getProjection();if(!y||!g||equivalent(y,g))return this.getTileInternal(e,n,r,i,y||g);const k=[e,n,r],L=this.getKey(),$=this.getTileGridForProjection(y),V=this.getTileGridForProjection(g),z=this.getTileCoordForTileUrlFunction(k,g),j=new ReprojTile(y,$,g,V,k,z,this.getTilePixelRatio(i),this.getGutter(),(oe,re,ie,ae)=>this.getTileInternal(oe,re,ie,ae,y),this.reprojectionErrorThreshold_,this.renderReprojectionEdges_,this.tileOptions);return j.key=L,j}getTileInternal(e,n,r,i,g){const y=this.getKey();return this.createTile_(e,n,r,i,g,y)}setRenderReprojectionEdges(e){this.renderReprojectionEdges_!=e&&(this.renderReprojectionEdges_=e,this.changed())}setTileGridForProjection(e,n){const r=get$1(e);if(r){const i=getUid(r);i in this.tileGridForProjection||(this.tileGridForProjection[i]=n)}}}function defaultTileLoadFunction(t,e){t.getImage().src=e}class XYZ extends TileImage{constructor(e){e=e||{};const n=e.projection!==void 0?e.projection:"EPSG:3857",r=e.tileGrid!==void 0?e.tileGrid:createXYZ({extent:extentFromProjection(n),maxResolution:e.maxResolution,maxZoom:e.maxZoom,minZoom:e.minZoom,tileSize:e.tileSize});super({attributions:e.attributions,cacheSize:e.cacheSize,crossOrigin:e.crossOrigin,interpolate:e.interpolate,projection:n,reprojectionErrorThreshold:e.reprojectionErrorThreshold,tileGrid:r,tileLoadFunction:e.tileLoadFunction,tilePixelRatio:e.tilePixelRatio,tileUrlFunction:e.tileUrlFunction,url:e.url,urls:e.urls,wrapX:e.wrapX!==void 0?e.wrapX:!0,transition:e.transition,attributionsCollapsible:e.attributionsCollapsible,zDirection:e.zDirection}),this.gutter_=e.gutter!==void 0?e.gutter:0}getGutter(){return this.gutter_}}const dotImage$1=new Image;dotImage$1.src=`${CDN_URL}/map/truck-dot.svg`,dotImage$1.crossOrigin="anonymous";const dotActiveImage$1=new Image;dotActiveImage$1.src=`${CDN_URL}/map/truck-dot-active.svg`,dotActiveImage$1.crossOrigin="anonymous";const cameraImage=new Image;cameraImage.src=`${CDN_URL}/map/map-camera.svg`,cameraImage.crossOrigin="anonymous";const loadImage=new Image;loadImage.src=`${CDN_URL}/map/map-load.svg`,loadImage.crossOrigin="anonymous";const setTruckStyle=(t,e,n,r)=>new Style({renderer:(i,g)=>{const y=g.context;y.save();let k=1;y.scale(k,k);let[L,$]=i;L=Number(L)/k-20,$=Number($)/k;const V=L-70,z=$-68;let j=180;const oe=56,re="#FFFFFF";let ie=176;const ae=52;let le="#164AFF",de="#FFFFFF";n===CAR_COLOR.YELLOW?(ie=176,le="#FFC81E",de="rgba(0,0,0,0.88)"):n===CAR_COLOR.Y_GREEN&&(j=200,ie=196,le="#8FED7C",de="rgba(0,0,0,0.88)"),r!=null&&r.length&&(j+=r.length*56),fillRectRadius(y,V,z,j,oe,re),fillRectRadius(y,V+2,z+2,ie,ae,le),n===CAR_COLOR.Y_GREEN&&fillRectRadius(y,V+2,z+2,68,ae,"#FFC81E"),y.save(),y.restore(),y.fillStyle=de,y.font="bold 28px Arial",y.textAlign="left",y.textBaseline="middle";const pe=`${e.slice(0,2)+" · "+e.slice(2)}`;if(y.fillText(pe,V+12,z+32),y.save(),y.restore(),r!=null&&r.length){const he=y.measureText(pe).width+12;let Ce=0;r.forEach(_e=>{_e===DEVICE_TYPE.CAMERA&&(y.drawImage(cameraImage,L-54+he+Ce*56,$-64,50,50),++Ce),_e===DEVICE_TYPE.LOAD&&(y.drawImage(loadImage,L-54+he+Ce*56,$-64,50,50),++Ce)})}const ue=dotImage$1;y.drawImage(ue,L+j/2-90,$,50/k,50/k),y.restore()}}),mapInstance$2=vue.ref(),renderDashboardSetInstance=t=>mapInstance$2.value=t;vue.ref([]);let truckMarkerList=[],trucksVectorSource;const renderTrucksMarker=t=>{if(deleteAllTruckMarkers(),!!mapInstance$2.value)return t.forEach(e=>{const n=formatUtils.convertSixHundredThousandToLatLng(e.lon,e.lat),r=new Feature({geometry:new Point(fromLonLat(n))});r.set("data",e),r.setStyle(setTruckStyle(!1,e.vno,e.vclColor??0,e.icons??[])),truckMarkerList.push({name:e.vno,lonlat:n,feature:r})}),trucksVectorSource=new VectorSource({features:truckMarkerList.map(e=>e.feature)}),trucksLayer.value=new VectorLayer({source:trucksVectorSource}),mapInstance$2.value.addLayer(trucksLayer.value),trucksLayer.value},deleteAllTruckMarkers=()=>{truckMarkerList.forEach(t=>{t.feature&&(trucksVectorSource==null||trucksVectorSource.removeFeature(t.feature))}),truckMarkerList=[]},mapInstance$1=vue.ref(),renderTruckSetInstance=t=>mapInstance$1.value=t,vehicle=vue.ref(null),focusShipData=vue.ref(),currentTruckOverlay=vue.ref(null),findTruck=async t=>{if(!mapInstance$1.value||(focusShipData.value=t,!(t!=null&&t.lon&&(t!=null&&t.lat))))return;const e=formatUtils.convertSixHundredThousandToLatLng(t.lon,t.lat),n=mapInstance$1.value.getPixelFromCoordinate(transform(e,projection.data,projection.mercator));currentTruckOverlay.value=t?drawTruckIcon(t.vno,n,(t==null?void 0:t.drc)??"")??null:null;const r=mapInstance$1.value.getView(),i=new Point(e);r.setCenter(transform(i.getCoordinates(),projection.data,projection.mercator))},clearAllTruck=()=>{vehicle.value.clearAllShip()},drawTruckIcon=(t,e,n)=>{const r=`<div id="${t}" class="ol-custom-content truck-custom-content" style="width: 80px; height: 80px; transform: rotate(${n}deg);">
|
|
693
693
|
<img src="${CDN_URL}map/car-icon.gif" width="100%" height="100%" />
|
|
694
694
|
</div>`;return drawCustomContent(t,e,r,"center-center")},removeTruckIcon=()=>{var e;const t=(e=currentTruckOverlay.value)==null?void 0:e.getElement();t&&(t.innerHTML="")},zoomTruckIcon=()=>{var g;if(!mapInstance$1.value)return;const t=mapInstance$1.value.getView().getZoom(),e=120,n=60;function r(y){return y<14?n:y>=14&&y<=18?Math.round((y-14)*(e-n)/4+n):e}const i=r(t);(g=document.querySelectorAll(".truck-custom-content"))==null||g.forEach(y=>{y.style.width=`${i}px`,y.style.height=`${i}px`})},mapInstance=vue.ref(),drawPolygonSetInstance=t=>mapInstance.value=t;let layerState="drawn",drawnState="undrawn";const source=new VectorSource;let sketch,helpTooltipElement,helpTooltip,measureTooltipElement,measureTooltip,circleStyle,drawVector,draw;const drawPolygonStyle={drawend:new Style({stroke:new Stroke({color:"#fbcc33",width:2})}),drawing:new Style({stroke:new Stroke({color:"rgba(255, 255, 255, 1)",width:1.5,lineDash:[10,10]}),fill:new Fill({color:"rgba(255, 255, 255, 0.25)"})})};function createMeasureTooltip(){var t;measureTooltipElement!=null&&measureTooltipElement.parentNode&&measureTooltipElement.parentNode.removeChild(measureTooltipElement),measureTooltipElement=document.createElement("div"),measureTooltipElement.className="ol-tooltip ol-tooltip-draw-polygon",measureTooltip=new Overlay({element:measureTooltipElement,offset:[0,-15],positioning:"bottom-center",stopEvent:!1,insertFirst:!1}),(t=mapInstance.value)==null||t.addOverlay(measureTooltip)}function createHelpTooltip(){var t;helpTooltipElement!=null&&helpTooltipElement.parentNode&&helpTooltipElement.parentNode.removeChild(helpTooltipElement),helpTooltipElement=document.createElement("div"),helpTooltipElement.className="ol-tooltip ol-help-tooltip hidden",helpTooltip=new Overlay({element:helpTooltipElement,offset:[15,0],positioning:"center-left"}),(t=mapInstance.value)==null||t.addOverlay(helpTooltip)}let squareLimitError=!1,lineLimitError=!1;const validateSquareLimit=t=>{let n=1/0,r=-1/0,i=1/0,g=-1/0;t==null||t.forEach(L=>{const $=transform(L,projection.mercator,projection.data),V=$[0],z=$[1];n=Math.min(n,z),r=Math.max(r,z),i=Math.min(i,V),g=Math.max(g,V)});const y=(r-n)*111,k=(g-i)*111;squareLimitError=y>150||k>150};let storeFeature,callbackFunction=null;const addInteraction=t=>{var n,r;t&&(callbackFunction=t),drawVector||init(),drawnState="undrawn",layerState="drawn",(n=mapInstance.value)==null||n.addLayer(drawVector),draw=new Draw({type:"Polygon",source,trace:!0,style:[drawPolygonStyle.drawing,circleStyle]}),(r=mapInstance.value)==null||r.addInteraction(draw),createMeasureTooltip(),createHelpTooltip();let e;draw.on("drawstart",function(i){var g;layerState="drawn",sketch=i.feature,e=(g=sketch.getGeometry())==null?void 0:g.on("change",function(y){const k=y.target,L=formatUtils.formatArea(k,LENGTH_UNIT.NM),V=k.getCoordinates()[0],z=new LineString([V[V.length-2],V[V.length-1]]),j=formatUtils.formatLength(z,LENGTH_UNIT.NM);if(lineLimitError=Number(getLength(z)/1e3)>150,validateSquareLimit(V),measureTooltipElement&&L&&(measureTooltipElement.innerHTML=`
|
|
@@ -699,7 +699,7 @@ void main(void) {
|
|
|
699
699
|
<div><span class="text">单击继续,双击结束</span></div>
|
|
700
700
|
`}}),drawnState="drawing"}),draw.on("drawend",function(i){if(i.feature.getGeometry()){storeFeature=i.feature;const g=endFn(i.feature);g!=null&&g.length&&callbackFunction&&callbackFunction(g)}if(sketch=null,measureTooltipElement=null,createMeasureTooltip(),e&&unByKey(e),drawnState="drawend",draw&&mapInstance.value){const g=mapInstance.value.getInteractions().getArray().find(y=>getUid(y)===getUid(draw));g&&mapInstance.value.removeInteraction(g),helpTooltipElement!=null&&helpTooltipElement.parentNode&&helpTooltipElement.parentNode.removeChild(helpTooltipElement)}})},removeInteraction=()=>{var t,e,n;if(mapInstance.value){if(document.querySelectorAll(".ol-tooltip.ol-tooltip-draw-polygon").forEach(r=>{var i;(i=r==null?void 0:r.parentNode)==null||i.removeChild(r)}),source.clear(),(t=mapInstance.value)==null||t.removeLayer(drawVector),helpTooltipElement!=null&&helpTooltipElement.parentNode&&helpTooltipElement.parentNode.removeChild(helpTooltipElement),((e=mapInstance.value)==null?void 0:e.getTargetElement()).style.cursor="",document.querySelector("#map").style.cursor="",draw){const r=mapInstance.value.getInteractions().getArray().find(i=>getUid(i)===getUid(draw));r&&((n=mapInstance.value)==null||n.removeInteraction(r))}drawnState="undrawn",layerState="destroyed"}},endFn=t=>{var e,n,r;if(t.getGeometry()){const i=[],y=t.getGeometry().getCoordinates();(e=y[0])==null||e.forEach(L=>{i.push(transform(L,projection.mercator,projection.data))});const k=y[0][y[0].length-2];if(k&&measureTooltip.setPosition(k),measureTooltip.setOffset([10,0]),measureTooltipElement&&(measureTooltipElement.innerHTML+='<span class="delete-icon"><i class="map-iconfont icon-delete" /></div>'),(n=document.querySelector(".delete-icon"))==null||n.addEventListener("click",()=>{reset()}),!lineLimitError&&!squareLimitError)return i;draw&&((r=mapInstance.value)==null||r.removeInteraction(draw)),helpTooltipElement!=null&&helpTooltipElement.parentNode&&helpTooltipElement.parentNode.removeChild(helpTooltipElement)}},initFeature=t=>{var e,n;if(t&&(callbackFunction=t),layerState="drawn",storeFeature){const r=storeFeature.getGeometry();if(!r)return;const i=formatUtils.formatArea(r,LENGTH_UNIT.NM);measureTooltipElement&&(measureTooltipElement.innerHTML=`
|
|
701
701
|
<span class="text">面积:${i}${lineLimitError||squareLimitError?'<span class="error pl-12">超出可以绘画的距离</span>':""}</span>
|
|
702
|
-
`),(e=drawVector.getSource())==null||e.addFeature(storeFeature);const g=endFn(storeFeature);g!=null&&g.length&&callbackFunction&&callbackFunction(g);const y=getCenter(storeFeature.getGeometry().getExtent());(n=mapInstance.value)==null||n.getView().setCenter(y)}},pointerMoveHandler=function(t){var n;if(t.dragging)return;let e="点击选择起点";sketch&&(e="单击继续,双击结束"),helpTooltipElement&&(helpTooltipElement.innerHTML=e,helpTooltip.setPosition(t.coordinate),helpTooltipElement.classList.remove("hidden")),layerState==="drawn"&&(((n=mapInstance.value)==null?void 0:n.getTargetElement()).style.cursor="crosshair")},init=()=>{mapInstance.value&&(circleStyle=new Style({image:new CircleStyle({radius:5,fill:new Fill({color:"rgb(51,112,255, 1)"})}),geometry:function(t){const e=t.getGeometry().getCoordinates();return new MultiPoint(e)}}),drawVector=new VectorLayer({source,style:drawPolygonStyle.drawend}),mapInstance.value.on("pointermove",pointerMoveHandler),mapInstance.value.getViewport().addEventListener("mouseout",function(){var t;(t=helpTooltipElement==null?void 0:helpTooltipElement.classList)==null||t.add("hidden")}),mapInstance.value.on(["dblclick"],function(t){drawnState!=="undrawn"&&(t.stopPropagation(),t.preventDefault())}))},reset=()=>{removeInteraction(),addInteraction(),storeFeature=null},drawPolygonTool={addInteraction,removeInteraction,initFeature,reset},dotImage=new Image;dotImage.crossOrigin="anonymous";const dotActiveImage=new Image;dotActiveImage.crossOrigin="anonymous";const setPointStyle=(t,e,n)=>{const{color:r,url:i,activeUrl:g,activeColor:y}=n;return(g||i)&&(t?dotActiveImage.src=CDN_URL+(g||i):dotImage.src=CDN_URL+(i||g)),new Style({renderer:(k,L)=>{const $=L.context;$.save();const V=window.devicePixelRatio||1;let[z,j]=k;z=Number(z),j=Number(j),$.font=`${12*V}px Arial`;const oe=$.measureText(e).width,re=z-oe/2+6,ie=j+6*V,ae=oe+4,le=16*V,de=t&&y||r;if(fillRectRadius($,re,ie+30,ae,le,de),$.save(),$.restore(),$.fillStyle=t?"#FFFFFF":"#000000",$.textAlign="center",$.textBaseline="middle",$.fillText(e,re+(oe+4)/2,ie+24*V),$.save(),$.restore(),i||g){const pe=t?dotActiveImage:dotImage;$.drawImage(pe,z-pe.width/2,j-pe.height/2,30*V,30*V)}$.restore()}})};class PointMarkerClass{constructor(e,n){qn(this,"mapInstance");qn(this,"pointMarkerList",[]);qn(this,"pointsVectorSource");qn(this,"highlightPoint");qn(this,"pointLayer");qn(this,"options");this.mapInstance=e,this.options=n}renderPointMarker(e){if(this.deleteAllPointMarkers(),!this.mapInstance)return;let n={};e.forEach(r=>{var g;const i=[r.lon,r.lat];if(((g=this.highlightPoint)==null?void 0:g.id)===r.id)n={id:r.id,name:r.name,lonlat:[Number(r.lon),Number(r.lat)],pointType:r.pointType};else{const y=this.getFeature(r,i);this.pointMarkerList.push({id:r.id,name:r.name,lonlat:[Number(r.lon),Number(r.lat)],feature:y,pointType:r.pointType})}}),n&&n.lonlat&&(n.feature=this.getFeature(n,n.lonlat),this.pointMarkerList.push(n)),this.pointsVectorSource=new VectorSource({features:[...this.pointMarkerList.map(r=>r.feature)]}),this.pointLayer=new VectorLayer({source:this.pointsVectorSource}),this.mapInstance.addLayer(this.pointLayer)}deleteAllPointMarkers(e){this.pointMarkerList.forEach(n=>{var r;n.feature&&e!==n.id&&((r=this.pointsVectorSource)==null||r.removeFeature(n.feature))})}cancelHighlightTruckMarker(){if(!this.highlightPoint)return;const{id:e,name:n}=this.highlightPoint;this.highlightPoint=void 0,this.pointMarkerList.find(r=>{r.id===e&&r.feature.setStyle(setPointStyle(!1,n,this.options))})}highlightPointMarker(e){if(!this.mapInstance)return;const{id:n,name:r,fullName:i,lon:g,lat:y,pointType:k}=e,L=[Number(g),Number(y)];this.highlightPoint={id:n,name:r,fullName:i,lonlat:L,pointType:k},this.setPointCenter(L)}getFeature(e,n){var i;const r=new Feature({geometry:new Point(fromLonLat(n))});return r.set("data",e),r.setStyle(setPointStyle(((i=this.highlightPoint)==null?void 0:i.id)===e.id,e.name,this.options)),r}setPointCenter(e,n={customZoom:mapZoom.findShip,type:1}){if(!this.mapInstance)return;const{customZoom:r=mapZoom.findShip,type:i=1}=n,g=this.mapInstance.getView(),y=g.getZoom();(i===1||y>r&&i===2||y<r&&i===3)&&g.setZoom(r);const k=new Point(e);g.setCenter(transform(k.getCoordinates(),projection.data,projection.mercator))}}const _sfc_main$7=vue.defineComponent({__name:"Map",props:{zoom:{},center:{},vehicleMode:{},viewMode:{},mmsi:{},shipData:{},logoType:{}},emits:["zoomChanged","extentChanged"],setup(t,{expose:e,emit:n}){const r=vue.ref();vue.provide("mapInstance",r);const i=vue.ref(null),g=vue.ref(null),y=vue.ref(null),k=n,L=t,$=vue.ref(L.zoom||mapZoom.default),V=vue.ref(!1),z=vue.ref(!0),j=vue.ref(!0),oe={tiandituTile:new TileLayer({source:new XYZ({url:baseMap.tiandituTile})}),tiandituTileMark:new TileLayer({source:new XYZ({url:baseMap.tiandituTileMark})}),tiandituImgTile:new TileLayer({source:new XYZ({url:baseMap.tiandituImgTile}),visible:!1}),tiandituImgTileMark:new TileLayer({source:new XYZ({url:baseMap.tiandituImgTileMark}),visible:!1}),greenMark:new TileLayer({source:new XYZ({url:baseMap.greenTile})})},re=()=>{var xe,Ie;const _e={projection:projection.mercator,zoom:L.zoom||(L.vehicleMode==="ship"?mapZoom.default:mapZoom.truckDefault),minZoom:mapZoom.min,maxZoom:mapZoom.max,center:transformUtils.lonLatToMercator(L.center||mapDefaultCenter),constrainResolution:!0,enableRotation:!1,multiWorld:!0};r.value=new Map$2({target:"map",layers:[oe.tiandituTile,oe.tiandituTileMark,oe.tiandituImgTile,oe.tiandituImgTileMark,oe.greenMark],view:new View(_e)}),ie(),(xe=g.value)==null||xe.setScaleLine(L.vehicleMode==="ship"?"nautical":"metric"),(Ie=r.value)==null||Ie.on("moveend",pe),ae(_e.zoom<mapZoom.shipGreenDotMax),de(L.vehicleMode==="ship"||L.viewMode==="findShip"?BaseMapType.satellite:BaseMapType.vector),L.viewMode==="findShip"&&L.mmsi&&L.shipData&&vue.nextTick(()=>{findShip(String(L.mmsi),L.shipData)}),onShipsMarkerHover()};vue.onMounted(()=>{re()});const ie=()=>{r.value&&(renderCustomOverlaySetInstance(r.value),renderTruckSetInstance(r.value),drawPolygonSetInstance(r.value),renderShipStyleSetInstance(r.value),renderTrackStyleSetInstance(r.value),renderDashboardSetInstance(r.value),renderMarkerSetInstance(r.value),renderShipSetInstance(r.value),renderTrackSetInstance(r.value))},ae=_e=>{var xe;L.vehicleMode!=="ship"&&(_e=!1),(xe=r.value)==null||xe.getLayers().forEach(Ie=>{getUid(Ie)===getUid(oe.greenMark)&&(Ie.setVisible(_e),z.value=_e)})},le=vue.ref(BaseMapType.satellite),de=_e=>{var xe;le.value=_e,(xe=r.value)==null||xe.getLayers().forEach(Ie=>{(getUid(Ie)===getUid(oe.tiandituTile)||getUid(Ie)===getUid(oe.tiandituTileMark)||getUid(Ie)===getUid(oe.tiandituImgTile)||getUid(Ie)===getUid(oe.tiandituImgTileMark))&&Ie.setVisible(!1),(_e===BaseMapType.vector&&(getUid(Ie)===getUid(oe.tiandituTile)||getUid(Ie)===getUid(oe.tiandituTileMark))||_e===BaseMapType.satellite&&(getUid(Ie)===getUid(oe.tiandituImgTile)||getUid(Ie)===getUid(oe.tiandituImgTileMark)))&&Ie.setVisible(!0)})},pe=()=>{const _e=r.value.getView(),xe=_e.getZoom();xe&&ue(xe);const Ie=_e.calculateExtent(r.value.getSize());Ie&&xe&&he(Ie,xe)},ue=_e=>{var Oe,$e,qe,kt,Dt;$.value=_e,ae(_e<mapZoom.shipGreenDotMax);const xe=(Oe=r.value)==null?void 0:Oe.getLayers(),Ie=L.vehicleMode==="ship"?xe==null?void 0:xe.getArray().find(Ve=>getUid(Ve)===getUid(oe.greenMark)):void 0;showTrackLayer.value?(j.value=!1,Ie==null||Ie.setVisible(!1),($e=shipsLayer.value)==null||$e.setVisible(!1),(qe=largeAmountShipsLayer.value)==null||qe.setVisible(!1)):!V.value&&z.value&&_e<=mapZoom.shipGreenDotMax?(j.value=!0,Ie==null||Ie.setVisible(!0),(kt=shipsLayer.value)==null||kt.setVisible(!1),(Dt=largeAmountShipsLayer.value)==null||Dt.setVisible(!1)):(j.value=!1,Ie==null||Ie.setVisible(!1)),k("zoomChanged",_e)},he=(_e,xe)=>{const Ie=transform([_e[0],_e[1]],projection.mercator,projection.data),Oe=transform([_e[2],_e[3]],projection.mercator,projection.data);k("extentChanged",{extent:[Ie,Oe],zoom:xe})};return e({mapInstance:r,initMap:re,pointRender:(_e,xe)=>new PointMarkerClass(_e,xe),renderTrucksMarker,renderShip:renderShips,renderTrack:(_e,xe,Ie)=>{var Oe,$e;currentTrackId.value=_e,showTrackLayer.value=!0,V.value=!0,hiddenAllShips(),($e=(Oe=largeAmountShipsLayer.value)==null?void 0:Oe.getSource())==null||$e.clear(),renderTrack(_e,L.vehicleMode==="ship"?xe.reverse():xe,Ie,LENGTH_UNIT.NM)},findTruck,removeTruckIcon,clearAllTruck,closeTrack:()=>{var _e,xe;showTrackLayer.value=!1,(_e=shipTrackVectorLayer.value)==null||_e.setVisible(!1),(xe=selectShipsLayer.value)==null||xe.setVisible(!0),V.value=!1,ae($.value<mapZoom.shipGreenDotMax),allTracks.value=[],stopAnimation()},closeTruckTrack:()=>{var _e,xe;showTrackLayer.value=!1,(_e=shipTrackVectorLayer.value)==null||_e.setVisible(!1),(xe=selectShipsLayer.value)==null||xe.setVisible(!0),stopAnimation()},resetTrackView,playTrack,clearSelectFeature,findShip,focusShip:(_e,xe,Ie=!0)=>{var Oe,$e;hiddenOrther.value=Ie,(Oe=shipsLayer.value)==null||Oe.setVisible(!Ie),($e=largeAmountShipsLayer.value)==null||$e.setVisible(!1),findShip(_e,xe)},showTracks,removeAllTrackLayer,switchFilterItem,rerenderShip,switchGreenDot:()=>ae(!1),zoomTruckIcon,renderTruckTrack:(_e,xe,Ie)=>{showTrackLayer.value=!0,renderTrack(_e,xe,Ie,LENGTH_UNIT.KM,"truck")},removerLayer:removeShipTrackLineFeatureByIndex,renderMarker,setMarkerPosition:_e=>{V.value=!0,setMarkerPosition(_e)},getZoomAndCenter:()=>{var $e;const _e=($e=r.value)==null?void 0:$e.getView();if(!_e)return null;const xe=Math.round(Number(_e.getZoom())),{lon:Ie,lat:Oe}=transformUtils.mercatorToLonLat(_e.getCenter());return{zoom:xe,center:[Ie,Oe]}},setCenter:_e=>{var Oe;const xe=(Oe=r.value)==null?void 0:Oe.getView();if(!xe)return null;const Ie=new Point(_e);xe.setCenter(transform(Ie.getCoordinates(),projection.data,projection.mercator))},drawPolygonTool,setMapInstance:ie,config:{mapZoom,projection},utils:{transform:transformUtils,format:formatUtils}}),(_e,xe)=>(vue.openBlock(),vue.createElementBlock("div",{class:"map-page map-container",ref_key:"pageRef",ref:i},[xe[0]||(xe[0]=vue.createElementVNode("div",{id:"map",class:"map"},null,-1)),vue.createVNode(ToolPanel,{"vehicle-mode":_e.vehicleMode,"view-mode":_e.viewMode,"disable-green-dot":V.value,"show-track-layer":vue.unref(showTrackLayer),"map-tile-mode":le.value,onSwitchGreenDot:ae,onSwitchMapTile:de},{toolPanel:vue.withCtx(()=>[vue.renderSlot(_e.$slots,"toolPanel",{},void 0,!0)]),_:3},8,["vehicle-mode","view-mode","disable-green-dot","show-track-layer","map-tile-mode"]),_e.viewMode!=="WxMiniprogram"?(vue.openBlock(),vue.createElementBlock(vue.Fragment,{key:0},[vue.createVNode(ScaleLine,{ref_key:"scaleLineControl",ref:g},null,512),vue.createVNode(ZoomControl,{ref_key:"zoomControl",ref:y},null,512)],64)):vue.createCommentVNode("",!0),vue.createVNode(Copyright,{type:_e.logoType,"map-tile":le.value},null,8,["type","map-tile"])],512))}}),Map$1=_export_sfc(_sfc_main$7,[["__scopeId","data-v-be15323e"]]),ZhMap=withInstall$1(Map$1);var zhCn={name:"zh-cn",el:{breadcrumb:{label:"面包屑"},colorpicker:{confirm:"确定",clear:"清空",defaultLabel:"颜色选择器",description:"当前颜色 {color},按 Enter 键选择新颜色",alphaLabel:"选择透明度的值"},datepicker:{now:"此刻",today:"今天",cancel:"取消",clear:"清空",confirm:"确定",dateTablePrompt:"使用方向键与 Enter 键可选择日期",monthTablePrompt:"使用方向键与 Enter 键可选择月份",yearTablePrompt:"使用方向键与 Enter 键可选择年份",selectedDate:"已选日期",selectDate:"选择日期",selectTime:"选择时间",startDate:"开始日期",startTime:"开始时间",endDate:"结束日期",endTime:"结束时间",prevYear:"前一年",nextYear:"后一年",prevMonth:"上个月",nextMonth:"下个月",year:"年",month1:"1 月",month2:"2 月",month3:"3 月",month4:"4 月",month5:"5 月",month6:"6 月",month7:"7 月",month8:"8 月",month9:"9 月",month10:"10 月",month11:"11 月",month12:"12 月",weeks:{sun:"日",mon:"一",tue:"二",wed:"三",thu:"四",fri:"五",sat:"六"},weeksFull:{sun:"星期日",mon:"星期一",tue:"星期二",wed:"星期三",thu:"星期四",fri:"星期五",sat:"星期六"},months:{jan:"一月",feb:"二月",mar:"三月",apr:"四月",may:"五月",jun:"六月",jul:"七月",aug:"八月",sep:"九月",oct:"十月",nov:"十一月",dec:"十二月"}},inputNumber:{decrease:"减少数值",increase:"增加数值"},select:{loading:"加载中",noMatch:"无匹配数据",noData:"无数据",placeholder:"请选择"},dropdown:{toggleDropdown:"切换下拉选项"},mention:{loading:"加载中"},cascader:{noMatch:"无匹配数据",loading:"加载中",placeholder:"请选择",noData:"暂无数据"},pagination:{goto:"前往",pagesize:"条/页",total:"共 {total} 条",pageClassifier:"页",page:"页",prev:"上一页",next:"下一页",currentPage:"第 {pager} 页",prevPages:"向前 {pager} 页",nextPages:"向后 {pager} 页",deprecationWarning:"你使用了一些已被废弃的用法,请参考 el-pagination 的官方文档"},dialog:{close:"关闭此对话框"},drawer:{close:"关闭此对话框"},messagebox:{title:"提示",confirm:"确定",cancel:"取消",error:"输入的数据不合法!",close:"关闭此对话框"},upload:{deleteTip:"按 delete 键可删除",delete:"删除",preview:"查看图片",continue:"继续上传"},slider:{defaultLabel:"滑块介于 {min} 至 {max}",defaultRangeStartLabel:"选择起始值",defaultRangeEndLabel:"选择结束值"},table:{emptyText:"暂无数据",confirmFilter:"筛选",resetFilter:"重置",clearFilter:"全部",sumText:"合计"},tour:{next:"下一步",previous:"上一步",finish:"结束导览"},tree:{emptyText:"暂无数据"},transfer:{noMatch:"无匹配数据",noData:"无数据",titles:["列表 1","列表 2"],filterPlaceholder:"请输入搜索内容",noCheckedFormat:"共 {total} 项",hasCheckedFormat:"已选 {checked}/{total} 项"},image:{error:"加载失败"},pageHeader:{title:"返回"},popconfirm:{confirmButtonText:"确定",cancelButtonText:"取消"},carousel:{leftArrow:"上一张幻灯片",rightArrow:"下一张幻灯片",indicator:"幻灯片切换至索引 {index}"}}};/**!
|
|
702
|
+
`),(e=drawVector.getSource())==null||e.addFeature(storeFeature);const g=endFn(storeFeature);g!=null&&g.length&&callbackFunction&&callbackFunction(g);const y=getCenter(storeFeature.getGeometry().getExtent());(n=mapInstance.value)==null||n.getView().setCenter(y)}},pointerMoveHandler=function(t){var n;if(t.dragging)return;let e="点击选择起点";sketch&&(e="单击继续,双击结束"),helpTooltipElement&&(helpTooltipElement.innerHTML=e,helpTooltip.setPosition(t.coordinate),helpTooltipElement.classList.remove("hidden")),layerState==="drawn"&&(((n=mapInstance.value)==null?void 0:n.getTargetElement()).style.cursor="crosshair")},init=()=>{mapInstance.value&&(circleStyle=new Style({image:new CircleStyle({radius:5,fill:new Fill({color:"rgb(51,112,255, 1)"})}),geometry:function(t){const e=t.getGeometry().getCoordinates();return new MultiPoint(e)}}),drawVector=new VectorLayer({source,style:drawPolygonStyle.drawend}),mapInstance.value.on("pointermove",pointerMoveHandler),mapInstance.value.getViewport().addEventListener("mouseout",function(){var t;(t=helpTooltipElement==null?void 0:helpTooltipElement.classList)==null||t.add("hidden")}),mapInstance.value.on(["dblclick"],function(t){drawnState!=="undrawn"&&(t.stopPropagation(),t.preventDefault())}))},reset=()=>{removeInteraction(),addInteraction(),storeFeature=null},drawPolygonTool={addInteraction,removeInteraction,initFeature,reset},dotImage=new Image;dotImage.crossOrigin="anonymous";const dotActiveImage=new Image;dotActiveImage.crossOrigin="anonymous";const setPointStyle=(t,e,n)=>{const{color:r,url:i,activeUrl:g,activeColor:y}=n;return(g||i)&&(t?dotActiveImage.src=CDN_URL+(g||i):dotImage.src=CDN_URL+(i||g)),new Style({renderer:(k,L)=>{const $=L.context;$.save();const V=window.devicePixelRatio||1;let[z,j]=k;z=Number(z),j=Number(j),$.font=`${12*V}px Arial`;const oe=$.measureText(e).width,re=z-oe/2+6,ie=j+6*V,ae=oe+4,le=16*V,de=t&&y||r;if(fillRectRadius($,re,ie+13*V,ae,le,de),$.save(),$.restore(),$.fillStyle=t?"#FFFFFF":"#000000",$.textAlign="center",$.textBaseline="middle",$.fillText(e,re+(oe+4)/2,ie+22*V),$.save(),$.restore(),i||g){const pe=t?dotActiveImage:dotImage;$.drawImage(pe,z-pe.width/2,j-pe.height/2,30*V,30*V)}$.restore()}})};class PointMarkerClass{constructor(e,n){qn(this,"mapInstance");qn(this,"pointMarkerList",[]);qn(this,"pointsVectorSource");qn(this,"highlightPoint");qn(this,"pointLayer");qn(this,"options");this.mapInstance=e,this.options=n}renderPointMarker(e){if(this.deleteAllPointMarkers(),!this.mapInstance)return;let n={};e.forEach(r=>{var g;const i=[r.lon,r.lat];if(((g=this.highlightPoint)==null?void 0:g.id)===r.id)n={id:r.id,name:r.name,lonlat:[Number(r.lon),Number(r.lat)],pointType:r.pointType};else{const y=this.getFeature(r,i);this.pointMarkerList.push({id:r.id,name:r.name,lonlat:[Number(r.lon),Number(r.lat)],feature:y,pointType:r.pointType})}}),n&&n.lonlat&&(n.feature=this.getFeature(n,n.lonlat),this.pointMarkerList.push(n)),this.pointsVectorSource=new VectorSource({features:[...this.pointMarkerList.map(r=>r.feature)]}),this.pointLayer=new VectorLayer({source:this.pointsVectorSource}),this.mapInstance.addLayer(this.pointLayer)}deleteAllPointMarkers(e){this.pointMarkerList.forEach(n=>{var r;n.feature&&e!==n.id&&((r=this.pointsVectorSource)==null||r.removeFeature(n.feature))})}cancelHighlightTruckMarker(){if(!this.highlightPoint)return;const{id:e,name:n}=this.highlightPoint;this.highlightPoint=void 0,this.pointMarkerList.find(r=>{r.id===e&&r.feature.setStyle(setPointStyle(!1,n,this.options))})}highlightPointMarker(e){if(!this.mapInstance)return;const{id:n,name:r,fullName:i,lon:g,lat:y,pointType:k}=e,L=[Number(g),Number(y)];this.highlightPoint={id:n,name:r,fullName:i,lonlat:L,pointType:k},this.setPointCenter(L)}getFeature(e,n){var i;const r=new Feature({geometry:new Point(fromLonLat(n))});return r.set("data",e),r.setStyle(setPointStyle(((i=this.highlightPoint)==null?void 0:i.id)===e.id,e.name,this.options)),r}setPointCenter(e,n={customZoom:mapZoom.findShip,type:1}){if(!this.mapInstance)return;const{customZoom:r=mapZoom.findShip,type:i=1}=n,g=this.mapInstance.getView(),y=g.getZoom();(i===1||y>r&&i===2||y<r&&i===3)&&g.setZoom(r);const k=new Point(e);g.setCenter(transform(k.getCoordinates(),projection.data,projection.mercator))}}const _sfc_main$7=vue.defineComponent({__name:"Map",props:{zoom:{},center:{},vehicleMode:{},viewMode:{},mmsi:{},shipData:{},logoType:{}},emits:["zoomChanged","extentChanged"],setup(t,{expose:e,emit:n}){const r=vue.ref();vue.provide("mapInstance",r);const i=vue.ref(null),g=vue.ref(null),y=vue.ref(null),k=n,L=t,$=vue.ref(L.zoom||mapZoom.default),V=vue.ref(!1),z=vue.ref(!0),j=vue.ref(!0),oe={tiandituTile:new TileLayer({source:new XYZ({url:baseMap.tiandituTile})}),tiandituTileMark:new TileLayer({source:new XYZ({url:baseMap.tiandituTileMark})}),tiandituImgTile:new TileLayer({source:new XYZ({url:baseMap.tiandituImgTile}),visible:!1}),tiandituImgTileMark:new TileLayer({source:new XYZ({url:baseMap.tiandituImgTileMark}),visible:!1}),greenMark:new TileLayer({source:new XYZ({url:baseMap.greenTile})})},re=()=>{var xe,Ie;const _e={projection:projection.mercator,zoom:L.zoom||(L.vehicleMode==="ship"?mapZoom.default:mapZoom.truckDefault),minZoom:mapZoom.min,maxZoom:mapZoom.max,center:transformUtils.lonLatToMercator(L.center||mapDefaultCenter),constrainResolution:!0,enableRotation:!1,multiWorld:!0};r.value=new Map$2({target:"map",layers:[oe.tiandituTile,oe.tiandituTileMark,oe.tiandituImgTile,oe.tiandituImgTileMark,oe.greenMark],view:new View(_e)}),ie(),(xe=g.value)==null||xe.setScaleLine(L.vehicleMode==="ship"?"nautical":"metric"),(Ie=r.value)==null||Ie.on("moveend",pe),ae(_e.zoom<mapZoom.shipGreenDotMax),de(L.vehicleMode==="ship"||L.viewMode==="findShip"?BaseMapType.satellite:BaseMapType.vector),L.viewMode==="findShip"&&L.mmsi&&L.shipData&&vue.nextTick(()=>{findShip(String(L.mmsi),L.shipData)}),onShipsMarkerHover()};vue.onMounted(()=>{re()});const ie=()=>{r.value&&(renderCustomOverlaySetInstance(r.value),renderTruckSetInstance(r.value),drawPolygonSetInstance(r.value),renderShipStyleSetInstance(r.value),renderTrackStyleSetInstance(r.value),renderDashboardSetInstance(r.value),renderMarkerSetInstance(r.value),renderShipSetInstance(r.value),renderTrackSetInstance(r.value))},ae=_e=>{var xe;L.vehicleMode!=="ship"&&(_e=!1),(xe=r.value)==null||xe.getLayers().forEach(Ie=>{getUid(Ie)===getUid(oe.greenMark)&&(Ie.setVisible(_e),z.value=_e)})},le=vue.ref(BaseMapType.satellite),de=_e=>{var xe;le.value=_e,(xe=r.value)==null||xe.getLayers().forEach(Ie=>{(getUid(Ie)===getUid(oe.tiandituTile)||getUid(Ie)===getUid(oe.tiandituTileMark)||getUid(Ie)===getUid(oe.tiandituImgTile)||getUid(Ie)===getUid(oe.tiandituImgTileMark))&&Ie.setVisible(!1),(_e===BaseMapType.vector&&(getUid(Ie)===getUid(oe.tiandituTile)||getUid(Ie)===getUid(oe.tiandituTileMark))||_e===BaseMapType.satellite&&(getUid(Ie)===getUid(oe.tiandituImgTile)||getUid(Ie)===getUid(oe.tiandituImgTileMark)))&&Ie.setVisible(!0)})},pe=()=>{const _e=r.value.getView(),xe=_e.getZoom();xe&&ue(xe);const Ie=_e.calculateExtent(r.value.getSize());Ie&&xe&&he(Ie,xe)},ue=_e=>{var Oe,$e,qe,kt,Dt;$.value=_e,ae(_e<mapZoom.shipGreenDotMax);const xe=(Oe=r.value)==null?void 0:Oe.getLayers(),Ie=L.vehicleMode==="ship"?xe==null?void 0:xe.getArray().find(Ve=>getUid(Ve)===getUid(oe.greenMark)):void 0;showTrackLayer.value?(j.value=!1,Ie==null||Ie.setVisible(!1),($e=shipsLayer.value)==null||$e.setVisible(!1),(qe=largeAmountShipsLayer.value)==null||qe.setVisible(!1)):!V.value&&z.value&&_e<=mapZoom.shipGreenDotMax?(j.value=!0,Ie==null||Ie.setVisible(!0),(kt=shipsLayer.value)==null||kt.setVisible(!1),(Dt=largeAmountShipsLayer.value)==null||Dt.setVisible(!1)):(j.value=!1,Ie==null||Ie.setVisible(!1)),k("zoomChanged",_e)},he=(_e,xe)=>{const Ie=transform([_e[0],_e[1]],projection.mercator,projection.data),Oe=transform([_e[2],_e[3]],projection.mercator,projection.data);k("extentChanged",{extent:[Ie,Oe],zoom:xe})};return e({mapInstance:r,initMap:re,pointRender:(_e,xe)=>new PointMarkerClass(_e,xe),renderTrucksMarker,renderShip:renderShips,renderTrack:(_e,xe,Ie)=>{var Oe,$e;currentTrackId.value=_e,showTrackLayer.value=!0,V.value=!0,hiddenAllShips(),($e=(Oe=largeAmountShipsLayer.value)==null?void 0:Oe.getSource())==null||$e.clear(),renderTrack(_e,L.vehicleMode==="ship"?xe.reverse():xe,Ie,LENGTH_UNIT.NM)},findTruck,removeTruckIcon,clearAllTruck,closeTrack:()=>{var _e,xe;showTrackLayer.value=!1,(_e=shipTrackVectorLayer.value)==null||_e.setVisible(!1),(xe=selectShipsLayer.value)==null||xe.setVisible(!0),V.value=!1,ae($.value<mapZoom.shipGreenDotMax),allTracks.value=[],stopAnimation()},closeTruckTrack:()=>{var _e,xe;showTrackLayer.value=!1,(_e=shipTrackVectorLayer.value)==null||_e.setVisible(!1),(xe=selectShipsLayer.value)==null||xe.setVisible(!0),stopAnimation()},resetTrackView,playTrack,clearSelectFeature,findShip,focusShip:(_e,xe,Ie=!0)=>{var Oe,$e;hiddenOrther.value=Ie,(Oe=shipsLayer.value)==null||Oe.setVisible(!Ie),($e=largeAmountShipsLayer.value)==null||$e.setVisible(!1),findShip(_e,xe)},showTracks,removeAllTrackLayer,switchFilterItem,rerenderShip,switchGreenDot:()=>ae(!1),zoomTruckIcon,renderTruckTrack:(_e,xe,Ie)=>{showTrackLayer.value=!0,renderTrack(_e,xe,Ie,LENGTH_UNIT.KM,"truck")},removerLayer:removeShipTrackLineFeatureByIndex,renderMarker,setMarkerPosition:_e=>{V.value=!0,setMarkerPosition(_e)},getZoomAndCenter:()=>{var $e;const _e=($e=r.value)==null?void 0:$e.getView();if(!_e)return null;const xe=Math.round(Number(_e.getZoom())),{lon:Ie,lat:Oe}=transformUtils.mercatorToLonLat(_e.getCenter());return{zoom:xe,center:[Ie,Oe]}},setCenter:_e=>{var Oe;const xe=(Oe=r.value)==null?void 0:Oe.getView();if(!xe)return null;const Ie=new Point(_e);xe.setCenter(transform(Ie.getCoordinates(),projection.data,projection.mercator))},drawPolygonTool,setMapInstance:ie,store:{getShowMeasure:getShowMeasure()},config:{mapZoom,projection},utils:{transform:transformUtils,format:formatUtils}}),(_e,xe)=>(vue.openBlock(),vue.createElementBlock("div",{class:"map-page map-container",ref_key:"pageRef",ref:i},[xe[0]||(xe[0]=vue.createElementVNode("div",{id:"map",class:"map"},null,-1)),vue.createVNode(ToolPanel,{"vehicle-mode":_e.vehicleMode,"view-mode":_e.viewMode,"disable-green-dot":V.value,"show-track-layer":vue.unref(showTrackLayer),"map-tile-mode":le.value,onSwitchGreenDot:ae,onSwitchMapTile:de},{toolPanel:vue.withCtx(()=>[vue.renderSlot(_e.$slots,"toolPanel",{},void 0,!0)]),_:3},8,["vehicle-mode","view-mode","disable-green-dot","show-track-layer","map-tile-mode"]),_e.viewMode!=="WxMiniprogram"?(vue.openBlock(),vue.createElementBlock(vue.Fragment,{key:0},[vue.createVNode(ScaleLine,{ref_key:"scaleLineControl",ref:g},null,512),vue.createVNode(ZoomControl,{ref_key:"zoomControl",ref:y},null,512)],64)):vue.createCommentVNode("",!0),vue.createVNode(Copyright,{type:_e.logoType,"map-tile":le.value},null,8,["type","map-tile"])],512))}}),Map$1=_export_sfc(_sfc_main$7,[["__scopeId","data-v-bb886e27"]]),ZhMap=withInstall$1(Map$1);var zhCn={name:"zh-cn",el:{breadcrumb:{label:"面包屑"},colorpicker:{confirm:"确定",clear:"清空",defaultLabel:"颜色选择器",description:"当前颜色 {color},按 Enter 键选择新颜色",alphaLabel:"选择透明度的值"},datepicker:{now:"此刻",today:"今天",cancel:"取消",clear:"清空",confirm:"确定",dateTablePrompt:"使用方向键与 Enter 键可选择日期",monthTablePrompt:"使用方向键与 Enter 键可选择月份",yearTablePrompt:"使用方向键与 Enter 键可选择年份",selectedDate:"已选日期",selectDate:"选择日期",selectTime:"选择时间",startDate:"开始日期",startTime:"开始时间",endDate:"结束日期",endTime:"结束时间",prevYear:"前一年",nextYear:"后一年",prevMonth:"上个月",nextMonth:"下个月",year:"年",month1:"1 月",month2:"2 月",month3:"3 月",month4:"4 月",month5:"5 月",month6:"6 月",month7:"7 月",month8:"8 月",month9:"9 月",month10:"10 月",month11:"11 月",month12:"12 月",weeks:{sun:"日",mon:"一",tue:"二",wed:"三",thu:"四",fri:"五",sat:"六"},weeksFull:{sun:"星期日",mon:"星期一",tue:"星期二",wed:"星期三",thu:"星期四",fri:"星期五",sat:"星期六"},months:{jan:"一月",feb:"二月",mar:"三月",apr:"四月",may:"五月",jun:"六月",jul:"七月",aug:"八月",sep:"九月",oct:"十月",nov:"十一月",dec:"十二月"}},inputNumber:{decrease:"减少数值",increase:"增加数值"},select:{loading:"加载中",noMatch:"无匹配数据",noData:"无数据",placeholder:"请选择"},dropdown:{toggleDropdown:"切换下拉选项"},mention:{loading:"加载中"},cascader:{noMatch:"无匹配数据",loading:"加载中",placeholder:"请选择",noData:"暂无数据"},pagination:{goto:"前往",pagesize:"条/页",total:"共 {total} 条",pageClassifier:"页",page:"页",prev:"上一页",next:"下一页",currentPage:"第 {pager} 页",prevPages:"向前 {pager} 页",nextPages:"向后 {pager} 页",deprecationWarning:"你使用了一些已被废弃的用法,请参考 el-pagination 的官方文档"},dialog:{close:"关闭此对话框"},drawer:{close:"关闭此对话框"},messagebox:{title:"提示",confirm:"确定",cancel:"取消",error:"输入的数据不合法!",close:"关闭此对话框"},upload:{deleteTip:"按 delete 键可删除",delete:"删除",preview:"查看图片",continue:"继续上传"},slider:{defaultLabel:"滑块介于 {min} 至 {max}",defaultRangeStartLabel:"选择起始值",defaultRangeEndLabel:"选择结束值"},table:{emptyText:"暂无数据",confirmFilter:"筛选",resetFilter:"重置",clearFilter:"全部",sumText:"合计"},tour:{next:"下一步",previous:"上一步",finish:"结束导览"},tree:{emptyText:"暂无数据"},transfer:{noMatch:"无匹配数据",noData:"无数据",titles:["列表 1","列表 2"],filterPlaceholder:"请输入搜索内容",noCheckedFormat:"共 {total} 项",hasCheckedFormat:"已选 {checked}/{total} 项"},image:{error:"加载失败"},pageHeader:{title:"返回"},popconfirm:{confirmButtonText:"确定",cancelButtonText:"取消"},carousel:{leftArrow:"上一张幻灯片",rightArrow:"下一张幻灯片",indicator:"幻灯片切换至索引 {index}"}}};/**!
|
|
703
703
|
* Sortable 1.15.6
|
|
704
704
|
* @author RubaXa <trash@rubaxa.org>
|
|
705
705
|
* @author owenm <owen23355@gmail.com>
|