前言
在開發中使用了第三方的數據,因爲經緯度使用的是第三方的數組,他們使用的是百度的地圖座標。在項目中使用時,能用百度地圖去解析天然是最好的,可是呢,該項目是基於微信小程序的,百度地圖針對小程序提供的API功能不是很完善,難以實現想要的需求,因此採用騰訊官方的地圖。小程序
開始
使用不一樣的地圖,相應的經緯度會存在些許誤差,騰訊和高德是同一座標的,能夠互用,百度的座標與二者稍有不一樣,使用前,須要先通過換算。微信小程序
實踐
將騰訊/高德地圖經緯度轉換爲百度地圖經緯度數組
function qqMapTransBMap(lng, lat) {
let x_pi = 3.14159265358979324 * 3000.0 / 180.0;
let x = lng;
let y = lat;
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 lngs = z * Math.cos(theta) + 0.0065;
let lats = z * Math.sin(theta) + 0.006;
return {
lng: lngs,
lat: lats
}
}微信
將百度地圖經緯度轉換爲騰訊/高德地圖經緯度.net
function bMapTransQQMap(lng, lat) {
let x_pi = 3.14159265358979324 * 3000.0 / 180.0;
let x = lng - 0.0065;
let y = lat - 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 lngs = z * Math.cos(theta);
let lats = z * Math.sin(theta);
return {
lng: lngs,
lat: lats
}
}blog
原文:https://blog.csdn.net/weixin_39015132/article/details/82958562 開發