百度地圖和高德地圖的座標轉換
阿新 • • 發佈:2019-02-04
在專案開發中,車機使用了百度地圖傳高德GPS座標,web使用了高德地圖,問題就來了:在ios10版本以上,高德定位API呼叫失敗。換成百度地圖就可以,換成百度地圖,那麼久需要進行座標轉換,網上找的轉換方法
電子地圖地理座標系統及相關演算法的JavaScript實現
下面直接上程式碼:
火星座標 轉換到 百度地圖座標
function bd_encrypt(gg_lon, gg_lat){
var X_PI = Math.PI * 3000.0 / 180.0;
var x = gg_lon, y = gg_lat;
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 bd_lon = z * Math.cos(theta) + 0.0065;
var bd_lat = z * Math.sin(theta) + 0.006;
return {
bd_lat: bd_lat,
bd_lon: bd_lon
};
}
百度地圖座標 轉換到 火星座標
Js程式碼 收藏程式碼
function bd_decrypt(bd_lon,bd_lat) {
var X_PI = Math.Pi * 3000.0 / 180.0;
var x = bd_lon - 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_lon = z * Math.cos(theta);
var gg_lat = z * Math.sin(theta);
return {
gg_lon: gg_lon,
gg_lat: gg_lat
}
}
電子地圖地理座標系統及相關演算法的JavaScript實現
下面直接上程式碼:
火星座標 轉換到 百度地圖座標
function bd_encrypt(gg_lon, gg_lat){
var X_PI = Math.PI * 3000.0 / 180.0;
var x = gg_lon, y = gg_lat;
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 bd_lon = z * Math.cos(theta) + 0.0065;
var bd_lat = z * Math.sin(theta) + 0.006;
return {
bd_lat: bd_lat,
bd_lon: bd_lon
};
}
百度地圖座標 轉換到 火星座標
Js程式碼 收藏程式碼
function bd_decrypt(bd_lon,bd_lat) {
var X_PI = Math.Pi * 3000.0 / 180.0;
var x = bd_lon - 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_lon = z * Math.cos(theta);
var gg_lat = z * Math.sin(theta);
return {
gg_lon: gg_lon,
gg_lat: gg_lat
}
}