@tuoyuan/map-adapter-lib
Version:
地图适配器库
2 lines (1 loc) • 3.17 kB
JavaScript
"use strict";var f=Object.defineProperty;var g=(s,t,i)=>t in s?f(s,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):s[t]=i;var e=(s,t,i)=>g(s,typeof t!="symbol"?t+"":t,i);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("./Pixel.js"),S=require("./Size.js"),_=require("../utils/measure-text.js");class d{constructor(t,i){e(this,"_top");e(this,"_canShow");e(this,"_minShowZoom");e(this,"_text");e(this,"_color");e(this,"_backgroundColor");e(this,"_fontSize");e(this,"_visible");e(this,"_border_size");e(this,"_border_color");e(this,"_basePlacement");e(this,"_placement","top");e(this,"_icon",null);this._top=t,this._canShow=i.canShow,this._minShowZoom=i.minShowZoom,this._text=i.text,this._color=i.color,this._backgroundColor=i.backgroundColor,this._fontSize=i.fontSize,this._visible=i.visible,this._border_size=i.borderSize,this._border_color=i.borderColor,this._basePlacement=i.basePlacement,this._placement=i.placement??"top",this._icon=i.icon??null}get canShow(){return this._canShow}get minShowZoom(){return this._minShowZoom}get text(){return this._text}get color(){return this._color}get backgroundColor(){return this._backgroundColor}get fontSize(){return this._fontSize}get borderSize(){return this._border_size}get borderColor(){return this._border_color}get visible(){return this._visible}get placement(){return this._placement}setText(t){this._text=t}setVisible(t){this._visible=t}getFont(){const t=window.getComputedStyle(this._top.mapInstance.dom).getPropertyValue("font-family"),i=this._fontSize??12,n=`${i+"px"} ${t}`;return{fontFamily:t,fontSize:i,font:n}}getSize(){const{font:t}=this.getFont(),i=_.measureText(this.text??"",t);return new S.Size(i.width,i.height)}getRealOffset(t){const[i,n,l,m]=(t==null?void 0:t.padding)??[0,0,0,0],{font:u}=this.getFont(),o=_.measureText(this.text??"",u);o.width+=m+n,o.height+=i+l;const c={x:0,y:0};this._basePlacement.includes("top")&&(c.y+=.5),this._basePlacement.includes("bottom")&&(c.y-=.5),this._basePlacement.includes("left")&&(c.x+=.5),this._basePlacement.includes("right")&&(c.x-=.5);let h=o.width*c.x,r=o.height*c.y;return this._icon&&(this._placement.includes("top")&&(r+=-(this._icon.size.height/2+o.height/2)),this._placement.includes("bottom")&&(r+=this._icon.size.height/2+o.height/2),this._placement.includes("left")&&(h+=-(this._icon.size.width/2+o.width/2)),this._placement.includes("right")&&(h+=this._icon.size.width/2+o.width/2),this._icon.placement.includes("top")&&(r+=-this._icon.size.height/2),this._icon.placement.includes("bottom")&&(r+=this._icon.size.height/2),this._icon.placement.includes("left")&&(h+=-this._icon.size.width/2),this._icon.placement.includes("right")&&(h+=this._icon.size.width/2),h+=this._icon.offset.x,r+=this._icon.offset.y),new a.Pixel(h,r)}listenAndUpdateVisible({showLabel:t,hiddenLabel:i}){this._visible&&!this._minShowZoom&&(t==null||t()),this._canShow&&this._minShowZoom&&(this._top.mapInstance.zoom>=this._minShowZoom&&this._visible?t==null||t():i==null||i(),this._top.mapInstance.on("zoom",n=>{n>=this._minShowZoom&&!this._visible&&(t==null||t()),n<this._minShowZoom&&this._visible&&(i==null||i())}))}}exports.Label=d;