|
在我国,为了国家安全,电子地图不可以使用地球坐标系WGS84,必须经过偏转。面前主流的几款地图都有其对应的坐标系。 例如 高德、腾讯、图灵、阿里地图等都是 GCJ-02坐标系(也称火星坐标系) 而百度则使用BD-09坐标系。
那么这3个常用坐标系直接如何转换呢。 1,GCJ-02(火星)转BD-09(百度地图) - function MapabcEncryptToBdmap(gg_lat, gg_lon)
- {
-
- var point=new Object();
- var x_pi = 3.14159265358979324 * 3000.0 / 180.0;
- var x = new Number(gg_lon);
- var y = new Number(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;
- point.lng=bd_lon;
- point.lat=bd_lat;
- //alert("-1:"+point.lng+","+point.lat);
- return point;
- }
复制代码
2,BD-09(百度地图)转 GCJ-02(火星)
- function BdmapEncryptToMapabc(bd_lat,bd_lon)
- {
- var point=new Object();
- var x_pi = 3.14159265358979324 * 3000.0 / 180.0;
- var x = new Number(bd_lon - 0.0065);
- var y = new Number(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 Mars_lon = z * Math.cos(theta);
- var Mars_lat = z * Math.sin(theta);
- point.lng=Mars_lon;
- point.lat=Mars_lat;
- return point;
- }
复制代码
3,WGS84(地球坐标系)转BD-09(百度坐标系) - function GPSToBaidu(lngX,latY){
- var gps_point=new BMap.Point(lngX,latY);
- BMap.Convertor.translate(gps_point,0,function(bd_point){
- alert("lng:"+bd_point.lng+" lat:"+bd_point.lat);
- });
- }
复制代码
|