百度坐标和高德坐标相互转换

本文介绍了如何在JavaScript中实现从百度地图坐标到高德地图坐标以及反之的转换,通过`bd_decrypt`和`gd_decrypt`函数实现在项目中处理不同地图服务接口的数据对接问题。

上文说到项目要由高德地图换为百度地图,但是对接的项目用的还是高德地图。所以我在百度地图中拿到坐标要进行转换后,才能将数据传给接口;在页面中,拿到查询接口返回的坐标,我还要将高德转换成百度后,才能使用。
下面是百度转换为高德

// 百度转换高德
    bd_decrypt(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 { lng: gg_lng, lat: gg_lat }
    }

引用

get_gd(){
	const amapGps = this.bd_decrypt(result.point.lng, result.point.lat)
	console.log('amapGps', amapGps)
}

高德转换为百度

// 高德百度坐标
    gd_decrypt(lng, lat) {
      const xsPI = 3.14159265358979324 * 3000.0 / 180.0
      const bdlat = Number(lat)
      const bdlng = Number(lng)
      const z = Math.sqrt(bdlng * bdlng + bdlat * bdlat) + 0.00002 * Math.sin(bdlat * xsPI)
      const theta = Math.atan2(bdlat, bdlng) + 0.000003 * Math.cos(bdlng * xsPI)
      const bdslng = z * Math.cos(theta) + 0.0065
      const bdslat = z * Math.sin(theta) + 0.006
      return [bdslng, bdslat] // 注意啊,我这里为了方便,所以返回的是数组,不是对象
    }

引用

get_bd(){
	const amapGps = this.gd_decrypt(posRes.data.driverLongitude, posRes.data.driverLatitude)
	console.log('amapGps', amapGps)
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值