淄博网站建设 优易科技,做网站赚多少钱,成都建设网站那个好,大前端xiu阿里百秀wordpress主题目录一、常见的经纬度标准二、百度地图和高德、腾讯地图经纬度的转换1、前端JavaScript转换2、后端Java实现转换一、常见的经纬度标准
高德、腾讯#xff08;使用GCJ02#xff09; GCJ-02坐标系#xff0c;也称火星坐标系#xff0c;由中国国家测绘局在02年发布#xff0…
目录一、常见的经纬度标准二、百度地图和高德、腾讯地图经纬度的转换1、前端JavaScript转换2、后端Java实现转换一、常见的经纬度标准
高德、腾讯使用GCJ02 GCJ-02坐标系也称火星坐标系由中国国家测绘局在02年发布是在GPS坐标WGS-84坐标系基础上经加密后而来。
谷歌使用GCJ02和WGS84 谷歌国内版经纬度用的 GCJ02又名 国测局 或 火星坐标 。
百度使用BD09 BD09坐标是在的GCJ02基础上再加密得到
二、百度地图和高德、腾讯地图经纬度的转换
1、前端JavaScript转换
//将腾讯、高德地图经纬度转换为百度地图经纬度
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 }
}// 将百度地图经纬度转换为腾讯、高德地图经纬度
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 }
}2、后端Java实现转换
public class CoordinateTransformationUtils {public final static double x_pi 3.14159265358979324 * 3000.0 / 180.0;/*** 高德坐标转百度坐标** param gd_lon 经度* param gd_lat 纬度* return*/public static MapString, Double gd2bd(double gd_lon, double gd_lat) {MapString, Double data new HashMap();double x gd_lon, y gd_lat;double z Math.sqrt(x * x y * y) 0.00002 * Math.sin(y * x_pi);double theta Math.atan2(y, x) 0.000003 * Math.cos(x * x_pi);double bd_lon z * Math.cos(theta) 0.0065;double bd_lat z * Math.sin(theta) 0.006;data.put(lon, bd_lon);data.put(lat, bd_lat);return data;}/*** 百度坐标转换高德坐标** param bd_lon 经度* param bd_lat 纬度* return*/public static MapString, Double bd2gd(double bd_lon, double bd_lat) {double x bd_lon - 0.0065, y bd_lat - 0.006;double z Math.sqrt(x * x y * y) - 0.00002 * Math.sin(y * x_pi);double theta Math.atan2(y, x) - 0.000003 * Math.cos(x * x_pi);double gd_lon z * Math.cos(theta);double gd_lat z * Math.sin(theta);MapString, Double data new HashMap();data.put(lon, gd_lon);data.put(lat, gd_lat);return data;}}