{"version":3,"file":"converter.mjs","sources":["../../../packages/utils/converter.ts"],"sourcesContent":["import { useInit as useInitMarker } from \"../overlay/marker/use/init\";\r\nimport type { Props as MarkerProps } from \"../overlay/marker/use/const\";\r\nimport type { Bounds, IconOptions, LngLat, LngLats, Point } from \"~/utils/types\";\r\n\r\n/**\r\n * 转换为经纬度对象\r\n * @param lnglat 经纬度\r\n */\r\nexport const toLngLat = (lnglat: LngLat) => {\r\n  const [lng, lat] = lnglat;\r\n  return new T.LngLat(lng, lat);\r\n};\r\n\r\n/**\r\n * 转换为经纬度数组对象\r\n * @param lnglats 经纬度数组\r\n */\r\nexport const toLngLats = (lnglats: LngLats) => {\r\n  return lnglats.map(lnglat => {\r\n    const [lng, lat] = lnglat;\r\n    return new T.LngLat(lng, lat);\r\n  });\r\n};\r\n\r\n/**\r\n * 转换为地理范围对象\r\n * @param bounds 地理范围数组\r\n */\r\nexport const toBounds = (bounds: Bounds) => {\r\n  const [[lng1, lat1], [lng2, lat2]] = bounds;\r\n  return new T.LngLatBounds(new T.LngLat(lng1, lat1), new T.LngLat(lng2, lat2));\r\n};\r\n\r\n/**\r\n * 转换为像素坐标点对象\r\n * @param point 像素坐标点数组\r\n */\r\nexport const toPoint = (point: Point) => {\r\n  const [x, y] = point;\r\n  return new T.Point(x, y);\r\n};\r\n\r\n/**\r\n * 过滤掉对象中undefined的属性\r\n * @param obj 对象\r\n */\r\nexport const objectFilter = (obj: Record<string, any>) => {\r\n  const res: Record<string, any> = {};\r\n  Object.keys(obj).forEach(key => {\r\n    if (obj[key] !== undefined) {\r\n      res[key] = obj[key];\r\n    }\r\n  });\r\n  return res;\r\n};\r\n\r\n/**\r\n * 转换为图标对象\r\n * @param icon 图标配置或者图片地址\r\n */\r\nexport const toIcon = (icon: IconOptions | string) => {\r\n  if (typeof icon === \"string\") {\r\n    return new T.Icon({ iconUrl: icon });\r\n  } else {\r\n    const { iconUrl, iconSize, iconAnchor } = icon;\r\n    const iconOption = {\r\n      iconUrl,\r\n      iconSize: iconSize && toPoint(iconSize),\r\n      iconAnchor: iconAnchor && toPoint(iconAnchor)\r\n    };\r\n    return new T.Icon(objectFilter(iconOption));\r\n  }\r\n};\r\n\r\n/**\r\n * 转换为点标注对象\r\n * @param option 点标注配置\r\n */\r\nexport const toMarker = (option: MarkerProps) => {\r\n  const marker = useInitMarker(option);\r\n  if (option.icon) {\r\n    marker.setIcon(toIcon(option.icon));\r\n  }\r\n  marker.extData = option.extData;\r\n  return marker;\r\n};\r\n\r\n/**\r\n * 转换 LonLat String 为 LonLat Number Array(抽离出来用于统一兼容，疑似原格式 \"xxx.xx xxx.xx\"，新格式 \"xxx.xx,xxx.xx\")\r\n * @param lonlat LonLat String\r\n * @returns LonLat Number Array\r\n */\r\nexport const toLonLatNumberArray = (lonlat: string): LngLat => {\r\n  let lnglat: number[] = [];\r\n  if (lonlat.includes(\" \")) {\r\n    lnglat = lonlat.split(\" \").map(Number);\r\n  } else if (lonlat.includes(\",\")) {\r\n    lnglat = lonlat.split(\",\").map(Number);\r\n  }\r\n  if (lnglat.length != 2) {\r\n    throw new Error(\"unknown lonlat format: \" + lonlat);\r\n  }\r\n  return lnglat as unknown as LngLat;\r\n};\r\n"],"names":["toLngLat","lnglat","lng","lat","toLngLats","lnglats","toBounds","bounds","lng1","lat1","lng2","lat2","toPoint","point","x","y","objectFilter","obj","res","key","toIcon","icon","iconUrl","iconSize","iconAnchor","iconOption","toMarker","option","marker","useInitMarker","toLonLatNumberArray","lonlat"],"mappings":";AAQa,MAAAA,IAAW,CAACC,MAAmB;AACpC,QAAA,CAACC,GAAKC,CAAG,IAAIF;AACnB,SAAO,IAAI,EAAE,OAAOC,GAAKC,CAAG;AAC9B,GAMaC,IAAY,CAACC,MACjBA,EAAQ,IAAI,CAAUJ,MAAA;AACrB,QAAA,CAACC,GAAKC,CAAG,IAAIF;AACnB,SAAO,IAAI,EAAE,OAAOC,GAAKC,CAAG;AAAA,CAC7B,GAOUG,IAAW,CAACC,MAAmB;AACpC,QAAA,CAAC,CAACC,GAAMC,CAAI,GAAG,CAACC,GAAMC,CAAI,CAAC,IAAIJ;AACrC,SAAO,IAAI,EAAE,aAAa,IAAI,EAAE,OAAOC,GAAMC,CAAI,GAAG,IAAI,EAAE,OAAOC,GAAMC,CAAI,CAAC;AAC9E,GAMaC,IAAU,CAACC,MAAiB;AACjC,QAAA,CAACC,GAAGC,CAAC,IAAIF;AACf,SAAO,IAAI,EAAE,MAAMC,GAAGC,CAAC;AACzB,GAMaC,IAAe,CAACC,MAA6B;AACxD,QAAMC,IAA2B,CAAC;AAClC,gBAAO,KAAKD,CAAG,EAAE,QAAQ,CAAOE,MAAA;AAC1B,IAAAF,EAAIE,CAAG,MAAM,WACXD,EAAAC,CAAG,IAAIF,EAAIE,CAAG;AAAA,EACpB,CACD,GACMD;AACT,GAMaE,IAAS,CAACC,MAA+B;AAChD,MAAA,OAAOA,KAAS;AAClB,WAAO,IAAI,EAAE,KAAK,EAAE,SAASA,GAAM;AAC9B;AACL,UAAM,EAAE,SAAAC,GAAS,UAAAC,GAAU,YAAAC,EAAe,IAAAH,GACpCI,IAAa;AAAA,MACjB,SAAAH;AAAA,MACA,UAAUC,KAAYX,EAAQW,CAAQ;AAAA,MACtC,YAAYC,KAAcZ,EAAQY,CAAU;AAAA,IAC9C;AACA,WAAO,IAAI,EAAE,KAAKR,EAAaS,CAAU,CAAC;AAAA,EAAA;AAE9C,GAMaC,IAAW,CAACC,MAAwB;AACzC,QAAAC,IAASC,EAAcF,CAAM;AACnC,SAAIA,EAAO,QACTC,EAAO,QAAQR,EAAOO,EAAO,IAAI,CAAC,GAEpCC,EAAO,UAAUD,EAAO,SACjBC;AACT,GAOaE,IAAsB,CAACC,MAA2B;AAC7D,MAAI9B,IAAmB,CAAC;AAMpB,MALA8B,EAAO,SAAS,GAAG,IACrB9B,IAAS8B,EAAO,MAAM,GAAG,EAAE,IAAI,MAAM,IAC5BA,EAAO,SAAS,GAAG,MAC5B9B,IAAS8B,EAAO,MAAM,GAAG,EAAE,IAAI,MAAM,IAEnC9B,EAAO,UAAU;AACb,UAAA,IAAI,MAAM,4BAA4B8B,CAAM;AAE7C,SAAA9B;AACT;"}