高德地图、百度地图、腾讯地图坐标相互转换

高德地图、百度地图、腾讯地图坐标相互转换

1.WGS-84原始坐标系,一般用国际GPS纪录仪记录下来的经纬度,通过GPS定位拿到的原始经纬度,Google和高德地图定位的的经纬度(国外)都是基于WGS-84坐标系的;但是在国内是不允许直接用WGS84坐标系标注的,必须经过加密后才能使用;
2.GCJ-02坐标系,又名“火星坐标系”,是我国国测局独创的坐标体系,由WGS-84加密而成,在国内,必须至少使用GCJ-02坐标系,或者使用在GCJ-02加密后再进行加密的坐标系,如百度坐标系。高德和Google在国内都是使用GCJ-02坐标系,可以说,GCJ-02是国内最广泛使用的坐标系;
3.百度坐标系:bd-09,百度坐标系是在GCJ-02坐标系的基础上再次加密偏移后形成的坐标系,只适用于百度地图。

  • 将腾讯、高德地图经纬度转换为百度地图经纬度
//将腾讯、高德地图经纬度转换为百度地图经纬度
mapPointTxTurnBaiDu (dataLon, dataLat) {
	 let bd_lat;
	 let bd_lon;
	 let x_pi = 3.14159265358979324;
	 let x = dataLon, y = dataLat;
	 let z = Math.sqrt(x * x + y * y) + 0.00002 * Math.sin(y * x_pi);
	 let theta = Math.atan2(y, x) + 0.000003 * Math.cos(x * x_pi);
	 bd_lon = z * Math.cos(theta) + 0.0065;
	 bd_lat = z * Math.sin(theta) + 0.006;
	 return { bd_lat, bd_lon };
},
selectAreaTreeVal (val) {
  let self = this
  self.houseLists.forEach(item => {
    const pointData = this.mapPointTxTurnBaiDu(item.lng, item.lat)
    item.lng = pointData.bd_lon
    item.lat = pointData.bd_lat
    let point = new self.BMap.Point(item.lng, item.lat)
    let marker = new self.BMap.Marker(point) // 创建标注
    self.map.addOverlay(marker)
  })
},

  • 百度地图坐标转腾讯、高德地图坐标
 //百度地图坐标转腾讯、高德地图坐标
transPosition(bd_lng, bd_lat) {
     var X_PI = Math.PI * 3000.0 / 180.0;
     var x = bd_lng - 0.0065;
     var y = bd_lat - 0.006;
     var z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * X_PI);
     var theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * X_PI);
     var gg_lng = z * Math.cos(theta);
     var gg_lat = z * Math.sin(theta);
     return {lon: gg_lng, lat: gg_lat}
 },
 selectAreaTreeVal (val) {
  let self = this
  self.houseLists.forEach(item => {
    const pointData = this.transPosition(item.lng, item.lat)
    item.lng = pointData.gg_lng
    item.lat = pointData.gg_lat
    let point = new self.AMap.Point(item.lng, item.lat)
    let marker = new self.AMap.Marker(point) // 创建标注
    self.map.addOverlay(marker)
  })
},

JavaScript中,高德地图腾讯地图坐标系是基于不同的地理编码服务,它们使用的坐标系统分别是: **高德地图坐标(AMap)**: 高德地图使用的是GCJ-02(GoogleChina02)坐标系统,这是中国的一个自定义坐标系,适用于中国大陆地区,主要用于处理在国内的地理位置数据。如果你有高德地图坐标,通常是按照这个系统生成的。 **腾讯地图坐标(TencentMap)**: 腾讯地图使用的是BD-09(百度09)坐标系统,也叫做Web Mercator,这是一个世界性的经纬度系统,类似于WGS84,但腾讯进行了本地化处理以适应中国的地形。 如果你需要在两种地图之间进行坐标转换,通常需要调用相应的API或服务,因为直接的坐标转换可能会有偏差。以下是一般的做法: 1. **手动转换**: 如果你手头有一些坐标点并且知道转换公式,可以使用经纬度的转换算法进行计算。但这种方法可能不够精确,特别是对于复杂的地理区域。 2. **使用第三方库**: 有些第三方JavaScript库提供了坐标转换的功能,比如`geohash.js`、`turf.js`等,可以方便地进行高德到腾讯,或者腾讯到高德的坐标转换。 3. **使用官方提供的转换服务**: 高德地图腾讯地图都提供了坐标转换的API,例如高德地图有`AMap.Geocoder`的`convert`方法,腾讯地图有`coordConverter`工具类的`from_gcj02_to_wgs84`和`from_wgs84_to_bd09`方法,直接调用这些接口即可。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值