当前位置: 首页 > Web前端 > HTML

Mapbox获取各种经纬度

时间:2023-03-28 13:09:30 HTML

点击地图获取经纬度,也可以手动输入经纬度转换在线查看运行效果,只需要在地图上添加监听事件即可。map.on('click',e=>{const{lng,lat}=e.lngLatconsole.log(lng,lat)})直接在代码上进行坐标转换,复制粘贴即可/***创建由Wandergis于2015年7月8日发布。*提供百度坐标(BD09)、国测局坐标(火星坐标、GCJ02)、WGS84坐标系之间的转换*///定义一些常量varx_PI=3.14159265358979324*3000.0/180.0;varPI=3.1415926535897932384626;vara=6378245;varee=0.00669342162296594323;/***百度坐标系(BD-09)和火星坐标系(GCJ-02)之间的转换*即百度到谷歌,高德*@parambd_lon*@parambd_lat*@returns{*[]}*/functionbd09togcj02(bd_lon,bd_lat){varx_pi=3.14159265358979324*3000.0/180.0;varx=bd_lon-0.0065;vary=bd_lat-0.006Math=.sqrt(x*x+y*y)-0.00002*Math.sin(y*x_pi);vartheta=Math.atan2(y,x)-0.000003*Math.cos(x*x_pi);vargg_lng=z*Math.cos(theta);vargg_lat=z*Math.sin(theta);return[gg_lng,gg_lat]}/***火星坐标系(GCJ-02)与百度坐标系(BD-09)之间的转换*即Google,High德转百度*@paramlng*@paramlat*@returns{*[]}*/functiongcj02tobd09(lng,lat){varz=Math.sqrt(lng*lng+lat*lat)+0.00002*Math.sin(lat*x_PI);vartheta=Math.atan2(lat,lng)+0.000003*Math.cos(lng*x_PI);varbd_lng=z*Math.cos(theta)+0.0065;varbd_lat=z*Math.sin(theta)+0.006;return[bd_lng,bd_lat]}/***WGS84达GCj02*@paramlng*@paramlat*@returns{*[]}*/functionwgs84togcj02(lng,lat){if(out_of_china(lng,lat)){返回[lng,lat]}else{vardlat=transformlat(lng-105.0,lat-35.0);vardlng=transformlng(lng-105.0,lat-35.0);varradlat=lat/180.0*PI;varmagic=Math.sin(radlat);魔法=1-ee*魔法*魔法;varsqrtmagic=Math.sqrt(魔法);dlat=(dlat*180.0)/((a*(1-ee))/(magic*sqrtmagic)*PI);dlng=(dlng*180.0)/(a/sqrtmagic*Math.cos(radlat)*PI);varmglat=lat+dlat;varmglng=lng+dlng;return[mglng,mglat]}}/***GCJ02转换为WGS84*@paramlng*@paramlat*@returns{*[]}*/functiongcj02towgs84(lng,lat){if(out_of_china(lng,lat)){return[lng,lat]}else{vardlat=transformlat(lng-105.0,lat-35.0);vardlng=transformlng(lng-105.0,lat-35.0);varradlat=lat/180.0*PI;varmagic=Math.sin(radlat);魔法=1-ee*魔法*魔法;varsqrtmagic=Math.sqrt(魔法);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;返回[lng*2-mglng,lat*2-mglat]}}functiontransformlat(lng,lat){varret=-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;returnret}functiontransformlng(lng,lat){varret=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;returnret}/***判断是否是国内,不在国内不偏移*@paramlng*@paramlat*@returns{boolean}*/functionout_of_china(lng,lat){return(lng<72.004||液化天然气>137.8347)||((lat<0.8293||lat>55.8271)||false);}export{wgs84togcj02,gcj02tobd09}在线查看运行效果