<!DOCTYPE html><html><head><meta charset="UTF-8"><title></title></head><body><script>/** ** 百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换 *///定义一些常量var x_PI = 3.14159265358979324 * 3000.0 / 180.0;var PI = 3.1415926535897932384626;var a = 6378245.0;var ee = 0.00669342162296594323;/** * 百度坐标系 (BD-09) 与 火星坐标系 (GCJ-02)的转换 * 即 百度 转 谷歌、高德 * @param bd_lon * @param bd_lat * @returns {*[]} */function bd09togcj02(bd_lon, bd_lat) {var x_pi = 3.14159265358979324 * 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_lng = z * Math.cos(theta);var gg_lat = z * Math.sin(theta);return [gg_lng, gg_lat]}/** * 火星坐标系 (GCJ-02) 与百度坐标系 (BD-09) 的转换 * 即谷歌、高德 转 百度 * @param lng * @param lat * @returns {*[]} */function gcj02tobd09(lng, lat) {var z = Math.sqrt(lng * lng + lat * lat) + 0.00002 * Math.sin(lat * x_PI);var theta = Math.atan2(lat, lng) + 0.000003 * Math.cos(lng * x_PI);var bd_lng = z * Math.cos(theta) + 0.0065;var bd_lat = z * Math.sin(theta) + 0.006;return [bd_lng, bd_lat]}/** * WGS84转GCj02 * @param lng * @param lat * @returns {*[]} */function wgs84togcj02(lng, lat) {if (out_of_china(lng, lat)) {return [lng, lat]}else {var dlat = transformlat(lng - 105.0, lat - 35.0);var dlng = transformlng(lng - 105.0, lat - 35.0);var radlat = lat / 180.0 * PI;var magic = Math.sin(radlat);magic = 1 - ee * magic * magic;var sqrtmagic = Math.sqrt(magic);dlat = (dlat * 180.0) / ((a * (1 - ee)) / (magic * sqrtmagic) * PI);dlng = (dlng * 180.0) / (a / sqrtmagic * Math.cos(radlat) * PI);var mglat = lat + dlat;var mglng = lng + dlng;return [mglng, mglat]}}/** * GCJ02 转换为 WGS84 * @param lng * @param lat * @returns {*[]} */function gcj02towgs84(lng, lat) {if (out_of_china(lng, lat)) {return [lng, lat]}else {var dlat = transformlat(lng - 105.0, lat - 35.0);var dlng = transformlng(lng - 105.0, lat - 35.0);var radlat = lat / 180.0 * PI;var magic = Math.sin(radlat);magic = 1 - ee * magic * magic;var sqrtmagic = Math.sqrt(magic);dlat = (dlat * 180.0) / ((a * (1 - ee)) / (magic * sqrtmagic) * PI);dlng = (dlng * 180.0) / (a / sqrtmagic * Math.cos(radlat) * PI);mglat = lat + dlat;mglng = lng + dlng;return [lng * 2 - mglng, lat * 2 - mglat]}}function transformlat(lng, lat) {var ret = -100.0 + 2.0 * lng + 3.0 * lat + 0.2 * lat * lat + 0.1 * lng * lat + 0.2 * Math.sqrt(Math.abs(lng));ret += (20.0 * Math.sin(6.0 * lng * PI) + 20.0 * Math.sin(2.0 * lng * PI)) * 2.0 / 3.0;ret += (20.0 * Math.sin(lat * PI) + 40.0 * Math.sin(lat / 3.0 * PI)) * 2.0 / 3.0;ret += (160.0 * Math.sin(lat / 12.0 * PI) + 320 * Math.sin(lat * PI / 30.0)) * 2.0 / 3.0;return ret}function transformlng(lng, lat) {var ret = 300.0 + lng + 2.0 * lat + 0.1 * lng * lng + 0.1 * lng * lat + 0.1 * Math.sqrt(Math.abs(lng));ret += (20.0 * Math.sin(6.0 * lng * PI) + 20.0 * Math.sin(2.0 * lng * PI)) * 2.0 / 3.0;ret += (20.0 * Math.sin(lng * PI) + 40.0 * Math.sin(lng / 3.0 * PI)) * 2.0 / 3.0;ret += (150.0 * Math.sin(lng / 12.0 * PI) + 300.0 * Math.sin(lng / 30.0 * PI)) * 2.0 / 3.0;return ret}/** * 判断是否在国内,不在国内则不做偏移 * @param lng * @param lat * @returns {boolean} */function out_of_china(lng, lat) {return (lng < 72.004 || lng > 137.8347) || ((lat < 0.8293 || lat > 55.8271) || false);}var zb =[[117.18081017153435,39.180351072353005],[117.18869831274674,39.172327705878956],[117.19865736657812,39.162310151786585],[117.19867418187522,39.16206056849401],[117.19861652942734,39.161933913947195],[117.19128459695293,39.15406191112996],[117.18436695927721,39.14805767152242],[117.18409784984459,39.14760548894955],[117.18368777833075,39.14736200482281],[117.17579902867737,39.14568051561204],[117.17517219175295,39.145291603176815],[117.17454535482852,39.1447860137979],[117.17409403224167,39.14400817689392],[117.17354912836254,39.142786952618906],[117.17350905478082,39.141150049556416],[117.17354912836254,39.1406216739866],[117.17368305709431,39.13841120991569],[117.17377790333029,39.13808016680974],[117.17456038476769,39.137742991676106],[117.17470265412027,39.13758972971803],[117.17471846182542,39.13651688666937],[117.17471869877892,39.13622798955586],[117.17437302902323,39.12927034970724],[117.17335825329019,39.12055515945039],[117.1734196029791,39.11326106865883],[117.17308446162815,39.100752269326904],[117.1730419555326,39.09499586854889],[117.17611745748218,39.07799577159699],[117.17740039157604,39.072955172895945],[117.17820999825722,39.070710375407],[117.1791583946569,39.0690581588394],[117.1805231602064,39.06781897103181],[117.18235055814654,39.06618464659786],[117.18547441310773,39.06222084933921],[117.18688465058597,39.0597650746997],[117.18764799403016,39.057286351047026],[117.18838820585404,39.05460995027451],[117.18894336472226,39.052436422659895],[117.18909008942717,39.050849520419234],[117.18909008942717,39.048999233208264],[117.18911322104753,39.04718482683441],[117.18914892971304,39.0439627481033],[117.18914892971304,39.03983056922391],[117.18933398266853,39.03785422432469],[117.19016672097013,39.03706367088628],[117.19236308813385,39.03667310300159],[117.19639785932725,39.03594429210341],[117.19971203374354,39.035305706070375],[117.20266653031513,39.034766894616865],[117.2052896766898,39.034282952274765],[117.20811571689006,39.03380400203159],[117.21107021346171,39.03322526615625],[117.21153265640226,39.032985787855836],[117.21150696512876,39.031868211725424],[117.21166111277557,39.02913406704522],[117.21171247447069,39.02725670009224],[117.21168678319526,39.026198908820135],[117.21130141407707,39.0250013901649],[117.21050498456736,39.02412319692388],[117.21009392417375,39.0234645448339],[117.20968286378218,39.02274600828264],[117.20981132015356,39.020550434681695],[117.20997778083591,39.016765575794864],[117.21013623909391,39.013219745822965],[117.21019962239666,39.01065875805031],[117.21023563653279,39.01012983796761],[117.21150330258968,39.008824673767435],[117.21277096864776,39.00759336470858],[117.21391186809927,39.006829942327784],[117.21587675048852,39.00609113863044],[117.21838039095218,39.00532770003693],[117.21940778292611,39.00499564334342],[117.22035853246945,39.00366575664913],[117.2212775903613,39.00154773733959],[117.22257694806956,38.998863179892965],[117.22330585605204,38.99699131810107],[117.22357150165982,38.994245917197304],[117.22357150165982,38.99286656541702],[117.22334966010027,38.991019177169505],[117.2229376686314,38.98860518385564],[117.22235630852248,38.98602480802788],[117.22226123356836,38.98496554228058],[117.22305352485364,38.98370918328854],[117.22416273265497,38.98210790911887],[117.22660298981464,38.98067904928331],[117.2289481720216,38.97942261422247],[117.2312848656959,38.978082757127055],[117.2353097054285,38.97596397212331],[117.23876409543425,38.97404222857523],[117.24033427181308,38.97312217637892]];var zhzb =[];for(var i = 0; i< zb.length;i++){ var lng = zb[i][0]; var lat = zb[i][1]; //console.log(lng+"--------------------------"+lat) var abn = wgs84togcj02(lng,lat);// console.log(abn) zhzb.push(abn);}console.log("高德坐标-gcj02------ "+JSON.stringify(zhzb));var baidu =[];for(var i = 0; i< zhzb.length;i++){ var lng = zhzb[i][0]; var lat = zhzb[i][1];// console.log(lng+"--------------------------"+lat) var abn = gcj02tobd09(lng,lat); //console.log(abn) baidu.push(abn);} console.log("百度坐标-bd09------ "+JSON.stringify(baidu));</script></body></html>
84坐标直接转换成百度坐标系
var x_PI = 3.14159265358979324 * 3000.0 / 180.0;var PI = 3.1415926535897932384626;var a = 6378245.0;var ee = 0.00669342162296594323;function wgs84tobd(lng, lat) {var dlat = transformlat(lng - 105.0, lat - 35.0);var dlng = transformlng(lng - 105.0, lat - 35.0);var radlat = lat / 180.0 * PI;var magic = Math.sin(radlat);magic = 1 - ee * magic * magic;var sqrtmagic = Math.sqrt(magic);dlat = (dlat * 180.0) / ((a * (1 - ee)) / (magic * sqrtmagic) * PI);dlng = (dlng * 180.0) / (a / sqrtmagic * Math.cos(radlat) * PI);var lat = lat + dlat;var lng = lng + dlng;var z = Math.sqrt(lng * lng + lat * lat) + 0.00002 * Math.sin(lat * x_PI);var theta = Math.atan2(lat, lng) + 0.000003 * Math.cos(lng * x_PI);var bd_lng = z * Math.cos(theta) + 0.0065;var bd_lat = z * Math.sin(theta) + 0.006;return [bd_lng, bd_lat]}function transformlat(lng, lat) {var ret = -100.0 + 2.0 * lng + 3.0 * lat + 0.2 * lat * lat + 0.1 * lng * lat + 0.2 * Math.sqrt(Math.abs(lng));ret += (20.0 * Math.sin(6.0 * lng * PI) + 20.0 * Math.sin(2.0 * lng * PI)) * 2.0 / 3.0;ret += (20.0 * Math.sin(lat * PI) + 40.0 * Math.sin(lat / 3.0 * PI)) * 2.0 / 3.0;ret += (160.0 * Math.sin(lat / 12.0 * PI) + 320 * Math.sin(lat * PI / 30.0)) * 2.0 / 3.0;return ret}function transformlng(lng, lat) {var ret = 300.0 + lng + 2.0 * lat + 0.1 * lng * lng + 0.1 * lng * lat + 0.1 * Math.sqrt(Math.abs(lng));ret += (20.0 * Math.sin(6.0 * lng * PI) + 20.0 * Math.sin(2.0 * lng * PI)) * 2.0 / 3.0;ret += (20.0 * Math.sin(lng * PI) + 40.0 * Math.sin(lng / 3.0 * PI)) * 2.0 / 3.0;ret += (150.0 * Math.sin(lng / 12.0 * PI) + 300.0 * Math.sin(lng / 30.0 * PI)) * 2.0 / 3.0;return ret}var gg = wgs84tobd(119.86,39.56); //调用转换的方法输入的是84坐标系 返回的是百度坐标系console.log(gg);