{"version":3,"file":"CommUtils.mjs","sources":["../../../../../packages/sdk/utils/CommUtils.ts"],"sourcesContent":["import dayjs from 'dayjs'\nimport L from 'leaflet'\nimport 'leaflet-textpath'\nimport { merge } from 'lodash-unified'\n\nexport const CommUtils = {\n  CHINA_BODER: [\n    [40.29627734069808, 124.6948101392579],\n    [39.5972267104164, 124.11255587894543],\n    [39.44890871319574, 123.34898341051989],\n    [39.00211537046493, 123.12378263398612],\n    [38.831158741524675, 122.15699536756337],\n    [38.61688332693384, 121.5252870064447],\n    [38.57822420886194, 121.06383233006642],\n    [38.8739308592928, 120.88806431122265],\n    [39.4404439294106, 121.15174412274202],\n    [39.96871610923454, 121.47585011126309],\n    [40.35071479769971, 122.00315544518345],\n    [40.517983247636494, 121.84388574961835],\n    [40.61396723249586, 121.49782473890032],\n    [40.61811500242605, 121.27806734211637],\n    [40.12849032670938, 120.74523840470067],\n    [39.82117697631994, 120.00913860949409],\n    [39.44042791038892, 119.6246292096556],\n    [39.0618555156502, 119.21265537043641],\n    [38.84397463715443, 118.67979602770767],\n    [38.62545588635019, 118.58642924339169],\n    [38.36318781967069, 118.92699217664267],\n    [38.03079502043924, 119.43238630125137],\n    [37.692519130598725, 119.77296018126424],\n    [38.19501433359099, 120.64086010616799],\n    [37.95286359719455, 121.2341333378185],\n    [37.683829102283, 121.82740634971174],\n    [37.45742673170285, 122.81616996669459],\n    [36.75648414569666, 122.92601449727579],\n    [36.394765944992976, 122.16798158473269],\n    [35.75543637425928, 121.19019558495245],\n    [35.173803366800854, 120.71776723347901],\n    [34.58799282186823, 120.71776739834384],\n    [32.962591224294634, 121.77246751731724],\n    [31.662743633613125, 122.53052969215035],\n    [30.524406057126036, 123.2995499503723],\n    [29.113784984081622, 122.82715452717251],\n    [27.362016514722864, 121.7834541813496],\n    [25.740539350498306, 120.4870760716402],\n    [24.20687951366758, 118.94896451671647],\n    [23.352335758848977, 117.6965257839707],\n    [22.466869505158872, 116.33971380392327],\n    [22.329746775249067, 114.92247964152898],\n    [22.388174654465878, 114.59015119927648],\n    [22.433886946383172, 114.43772489454962],\n    [22.5607479551203, 114.32921677542767],\n    [22.53793638263667, 114.15757554419271],\n    [22.475747303061777, 113.97215710786733],\n    [22.352611675437526, 113.72772101493868],\n    [22.300196211804582, 113.67781445927564],\n    [22.248581970279023, 113.60799165359187],\n    [22.20053929829942, 113.587005137053],\n    [22.20060625272292, 113.56840234331355],\n    [22.200551561045103, 113.55718142816825],\n    [22.200447837132526, 113.54393304423787],\n    [22.183692964365015, 113.54409545560334],\n    [22.165623501677295, 113.54411811794553],\n    [22.15984833504321, 113.54415075399785],\n    [22.1598007569129, 113.57149935060934],\n    [22.109194262420583, 113.57163147236194],\n    [22.10880647926152, 113.59349447256177],\n    [22.1554039293889, 113.7174343391062],\n    [22.18337161233124, 113.81110590202827],\n    [22.160795137142017, 113.81429144405736],\n    [22.15502998892399, 113.81448544038236],\n    [22.149389146459864, 113.81749787342235],\n    [22.15097001317185, 113.8334835737316],\n    [22.113125524435052, 113.84277980430052],\n    [22.0385934268131, 113.74216011362316],\n    [21.977201970308233, 113.81111893053118],\n    [21.68323340915434, 113.71123870189228],\n    [21.47128990789753, 113.35280484783203],\n    [21.383853241415597, 112.93944237788966],\n    [21.401928807933707, 112.37639921222629],\n    [21.32264505445013, 111.57165950386833],\n    [21.194646857137904, 111.05803134296698],\n    [21.066568578787102, 110.83008361884275],\n    [20.766383063064808, 110.72570108148281],\n    [20.300834200799134, 110.70647252403879],\n    [20.01464522769867, 111.23657084131672],\n    [19.76152820742059, 111.27227022928554],\n    [18.966034391588668, 110.71746006776131],\n    [18.529108123561933, 110.47852728543513],\n    [18.21890326914646, 109.98411853490126],\n    [18.036205374812994, 109.44306098906232],\n    [18.43271883912172, 108.55591398288215],\n    [19.1127409928846, 108.5353179330177],\n    [19.65033979588037, 108.67125645932957],\n    [20.396133798342387, 109.47602470036678],\n    [20.7509886892191, 109.51722383871187],\n    [20.88959973195503, 109.05028192944022],\n    [21.26378708188401, 108.79761187287914],\n    [21.575706419244234, 107.99559367912859],\n    [22.87744671091661, 106.43555188803384],\n    [22.26876357571842, 103.75488313783603],\n    [21.2484183203362, 101.03026843314464],\n    [24.006324182237677, 98.7011711936196],\n    [24.84656629432838, 97.51464911327973],\n    [27.644604636756114, 98.04199090356205],\n    [28.30438146075165, 95.75683684562246],\n    [27.449788517534383, 92.0654287203336],\n    [27.761335198556814, 88.46192103407847],\n    [29.878753422073952, 81.38671594576918],\n    [32.43561292881297, 78.39843876852929],\n    [35.42486450996396, 77.65136321330137],\n    [38.410563529584195, 74.17969676512392],\n    [40.547204766437424, 76.55274079137163],\n    [42.45588490009612, 80.28808193157762],\n    [43.73935869755203, 80.46387460725231],\n    [44.964802251038165, 80.15625672073645],\n    [45.33670778667526, 82.17774311914948],\n    [46.89022175365102, 83.01267925114901],\n    [47.040176782445336, 85.29784443960504],\n    [48.22466848196637, 85.64940749323777],\n    [49.09544897501817, 86.92382123431634],\n    [48.42921007422684, 88.50587296766237],\n    [47.48751776611373, 90.52735221077208],\n    [46.01221881384681, 91.01073388150422],\n    [45.21300692983358, 91.14258227553712],\n    [44.52784059909593, 94.35058283797932],\n    [44.05601390572493, 95.22949335158074],\n    [42.843752197487994, 96.45996364525455],\n    [42.682428799755066, 100.98631865952481],\n    [41.96765055681946, 104.01854265986125],\n    [42.45589934078323, 107.44630257783777],\n    [43.67579771768118, 112.01657428289822],\n    [44.74675078546885, 111.53322489982838],\n    [45.08904930932342, 114.16994753371307],\n    [46.52863352928616, 117.59765485820462],\n    [46.67960408939562, 119.13575705861527],\n    [46.87522455090999, 119.81691991694672],\n    [47.72452741536316, 118.95993311962658],\n    [47.945772932408964, 117.68552839397582],\n    [47.76885441720149, 116.32322243733316],\n    [48.297807732829845, 115.72997613554233],\n    [49.738670801263765, 116.69675436783425],\n    [49.59647525220995, 117.88331210575352],\n    [50.722553154477716, 119.57521014157946],\n    [51.98487623155457, 120.60790542028046],\n    [52.62973718335249, 120.21242455927647],\n    [53.40954073762602, 122.5634894357115],\n    [53.120386590898924, 125.0463540206469],\n    [51.33058938867917, 127.00191258961317],\n    [49.6107024686379, 127.92479317256927],\n    [48.93691881546189, 130.3198002254561],\n    [47.68017514913871, 131.3744993950198],\n    [48.12210713532879, 133.11035656576237],\n    [48.29779970155954, 134.69235934631243],\n    [47.4874985161752, 134.67038525189508],\n    [46.255855107081906, 134.12110778246034],\n    [44.94923918591576, 133.06639006034712],\n    [45.16656906667018, 131.5063813668436],\n    [43.818681504544955, 131.11084369314568],\n    [42.89204139696846, 131.00094391314468],\n    [42.358563355577786, 130.47365809339922],\n    [42.56925743246259, 129.61668875721244],\n    [41.983997027560484, 128.75976413224686],\n    [41.55790383469152, 128.01267252047188],\n    [41.672898214601815, 126.95798727265682],\n    [40.813797600189076, 126.0571198791167],\n  ],\n  CHINA_XZQ: [\n    [40, 124.5],\n    [39, 124.5],\n    [37.5, 124.5],\n    [37.5, 125.5],\n    [33, 125.51],\n    [24.88, 125.5],\n    [24.87, 124.75],\n    [24.87, 122.87],\n    [24.63, 122.88],\n    [24.62, 122.75],\n    [24, 122.75],\n    [24, 122.69],\n    [23.5, 122.69],\n    [23.5, 122.61],\n    [23.16, 122.61],\n    [23.16, 122.52],\n    [22.92, 122.52],\n    [22.92, 122.43],\n    [22.68, 122.43],\n    [22.67, 122.34],\n    [22.13, 122.34],\n    [22.13, 122.17],\n    [21.78, 122.17],\n    [21.78, 121.99],\n    [21.45, 121.99],\n    [21.45, 121.82],\n    [21.29, 121.82],\n    [21.29, 121.64],\n    [21.13, 121.64],\n    [21.12, 121.46],\n    [20.96, 121.46],\n    [20.96, 121.29],\n    [20.63, 121.29],\n    [20.63, 121.11],\n    [20.47, 121.11],\n    [20.47, 120.94],\n    [20.3, 120.94],\n    [20.3, 120.76],\n    [20.14, 120.76],\n    [20.14, 120.59],\n    [19.81, 120.59],\n    [19.81, 120.41],\n    [19.48, 120.41],\n    [19.48, 120.23],\n    [19.14, 120.24],\n    [19.15, 120.06],\n    [18.65, 120.06],\n    [18.65, 119.88],\n    [18.48, 119.88],\n    [18.48, 119.7],\n    [18.15, 119.71],\n    [18.14, 119.53],\n    [17.48, 119.53],\n    [17.48, 119.35],\n    [16.8, 119.36],\n    [16.8, 119.18],\n    [12.25, 119.18],\n    [12.25, 0x77],\n    [11.37, 0x77],\n    [11.37, 118.83],\n    [11.01, 118.83],\n    [11.01, 118.65],\n    [10.66, 118.65],\n    [10.66, 118.48],\n    [10.49, 118.48],\n    [10.49, 118.3],\n    [10.31, 118.3],\n    [10.31, 118.13],\n    [9.97, 118.13],\n    [9.97, 117.95],\n    [9.8, 117.95],\n    [9.8, 117.77],\n    [9.62, 117.77],\n    [9.62, 117.6],\n    [9.27, 117.6],\n    [9.28, 117.42],\n    [9.1, 117.42],\n    [9.1, 117.25],\n    [8.93, 117.25],\n    [8.93, 117.07],\n    [8.75, 117.07],\n    [8.76, 116.89],\n    [8.58, 116.89],\n    [8.58, 116.72],\n    [8.23, 116.72],\n    [8.23, 116.54],\n    [8.06, 116.54],\n    [8.06, 116.37],\n    [7.89, 116.37],\n    [7.88, 116.19],\n    [7.71, 116.19],\n    [7.71, 116.02],\n    [7.36, 116.02],\n    [7.36, 115.84],\n    [7.19, 115.84],\n    [7.19, 115.66],\n    [7.01, 115.66],\n    [7.01, 115.49],\n    [6.84, 115.49],\n    [6.84, 115.31],\n    [6.5, 115.31],\n    [6.5, 115.12],\n    [6.32, 115.13],\n    [6.32, 114.96],\n    [6, 114.96],\n    [6, 114.75],\n    [5.88, 114.75],\n    [5.88, 114.5],\n    [5.63, 114.5],\n    [5.62, 114.37],\n    [5.27, 114.38],\n    [5.26, 114],\n    [4.92, 114],\n    [4.92, 113.91],\n    [4.57, 113.91],\n    [4.56, 113.73],\n    [4.39, 113.73],\n    [4.39, 113.55],\n    [4.04, 113.55],\n    [4.04, 113.38],\n    [3.86, 113.38],\n    [3.86, 113.03],\n    [3.69, 113.03],\n    [3.69, 112.85],\n    [3.51, 112.85],\n    [3.51, 112.32],\n    [3.34, 112.32],\n    [3.34, 109.87],\n    [3.88, 109.88],\n    [3.87, 109.25],\n    [4.5, 109.25],\n    [4.5, 108.75],\n    [5, 108.75],\n    [5, 108.5],\n    [5.5, 108.5],\n    [6, 108.5],\n    [6, 108.12],\n    [10.5, 108.12],\n    [10.5, 108.75],\n    [10.88, 108.75],\n    [10.88, 109.13],\n    [11.25, 109.12],\n    [11.25, 109.37],\n    [11.62, 109.38],\n    [11.62, 109.75],\n    [15.25, 109.75],\n    [15.25, 109.5],\n    [15.75, 109.5],\n    [15.75, 109.25],\n    [15.75, 108.75],\n    [16.25, 108.75],\n    [16.25, 108.25],\n    [16.75, 108.25],\n    [16.75, 107.75],\n    [17.25, 107.75],\n    [17.25, 107],\n    [18.5, 107],\n    [18.5, 106.5],\n    [0x14, 106.5],\n    [19.97, 96.02],\n    [26, 96],\n    [26, 78],\n    [0x20, 78],\n    [31.99, 71.98],\n    [51.98, 71.98],\n    [52, 115.99],\n    [0x38, 115.97],\n    [56.01, 132.01],\n    [0x32, 131.99],\n    [50.01, 136.01],\n    [46, 136.02],\n    [45.99, 0x86],\n    [44, 134.01],\n    [44, 131.5],\n    [43.25, 131.5],\n    [43.25, 131.25],\n    [43.13, 131.25],\n    [42.75, 131.25],\n    [42.75, 130.62],\n    [42.63, 130.62],\n    [42.62, 130.69],\n    [42.5, 130.69],\n    [42.5, 130.75],\n    [42.25, 130.75],\n    [42.25, 130.5],\n    [42.5, 130.5],\n    [42.5, 130],\n    [42.25, 130],\n    [42.25, 129.5],\n    [41.75, 129.5],\n    [41.75, 128.25],\n    [41.25, 128.25],\n    [41.25, 126.5],\n    [40.5, 126.5],\n    [40.5, 125.5],\n    [40.5, 125.25],\n    [40.25, 125.25],\n    [40.25, 124.75],\n    [40.12, 124.75],\n    [40.13, 124.5],\n  ] as [number, number][],\n\n  getUrlParam: (url: string) => {\n    let search\n    if (!url) {\n      const locationObject =\n        null !== (search = window.location) && undefined !== search\n          ? search\n          : ({} as any)\n      url = locationObject.search || ''\n    }\n\n    const params: Record<string, any> = {}\n    const queryStartIndex = url.indexOf('?')\n    url = url.slice(queryStartIndex + 1)\n\n    const queryParams = url.split('&')\n    for (const queryParam of queryParams) {\n      const paramParts = queryParam.split('=')\n      if (paramParts.length > 1) {\n        const paramName = paramParts[0]\n        const paramValue = paramParts[1]\n        params[paramName] = paramValue\n      }\n    }\n\n    return params\n  },\n  getUrlParamLowerCase: (url: string) => {\n    let search\n    if (!url) {\n      const locationObject =\n        null !== (search = window.location) && undefined !== search\n          ? search\n          : ({} as any)\n      url = locationObject.search || ''\n    }\n\n    const paramsLowerCase: Record<string, any> = {}\n\n    // 去除URL开头的问号和路径部分，只保留查询参数部分\n    const queryString = url.replace(/^.*?\\?/, '')\n\n    // 获取所有的“key=value”形式的查询参数对\n    const keyValuePairs = queryString.match(/\\w+=[^&]*/g) || []\n\n    for (const keyValuePair of keyValuePairs) {\n      const pair = keyValuePair.split('=')\n\n      // 解码参数名和参数值，并将参数名转为小写\n      const paramName = decodeURIComponent(pair[0]).toLowerCase()\n      const paramValue = decodeURIComponent(pair[1] || '')\n\n      // 存储参数\n      paramsLowerCase[paramName] = paramValue\n    }\n\n    return paramsLowerCase\n  },\n  isEmpty: (\n    obj: string | number | null | undefined | [] | string[]\n  ): boolean => {\n    return null == obj || 0 == `${obj}`.length || !obj\n  },\n  getObjType: (obj: any) => {\n    // 使用Object.prototype.toString.call()方法获取对象的标准内部类名\n    let objTypeString = Object.prototype.toString.call(obj)\n\n    // 从结果字符串中提取出类名部分，去除前导空白和尾部方括号\n    objTypeString = objTypeString.split(' ')[1]\n\n    // 截取类名，去掉最后的右括号\n    objTypeString = objTypeString.slice(\n      0,\n      Math.max(0, objTypeString.length - 1)\n    )\n\n    // 将类名转换为小写形式\n    objTypeString = objTypeString.toLowerCase()\n\n    return objTypeString\n  },\n  dataFormat: (\n    data: string | number | Date | dayjs.Dayjs,\n    format = 'YYYY-MM-DD HH:mm:ss'\n  ) => {\n    return dayjs(data).format(format)\n  },\n  getString: (text: string | null) => (null == text ? '' : `${text}`),\n  replaceAll: (data: string, replaceStr: string | RegExp, replacement: any) => {\n    if (!data || !replaceStr) return data\n\n    return data.replace(new RegExp(replaceStr, 'g'), replacement)\n  },\n  getNumber: (\n    value: number | string | undefined | null,\n    decimals: number,\n    type?: string | null\n  ) => {\n    let number = 0\n    if (!value) return 0\n    value = Number(value)\n    CommUtils.isEmpty(decimals) && (decimals = 0)\n    CommUtils.isEmpty(type) && (type = 'floor')\n    let pow = 10 ** decimals\n    pow <= 0 && (pow = 1)\n    switch (type) {\n      case 'round':\n        number = Math.round(value * pow) / pow\n        break\n      case 'floor':\n      default:\n        number = Math.floor(value * pow) / pow\n        break\n      case 'ceil':\n        number = Math.ceil(value * pow) / pow\n    }\n    return number\n  },\n  getNumberLEValue: (\n    value: number | null | undefined | string,\n    maxValue: number,\n    divisor: number,\n    decimals: number,\n    type?: string | null\n  ) => {\n    if (!value) return\n    value = Number(value)\n    CommUtils.isEmpty(divisor) && (divisor = 1)\n    CommUtils.isEmpty(maxValue) && (maxValue = Number.MAX_VALUE)\n    if (value <= maxValue) {\n      return CommUtils.getNumber(value / divisor, decimals, type)\n    }\n    return\n  },\n\n  getMousePos: (event: {\n    pageX: any\n    clientX: number\n    pageY: any\n    clientY: number\n  }) => {\n    const scrollLeft =\n      document.documentElement.scrollLeft || document.body.scrollLeft\n    const scrollTop =\n      document.documentElement.scrollTop || document.body.scrollTop\n    return {\n      x: event.pageX || event.clientX + scrollLeft,\n      y: event.pageY || event.clientY + scrollTop,\n    }\n  },\n  getElementPos: (element: {\n    offsetLeft: number\n    offsetTop: number\n    offsetParent: any\n  }) => {\n    let x = 0,\n      y = 0\n    do {\n      x += element.offsetLeft\n      y += element.offsetTop\n      element = element.offsetParent\n    } while (null != element)\n    return {\n      x,\n      y,\n    }\n  },\n  getTimeByTimeZone: (offset: number) => {\n    const date = new Date()\n    const localTime = date.getTime()\n    const localOffset = 60000 * date.getTimezoneOffset()\n    const utc = localTime + localOffset\n    return new Date(utc + 3600000 * offset)\n  },\n  randomNum: (min = 1, max = 100) =>\n    Number.parseInt(`${Math.random() * (max - min + 1) + min}`, 10),\n  bindPopup: (\n    dom: {\n      bindPopup: (arg0: any, arg1: any) => void\n      on: (arg0: string, arg1: { (e: any): void; (e: any): void }) => void\n    },\n    htmlOrText: any,\n    options: any\n  ) => {\n    dom.bindPopup(htmlOrText, options)\n    dom.on(\n      'mousemove',\n      (e: { target: { openPopup: (arg0: any) => void }; latlng: any }) => {\n        e.target.openPopup(e.latlng)\n      }\n    )\n    dom.on('mouseout', (e: { target: { closePopup: () => void } }) => {\n      e.target.closePopup()\n    })\n  },\n  isHasZH_cn: (text: string) => !!escape(text).includes('%u'),\n  msg: (msg?: string) => {\n    console.log(msg)\n    return true\n  },\n\n  setLocalStorage: (key: string, value: any) => {\n    if (CommUtils.isEmpty(key)) {\n      console.error('setLocalStorage key is null.')\n      return\n    }\n    const options = { data: value, createTime: Date.now() / 1000 }\n    window.localStorage.setItem(key, JSON.stringify(options))\n  },\n\n  getLocalStorage: (key: string) => {\n    if (!CommUtils.isEmpty(key)) {\n      const value = window.localStorage.getItem(key) as any\n      if (CommUtils.isEmpty(value)) return null\n      const jsonValue = JSON.parse(value)\n      return jsonValue.data\n    }\n    console.error('getLocalStorage key is null.')\n  },\n  setCookie: (key: string, value: any) => CommUtils.setLocalStorage(key, value),\n  getCookie: (key: string) => CommUtils.getLocalStorage(key),\n\n  getUuid: (len: number) => {\n    if (len) {\n      const hexDigits =\n        '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split(\n          ''\n        )\n      const s: string[] = []\n      for (let i = 0; i < len; i++)\n        s[i] = hexDigits[0 | (Math.random() * hexDigits.length)]\n      return s.join('')\n    }\n    return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n      return (\n        c === 'x' ? Math.trunc(Math.random() * 16) : ('r&0x3' as any | '8')\n      ).toString(16)\n    })\n  },\n\n  getFeatureLabel(\n    targetLayer: L.Layer,\n    labelText: string,\n    labelOptions: LabelOptions\n  ): L.Polygon | null {\n    labelOptions = merge(\n      {\n        isShowOutBounds: false,\n        repeat: false,\n        position: 'lefttop',\n        offset: [5, 0],\n        attributes: {\n          fill: '#fff',\n          fontWeight: '400',\n          fontSize: '12',\n          fontFamily: '微软雅黑',\n          xShift: 5,\n          yShift: 3,\n        },\n        pathOptions: {\n          color: '',\n          weight: 0,\n          fillColor: 'rgba(0,0,0,0)',\n          fillOpacity: 0.9,\n        },\n      },\n      labelOptions\n    )\n\n    const map: L.Map = targetLayer?.['_map'] || labelOptions.map\n    let anchorLatLng!: L.LatLng\n    let isTargetLayerCenterBased = false\n\n    if (labelOptions.anchorLatLng) {\n      anchorLatLng = L.latLng(labelOptions.anchorLatLng)\n    } else if (targetLayer) {\n      if ('getCenter' in targetLayer) {\n        anchorLatLng = (targetLayer as any).getCenter()\n        labelOptions.position = 'center'\n        isTargetLayerCenterBased = true\n      } else if ('getBounds' in targetLayer) {\n        anchorLatLng = (targetLayer as any).getBounds().getCenter()\n        labelOptions.position = 'center'\n        isTargetLayerCenterBased = true\n      } else if ((targetLayer as any)._latlng instanceof L.LatLng) {\n        anchorLatLng = (targetLayer as any)._latlng\n      }\n    }\n\n    if (!map || !anchorLatLng || !labelText || labelText === '') {\n      return null\n    }\n\n    if (!Array.isArray(labelOptions.offset)) {\n      labelOptions.offset = [labelOptions.offset, labelOptions.offset]\n    }\n\n    const [offsetsX, offsetsY] = labelOptions.offset.map(Number)\n    const [textXShift, textYShift] = [\n      Number(labelOptions.attributes.xShift) || 0,\n      Number(labelOptions.attributes.yShift) || 0,\n    ]\n\n    const styles = `${labelOptions.attributes.fontWeight} ${labelOptions.attributes.fontSize}px ${labelOptions.attributes.fontFamily}`\n    const labelWidth =\n      Number(CommUtils.calcStrLength(map, labelText, styles)) + 2 * textXShift\n    const labelHalfWidth = labelWidth / 2\n    const labelHeight =\n      Number(labelOptions.attributes.fontSize) + 2 * textYShift\n    const labelHalfHeight = labelHeight / 2\n\n    const anchorPoint = map!.latLngToLayerPoint(anchorLatLng)\n    let labelX = 0\n    let labelY = 0\n\n    switch (labelOptions.position) {\n      case 'lefttop':\n      case 'topleft':\n        labelX = anchorPoint.x + offsetsX\n        labelY = anchorPoint.y + offsetsY\n        break\n      case 'left':\n        labelX = anchorPoint.x + offsetsX\n        labelY = anchorPoint.y - labelHalfHeight\n        break\n      default:\n        labelX = anchorPoint.x - labelHalfWidth\n        labelY = anchorPoint.y - labelHalfHeight\n    }\n\n    const labelRightX = labelX + labelWidth\n    const labelBottomY = labelY + labelHeight\n\n    const topLeftCorner = map.layerPointToLatLng(L.point(labelX, labelBottomY))\n    const topRightCorner = map.layerPointToLatLng(\n      L.point(labelRightX, labelBottomY)\n    )\n    const bottomRightCorner = map.layerPointToLatLng(\n      L.point(labelRightX, labelY)\n    )\n    const bottomLeftCorner = map.layerPointToLatLng(L.point(labelX, labelY))\n\n    const labelPolygon = L.polygon(\n      [topLeftCorner, topRightCorner, bottomRightCorner, bottomLeftCorner],\n      labelOptions.pathOptions\n    ) as any\n\n    if (\n      isTargetLayerCenterBased &&\n      !labelOptions.isShowOutBounds &&\n      !(targetLayer as any).getBounds().contains(labelPolygon.getBounds())\n    ) {\n      return null\n    }\n\n    delete labelOptions.isShowOutBounds\n    delete labelOptions.position\n    delete labelOptions.map\n    delete labelOptions.pathOptions\n    delete labelOptions.attributes.yShift\n    labelOptions.attributes.xShift += 1\n    labelOptions.offset = 0 - textYShift - 2\n    labelPolygon.setText &&\n      labelPolygon.setText(labelText, {\n        ...labelOptions,\n        attributes: {\n          ...labelOptions.attributes,\n          'font-family': labelOptions.attributes.fontFamily,\n          'font-size': labelOptions.attributes.fontSize,\n          'font-weight': labelOptions.attributes.fontWeight,\n          x: labelOptions.attributes.xShift,\n        },\n      })\n\n    return labelPolygon\n  },\n\n  calcStrWidthOnCanvas(text: string, font?: string): number {\n    if (!text || text.length === 0) {\n      return 0\n    }\n    // 创建并初始化一个临时 canvas 元素\n    const canvas = document.createElement('canvas')\n    const ctx = canvas.getContext('2d')\n    if (!ctx) {\n      return 0\n    }\n    ctx.font = font || 'bold 12px Arial'\n    // 计算文本宽度\n    const width = ctx.measureText(text).width\n    // 无需在地图容器内操作，所以这里省略了与地图容器相关的DOM操作\n    return width\n  },\n  calcStrLength(map: L.Map, text: string, font?: string): number {\n    const width = this.calcStrWidthOnCanvas(text, font)\n    // 这里原本的操作已经简化掉，仅保留计算部分\n    return width\n  },\n}\n\ninterface LabelOptions {\n  isShowOutBounds?: boolean\n  anchorLatLng?: L.LatLngExpression\n  position?: 'lefttop' | 'left' | 'center' | 'topleft'\n  map?: L.Map\n  repeat?: boolean\n  offset: number | [number, number]\n  attributes: {\n    fill?: string\n    fontWeight?: string\n    fontSize?: string\n    fontFamily?: string\n    xShift: number\n    yShift?: number\n    offset?: number\n  }\n  pathOptions?: L.PathOptions\n}\n"],"names":["CommUtils","CHINA_BODER","CHINA_XZQ","getUrlParam","t","n","window","location","search","e","o","indexOf","r","slice","split","s","a","length","g","l","getUrlParamLowerCase","replace","match","decodeURIComponent","toLowerCase","isEmpty","getObjType","Object","prototype","toString","call","Math","max","dataFormat","T","format","getString","replaceAll","RegExp","getNumber","Number","round","floor","ceil","getNumberLEValue","MAX_VALUE","getMousePos","document","documentElement","scrollLeft","body","scrollTop","x","pageX","clientX","y","pageY","clientY","getElementPos","offsetLeft","offsetTop","offsetParent","getTimeByTimeZone","Date","getTime","getTimezoneOffset","randomNum","parseInt","random","bindPopup","on","target","openPopup","latlng","closePopup","isHasZH_cn","escape","includes","msg","setLocalStorage","data","createTime","now","localStorage","setItem","JSON","stringify","getLocalStorage","getItem","parse","setCookie","getCookie","getUuid","join","trunc","getFeatureLabel","E","isShowOutBounds","repeat","position","offset","attributes","fill","fontWeight","fontSize","fontFamily","xShift","yShift","pathOptions","color","weight","fillColor","fillOpacity","_map","map","anchorLatLng","i","latLng","getCenter","getBounds","_latlng","LatLng","Array","isArray","p","L","d","calcStrLength","S","h","c","latLngToLayerPoint","u","f","b","w","layerPointToLatLng","point","P","C","N","m","polygon","contains","setText","calcStrWidthOnCanvas","createElement","getContext","font","measureText","width","this"],"mappings":"4GAAwH,MAACA,EAAU,CAACC,YAAY,CAAC,CAAC,kBAAkB,mBAAmB,CAAC,iBAAiB,oBAAoB,CAAC,kBAAkB,oBAAoB,CAAC,kBAAkB,oBAAoB,CAAC,mBAAmB,oBAAoB,CAAC,kBAAkB,mBAAmB,CAAC,kBAAkB,oBAAoB,CAAC,iBAAiB,oBAAoB,CAAC,iBAAiB,oBAAoB,CAAC,kBAAkB,oBAAoB,CAAC,kBAAkB,oBAAoB,CAAC,mBAAmB,oBAAoB,CAAC,kBAAkB,oBAAoB,CAAC,kBAAkB,oBAAoB,CAAC,kBAAkB,oBAAoB,CAAC,kBAAkB,oBAAoB,CAAC,kBAAkB,mBAAmB,CAAC,iBAAiB,oBAAoB,CAAC,kBAAkB,oBAAoB,CAAC,kBAAkB,oBAAoB,CAAC,kBAAkB,oBAAoB,CAAC,kBAAkB,oBAAoB,CAAC,mBAAmB,oBAAoB,CAAC,kBAAkB,oBAAoB,CAAC,kBAAkB,mBAAmB,CAAC,gBAAgB,oBAAoB,CAAC,kBAAkB,oBAAoB,CAAC,kBAAkB,oBAAoB,CAAC,mBAAmB,oBAAoB,CAAC,kBAAkB,oBAAoB,CAAC,mBAAmB,oBAAoB,CAAC,kBAAkB,oBAAoB,CAAC,mBAAmB,oBAAoB,CAAC,mBAAmB,oBAAoB,CAAC,mBAAmB,mBAAmB,CAAC,mBAAmB,oBAAoB,CAAC,mBAAmB,mBAAmB,CAAC,mBAAmB,mBAAmB,CAAC,kBAAkB,oBAAoB,CAAC,mBAAmB,mBAAmB,CAAC,mBAAmB,oBAAoB,CAAC,mBAAmB,oBAAoB,CAAC,mBAAmB,oBAAoB,CAAC,mBAAmB,oBAAoB,CAAC,iBAAiB,oBAAoB,CAAC,kBAAkB,oBAAoB,CAAC,mBAAmB,oBAAoB,CAAC,mBAAmB,oBAAoB,CAAC,mBAAmB,oBAAoB,CAAC,mBAAmB,oBAAoB,CAAC,kBAAkB,kBAAkB,CAAC,kBAAkB,oBAAoB,CAAC,mBAAmB,oBAAoB,CAAC,mBAAmB,oBAAoB,CAAC,mBAAmB,oBAAoB,CAAC,mBAAmB,oBAAoB,CAAC,kBAAkB,oBAAoB,CAAC,iBAAiB,oBAAoB,CAAC,mBAAmB,oBAAoB,CAAC,kBAAkB,oBAAoB,CAAC,iBAAiB,mBAAmB,CAAC,kBAAkB,oBAAoB,CAAC,mBAAmB,oBAAoB,CAAC,kBAAkB,oBAAoB,CAAC,mBAAmB,oBAAoB,CAAC,kBAAkB,mBAAmB,CAAC,mBAAmB,oBAAoB,CAAC,iBAAiB,oBAAoB,CAAC,mBAAmB,oBAAoB,CAAC,kBAAkB,oBAAoB,CAAC,kBAAkB,oBAAoB,CAAC,mBAAmB,oBAAoB,CAAC,mBAAmB,oBAAoB,CAAC,kBAAkB,oBAAoB,CAAC,mBAAmB,oBAAoB,CAAC,mBAAmB,oBAAoB,CAAC,mBAAmB,oBAAoB,CAAC,mBAAmB,oBAAoB,CAAC,kBAAkB,oBAAoB,CAAC,kBAAkB,oBAAoB,CAAC,mBAAmB,oBAAoB,CAAC,mBAAmB,oBAAoB,CAAC,kBAAkB,oBAAoB,CAAC,mBAAmB,oBAAoB,CAAC,kBAAkB,oBAAoB,CAAC,iBAAiB,mBAAmB,CAAC,kBAAkB,oBAAoB,CAAC,mBAAmB,oBAAoB,CAAC,iBAAiB,oBAAoB,CAAC,kBAAkB,oBAAoB,CAAC,kBAAkB,oBAAoB,CAAC,mBAAmB,oBAAoB,CAAC,kBAAkB,oBAAoB,CAAC,kBAAkB,oBAAoB,CAAC,iBAAiB,oBAAoB,CAAC,mBAAmB,kBAAkB,CAAC,kBAAkB,mBAAmB,CAAC,mBAAmB,mBAAmB,CAAC,kBAAkB,mBAAmB,CAAC,mBAAmB,kBAAkB,CAAC,mBAAmB,mBAAmB,CAAC,mBAAmB,mBAAmB,CAAC,kBAAkB,mBAAmB,CAAC,kBAAkB,mBAAmB,CAAC,mBAAmB,mBAAmB,CAAC,mBAAmB,mBAAmB,CAAC,kBAAkB,mBAAmB,CAAC,kBAAkB,mBAAmB,CAAC,mBAAmB,mBAAmB,CAAC,kBAAkB,mBAAmB,CAAC,kBAAkB,mBAAmB,CAAC,mBAAmB,mBAAmB,CAAC,kBAAkB,mBAAmB,CAAC,kBAAkB,mBAAmB,CAAC,kBAAkB,mBAAmB,CAAC,kBAAkB,mBAAmB,CAAC,kBAAkB,mBAAmB,CAAC,kBAAkB,mBAAmB,CAAC,kBAAkB,mBAAmB,CAAC,kBAAkB,mBAAmB,CAAC,mBAAmB,mBAAmB,CAAC,mBAAmB,oBAAoB,CAAC,kBAAkB,oBAAoB,CAAC,kBAAkB,oBAAoB,CAAC,kBAAkB,oBAAoB,CAAC,kBAAkB,oBAAoB,CAAC,kBAAkB,oBAAoB,CAAC,kBAAkB,oBAAoB,CAAC,kBAAkB,oBAAoB,CAAC,kBAAkB,oBAAoB,CAAC,kBAAkB,oBAAoB,CAAC,mBAAmB,oBAAoB,CAAC,kBAAkB,oBAAoB,CAAC,mBAAmB,oBAAoB,CAAC,mBAAmB,oBAAoB,CAAC,kBAAkB,oBAAoB,CAAC,mBAAmB,oBAAoB,CAAC,kBAAkB,oBAAoB,CAAC,kBAAkB,oBAAoB,CAAC,kBAAkB,mBAAmB,CAAC,mBAAmB,mBAAmB,CAAC,kBAAkB,oBAAoB,CAAC,iBAAiB,oBAAoB,CAAC,kBAAkB,mBAAmB,CAAC,kBAAkB,mBAAmB,CAAC,kBAAkB,oBAAoB,CAAC,kBAAkB,oBAAoB,CAAC,iBAAiB,oBAAoB,CAAC,mBAAmB,oBAAoB,CAAC,kBAAkB,oBAAoB,CAAC,kBAAkB,mBAAmB,CAAC,mBAAmB,oBAAoB,CAAC,kBAAkB,oBAAoB,CAAC,mBAAmB,oBAAoB,CAAC,kBAAkB,oBAAoB,CAAC,mBAAmB,oBAAoB,CAAC,kBAAkB,oBAAoB,CAAC,mBAAmB,oBAAoB,CAAC,mBAAmB,oBAAoBC,UAAU,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC,KAAK,OAAO,CAAC,KAAK,OAAO,CAAC,GAAG,QAAQ,CAAC,MAAM,OAAO,CAAC,MAAM,QAAQ,CAAC,MAAM,QAAQ,CAAC,MAAM,QAAQ,CAAC,MAAM,QAAQ,CAAC,GAAG,QAAQ,CAAC,GAAG,QAAQ,CAAC,KAAK,QAAQ,CAAC,KAAK,QAAQ,CAAC,MAAM,QAAQ,CAAC,MAAM,QAAQ,CAAC,MAAM,QAAQ,CAAC,MAAM,QAAQ,CAAC,MAAM,QAAQ,CAAC,MAAM,QAAQ,CAAC,MAAM,QAAQ,CAAC,MAAM,QAAQ,CAAC,MAAM,QAAQ,CAAC,MAAM,QAAQ,CAAC,MAAM,QAAQ,CAAC,MAAM,QAAQ,CAAC,MAAM,QAAQ,CAAC,MAAM,QAAQ,CAAC,MAAM,QAAQ,CAAC,MAAM,QAAQ,CAAC,MAAM,QAAQ,CAAC,MAAM,QAAQ,CAAC,MAAM,QAAQ,CAAC,MAAM,QAAQ,CAAC,MAAM,QAAQ,CAAC,MAAM,QAAQ,CAAC,KAAK,QAAQ,CAAC,KAAK,QAAQ,CAAC,MAAM,QAAQ,CAAC,MAAM,QAAQ,CAAC,MAAM,QAAQ,CAAC,MAAM,QAAQ,CAAC,MAAM,QAAQ,CAAC,MAAM,QAAQ,CAAC,MAAM,QAAQ,CAAC,MAAM,QAAQ,CAAC,MAAM,QAAQ,CAAC,MAAM,QAAQ,CAAC,MAAM,QAAQ,CAAC,MAAM,OAAO,CAAC,MAAM,QAAQ,CAAC,MAAM,QAAQ,CAAC,MAAM,QAAQ,CAAC,MAAM,QAAQ,CAAC,KAAK,QAAQ,CAAC,KAAK,QAAQ,CAAC,MAAM,QAAQ,CAAC,MAAM,KAAK,CAAC,MAAM,KAAK,CAAC,MAAM,QAAQ,CAAC,MAAM,QAAQ,CAAC,MAAM,QAAQ,CAAC,MAAM,QAAQ,CAAC,MAAM,QAAQ,CAAC,MAAM,QAAQ,CAAC,MAAM,OAAO,CAAC,MAAM,OAAO,CAAC,MAAM,QAAQ,CAAC,KAAK,QAAQ,CAAC,KAAK,QAAQ,CAAC,IAAI,QAAQ,CAAC,IAAI,QAAQ,CAAC,KAAK,QAAQ,CAAC,KAAK,OAAO,CAAC,KAAK,OAAO,CAAC,KAAK,QAAQ,CAAC,IAAI,QAAQ,CAAC,IAAI,QAAQ,CAAC,KAAK,QAAQ,CAAC,KAAK,QAAQ,CAAC,KAAK,QAAQ,CAAC,KAAK,QAAQ,CAAC,KAAK,QAAQ,CAAC,KAAK,QAAQ,CAAC,KAAK,QAAQ,CAAC,KAAK,QAAQ,CAAC,KAAK,QAAQ,CAAC,KAAK,QAAQ,CAAC,KAAK,QAAQ,CAAC,KAAK,QAAQ,CAAC,KAAK,QAAQ,CAAC,KAAK,QAAQ,CAAC,KAAK,QAAQ,CAAC,KAAK,QAAQ,CAAC,KAAK,QAAQ,CAAC,KAAK,QAAQ,CAAC,KAAK,QAAQ,CAAC,KAAK,QAAQ,CAAC,KAAK,QAAQ,CAAC,KAAK,QAAQ,CAAC,IAAI,QAAQ,CAAC,IAAI,QAAQ,CAAC,KAAK,QAAQ,CAAC,KAAK,QAAQ,CAAC,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC,KAAK,QAAQ,CAAC,KAAK,OAAO,CAAC,KAAK,OAAO,CAAC,KAAK,QAAQ,CAAC,KAAK,QAAQ,CAAC,KAAK,KAAK,CAAC,KAAK,KAAK,CAAC,KAAK,QAAQ,CAAC,KAAK,QAAQ,CAAC,KAAK,QAAQ,CAAC,KAAK,QAAQ,CAAC,KAAK,QAAQ,CAAC,KAAK,QAAQ,CAAC,KAAK,QAAQ,CAAC,KAAK,QAAQ,CAAC,KAAK,QAAQ,CAAC,KAAK,QAAQ,CAAC,KAAK,QAAQ,CAAC,KAAK,QAAQ,CAAC,KAAK,QAAQ,CAAC,KAAK,QAAQ,CAAC,KAAK,QAAQ,CAAC,KAAK,QAAQ,CAAC,KAAK,QAAQ,CAAC,IAAI,QAAQ,CAAC,IAAI,QAAQ,CAAC,EAAE,QAAQ,CAAC,EAAE,OAAO,CAAC,IAAI,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,KAAK,QAAQ,CAAC,KAAK,QAAQ,CAAC,MAAM,QAAQ,CAAC,MAAM,QAAQ,CAAC,MAAM,QAAQ,CAAC,MAAM,QAAQ,CAAC,MAAM,QAAQ,CAAC,MAAM,QAAQ,CAAC,MAAM,QAAQ,CAAC,MAAM,OAAO,CAAC,MAAM,OAAO,CAAC,MAAM,QAAQ,CAAC,MAAM,QAAQ,CAAC,MAAM,QAAQ,CAAC,MAAM,QAAQ,CAAC,MAAM,QAAQ,CAAC,MAAM,QAAQ,CAAC,MAAM,QAAQ,CAAC,MAAM,KAAK,CAAC,KAAK,KAAK,CAAC,KAAK,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,OAAO,CAAC,MAAM,OAAO,CAAC,GAAG,QAAQ,CAAC,GAAG,QAAQ,CAAC,MAAM,QAAQ,CAAC,GAAG,QAAQ,CAAC,MAAM,QAAQ,CAAC,GAAG,QAAQ,CAAC,MAAM,KAAK,CAAC,GAAG,QAAQ,CAAC,GAAG,OAAO,CAAC,MAAM,OAAO,CAAC,MAAM,QAAQ,CAAC,MAAM,QAAQ,CAAC,MAAM,QAAQ,CAAC,MAAM,QAAQ,CAAC,MAAM,QAAQ,CAAC,MAAM,QAAQ,CAAC,KAAK,QAAQ,CAAC,KAAK,QAAQ,CAAC,MAAM,QAAQ,CAAC,MAAM,OAAO,CAAC,KAAK,OAAO,CAAC,KAAK,KAAK,CAAC,MAAM,KAAK,CAAC,MAAM,OAAO,CAAC,MAAM,OAAO,CAAC,MAAM,QAAQ,CAAC,MAAM,QAAQ,CAAC,MAAM,OAAO,CAAC,KAAK,OAAO,CAAC,KAAK,OAAO,CAAC,KAAK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"}