UNPKG

vue-tianditu2

Version:
1 lines 4.69 kB
{"version":3,"file":"converter.mjs","sources":["../../../packages/utils/converter.ts"],"sourcesContent":["import { useInit as useInitMarker } from \"../overlay/marker/use/init\";\nimport type { Props as MarkerProps } from \"../overlay/marker/use/const\";\nimport type { Bounds, IconOptions, LngLat, LngLats, Point } from \"~/utils/types\";\n\n/**\n * 转换为经纬度对象\n * @param lnglat 经纬度\n */\nexport const toLngLat = (lnglat: LngLat) => {\n const [lng, lat] = lnglat;\n return new T.LngLat(lng, lat);\n};\n\n/**\n * 转换为经纬度数组对象\n * @param lnglats 经纬度数组\n */\nexport const toLngLats = (lnglats: LngLats) => {\n return lnglats.map(lnglat => {\n const [lng, lat] = lnglat;\n return new T.LngLat(lng, lat);\n });\n};\n\n/**\n * 转换为地理范围对象\n * @param bounds 地理范围数组\n */\nexport const toBounds = (bounds: Bounds) => {\n const [[lng1, lat1], [lng2, lat2]] = bounds;\n return new T.LngLatBounds(new T.LngLat(lng1, lat1), new T.LngLat(lng2, lat2));\n};\n\n/**\n * 转换为像素坐标点对象\n * @param point 像素坐标点数组\n */\nexport const toPoint = (point: Point) => {\n const [x, y] = point;\n return new T.Point(x, y);\n};\n\n/**\n * 过滤掉对象中undefined的属性\n * @param obj 对象\n */\nexport const objectFilter = (obj: Record<string, any>) => {\n const res: Record<string, any> = {};\n Object.keys(obj).forEach(key => {\n if (obj[key] !== undefined) {\n res[key] = obj[key];\n }\n });\n return res;\n};\n\n/**\n * 转换为图标对象\n * @param icon 图标配置或者图片地址\n */\nexport const toIcon = (icon: IconOptions | string) => {\n if (typeof icon === \"string\") {\n return new T.Icon({ iconUrl: icon });\n } else {\n const { iconUrl, iconSize, iconAnchor } = icon;\n const iconOption = {\n iconUrl,\n iconSize: iconSize && toPoint(iconSize),\n iconAnchor: iconAnchor && toPoint(iconAnchor)\n };\n return new T.Icon(objectFilter(iconOption));\n }\n};\n\n/**\n * 转换为点标注对象\n * @param option 点标注配置\n */\nexport const toMarker = (option: MarkerProps) => {\n const marker = useInitMarker(option);\n if (option.icon) {\n marker.setIcon(toIcon(option.icon));\n }\n marker.extData = option.extData;\n return marker;\n};\n\n/**\n * 转换 LonLat String 为 LonLat Number Array(抽离出来用于统一兼容,疑似原格式 \"xxx.xx xxx.xx\",新格式 \"xxx.xx,xxx.xx\")\n * @param lonlat LonLat String\n * @returns LonLat Number Array\n */\nexport const toLonLatNumberArray = (lonlat: string): LngLat => {\n let lnglat: number[] = [];\n if (lonlat.includes(\" \")) {\n lnglat = lonlat.split(\" \").map(Number);\n } else if (lonlat.includes(\",\")) {\n lnglat = lonlat.split(\",\").map(Number);\n }\n if (lnglat.length != 2) {\n throw new Error(\"unknown lonlat format: \" + lonlat);\n }\n return lnglat as unknown as LngLat;\n};\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;"}