- 百度经纬度转腾讯经纬度
let longitude ="120.712922"
let latitude = "31.350502"
let x_pi = 3.14159265358979324;
let x = parseFloat(Number(activityDetail.longitude)) - 0.0065;
let y = parseFloat(Number(activityDetail.latitude)) - 0.006;
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);
let lng = Number((z * Math.cos(theta)).toFixed(7));
let lat = Number((z * Math.sin(theta)).toFixed(7));
- 将GCJ-02(火星坐标)转为百度坐标
function transformFromGCJToBaidu(latitude, longitude) {
var pi = 3.14159265358979324 * 3000.0 / 180.0;
var z = Math.sqrt(longitude * longitude + latitude * latitude) + 0.00002 * Math.sin(latitude * pi);
var theta = Math.atan2(latitude, longitude) + 0.000003 * Math.cos(longitude * pi);
var a_latitude = (z * Math.sin(theta) + 0.006);
var a_longitude = (z * Math.cos(theta) + 0.0065);
return { latitude: a_latitude, longitude: a_longitude };
}
两点之间直线距离计算
const GetDistance = (lat1, lng1, lat2, lng2) => {
lat1 = Number(lat1)
lng1 = Number(lng1)
lat2 = Number(lat2)
lng2 = Number(lng2)
const radLat1 = lat1 * Math.PI / 180.0
const radLat2 = lat2 * Math.PI / 180.0
const a = radLat1 - radLat2
const b = lng1 * Math.PI / 180.0 - lng2 * Math.PI / 180.0
let s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2)))
s = s * 6378.137 // EARTH_RADIUS;
s = (Math.round(s * 10000) / 10000).toFixed(1)
return s
}