Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 | 24x 144x 1x 1x 24x 24x 24x 24x 24x 24x | import gcoord from 'gcoord' import type { CRSTypes } from 'gcoord/dist/types/crs/index' export interface GeoCoordTransformInput { /** * 经度。 */ longitude: number /** * 纬度。 */ latitude: number } export interface GeoCoordTransformOutput { /** * 经度。 */ longitude: number /** * 纬度。 */ latitude: number } const makeTransformer = (from: CRSTypes, to: CRSTypes) => (input: GeoCoordTransformInput): GeoCoordTransformOutput => { const res = gcoord.transform([input.longitude, input.latitude], from, to) return { longitude: res[0], latitude: res[1], } } /** * 地理坐标系转换工具。 * * - `大地坐标系(WGS84 坐标系)`: GPS 全球卫星定位系统使用的坐标系; * - `火星坐标系(GCJ02 坐标系)`: 腾讯地图、高德地图等使用的坐标系,是由中国国家测绘局制定的由 WGS84 加密后得到的坐标系; * - `百度坐标系(BD09 坐标系)`: 百度地图使用的坐标系,是在 GCJ02 基础上再次加密得到的坐标系。 */ export class GeoCoord { /** * `WGS84 坐标系` 转 `GCJ02 坐标系`。 * * 应用场景:GPS 坐标转腾讯地图、高德地图坐标。 */ static WGS84ToGCJ02 = makeTransformer(gcoord.WGS84, gcoord.GCJ02) /** * `WGS84 坐标系` 转 `BD09 坐标系`。 * * 应用场景:GPS 坐标转百度地图坐标。 */ static WGS84ToBD09 = makeTransformer(gcoord.WGS84, gcoord.BD09) /** * `GCJ02 坐标系` 转 `WGS84 坐标系`。 * * 应用场景:腾讯地图、高德地图坐标转 GPS 坐标。 */ static GCJ02ToWGS84 = makeTransformer(gcoord.GCJ02, gcoord.WGS84) /** * `GCJ02 坐标系` 转 `BD09 坐标系`。 * * 应用场景:腾讯地图、高德地图坐标转百度地图坐标。 */ static GCJ02ToBD09 = makeTransformer(gcoord.GCJ02, gcoord.BD09) /** * `BD09 坐标系` 转 `WGS84 坐标系`。 * * 应用场景:百度地图坐标转 GPS 坐标。 */ static BD09ToWGS84 = makeTransformer(gcoord.BD09, gcoord.WGS84) /** * `BD09 坐标系` 转 `GCJ02 坐标系`。 * * 应用场景:百度地图坐标转腾讯地图、高德地图坐标。 */ static BD09ToGCJ02 = makeTransformer(gcoord.BD09, gcoord.GCJ02) } |