美文网首页harmonyOs
HarmonyOS Next 华为地图与百度地图坐标系转换

HarmonyOS Next 华为地图与百度地图坐标系转换

作者: SnapKit | 来源:发表于2024-06-21 12:14 被阅读0次

因为华为地图只提供了WGS84转GCJ02,详见convertCoordinate
项目中由于使用的是百度地图坐标,因此需要转换。下为非官方转换,准确度待检验

import { mapCommon } from '@kit.MapKit';

export class CoordTransform {
  // 定义一些常量
  static x_PI: number = 3.14159265358979324 * 3000.0 / 180.0;
  static PI: number = 3.1415926535897932384626;
  static a: number = 6378245.0;
  static ee: number = 0.00669342162296594323;

  /**
   * 百度坐标系 (BD-09) 与 火星坐标系 (GCJ-02) 的转换
   * 即 百度 转 华为、高德
   * @param bd_lng
   * @param bd_lat
   * @returns {*[]}
   */
  static async bd09togcj02(bd_lng: number, bd_lat: number): Promise<mapCommon.LatLng> {
    let x = bd_lng - 0.0065;
    let y = bd_lat - 0.006;
    let z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * CoordTransform.x_PI);
    let theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * CoordTransform.x_PI);
    let gg_lng = z * Math.cos(theta);
    let gg_lat = z * Math.sin(theta);
    return { "longitude": gg_lng, "latitude": gg_lat } as mapCommon.LatLng
  };

  /**
   * 火星坐标系 (GCJ-02) 与百度坐标系 (BD-09) 的转换
   * 即 华为、高德 转 百度
   * @param lng
   * @param lat
   * @returns {*[]}
   */
  static async gcj02tobd09(lng: number, lat: number): Promise<mapCommon.LatLng> {
    let z = Math.sqrt(lng * lng + lat * lat) + 0.00002 * Math.sin(lat * CoordTransform.x_PI);
    let theta = Math.atan2(lat, lng) + 0.000003 * Math.cos(lng * CoordTransform.x_PI);
    let bd_lng = z * Math.cos(theta) + 0.0065;
    let bd_lat = z * Math.sin(theta) + 0.006;
    return { "longitude": bd_lng, "latitude": bd_lat } as mapCommon.LatLng
  };
}

参考https://www.jianshu.com/p/22a1f8181bf2

相关文章

  • 地图坐标转换

    地图坐标转换 简介 各地图API坐标系统比较与转换; WGS84坐标系:即地球坐标系,国际上通用的坐标系。设备一般...

  • java实现常用地图坐标转换

    java实现常用的几种在线地图(天地图、百度地图、高德地图)坐标系之间的转换算法; 首先说明一下常用的几种地图所用...

  • 数据爬取

    (一)地理偏移 高德地图:GCJ-02 坐标系(火星坐标系)百度地图:BD-09坐标系(百度坐标系)不同地图定位偏...

  • 2018-07-09

    地图坐标:百度地图 —— 百度坐标系:bd09高德地图 —— 火星坐标系:GCJ-02坐标系(国测局坐标)WGS8...

  • bd09坐标转wgs84

    之前公司定位用的是百度定位,但是由于公司地图展示位天地图,由于偏移严重(毕竟坐标系不同)需要坐标系转换,之前看公司...

  • iOS 通过openURL打开本地地图(及不同坐标系转化)

    在调地图之前,先了解下不同地图使用的坐标系 API 坐标系百度地图API ...

  • 高德地图坐标转百度地图坐标

    前端用了高德,后台用了百度,要转过之后才能传给后台,蛋疼 mark 百度地图和高德地图坐标系的互相转换 百度坐标(...

  • iOS地图的那些坐标系

    常用的地图有苹果自带地图, 百度地图, 高德地图,谷歌地图. 一个个来聊聊. 常用的坐标系:GCJ-02坐标系(也...

  • iOS中百度地图与高德地图经纬度转换

    百度地图 —— 百度坐标系:bd09高德地图 —— 火星坐标系:GCJ-02坐标系 两者之间的差异就不多说了,网上...

  • 百度地图坐标转高德地图

    百度地图坐标和高德地图坐标转换代码 Java实现 最近做项目需要百度地图坐标转换到高德地图坐标,高德官方也给出了转...

网友评论

    本文标题:HarmonyOS Next 华为地图与百度地图坐标系转换

    本文链接:https://www.haomeiwen.com/subject/xvnhcjtx.html