上文说到项目要由高德地图换为百度地图,但是对接的项目用的还是高德地图。所以我在百度地图中拿到坐标要进行转换后,才能将数据传给接口;在页面中,拿到查询接口返回的坐标,我还要将高德转换成百度后,才能使用。
下面是百度转换为高德
// 百度转换高德
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)
}
本文介绍了如何在JavaScript中实现从百度地图坐标到高德地图坐标以及反之的转换,通过`bd_decrypt`和`gd_decrypt`函数实现在项目中处理不同地图服务接口的数据对接问题。
4433

被折叠的 条评论
为什么被折叠?



