地图开发 火星坐标(GCJ-02)和百度坐标(BD-09)互相转换

发布时间:2020-08-01 18:32:34 作者:水木童
来源:网络 阅读:2568

■ 背景

  1. 国际坐标系 WGS-84:地心坐标系,国际通用。应用:Googole Map
  2. 火星坐标系 GCJ-02:由中国×××(G表示Guojia国家,C表示Cehui测绘,J表示Ju局)制订的地理信息系统的坐标系统。应用:高德地图
  3. 百度坐标系 BD-09:在GCJ-02的基础上二次偏移。应用:百度地图

■ GCJ-02和BD-09互相转换 (js)

// 高德地图坐标系(火星坐标GCJ-02) -> 百度地图坐标系(百度坐标BD-09)
// 参数形式为"lng,lat"
// 返回字符串"lng,lat"
function gcj2bdString(value, mapType) {
    if (mapType == BAIDU) {
        var x_pi = 3.14159265358979324 * 3000.0 / 180.0;
        var ll = value.split(",");
        var x = ll[0], y = ll[1];
        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);
        return (z * Math.cos(theta) + 0.0065) + ',' + (z * Math.sin(theta) + 0.006);
    } else if (mapType == GAODE) {
        return value;
    }
}

// 百度地图坐标系(百度坐标BD-09) -> 高德地图坐标系(火星坐标GCJ-02)
// 参数形式为"lng,lat"
// 返回字符串"lng,lat"
function bd2gcjString(value, mapType) {
    if (mapType == BAIDU) {
        var x_pi = 3.14159265358979324 * 3000.0 / 180.0;
        var ll = value.split(",");
        var x = ll[0] - 0.0065, y = ll[1] - 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);
        return (z * Math.cos(theta)) + ',' + (z * Math.sin(theta));
    } else if (mapType == GAODE) {
        return value;
    }
}
推荐阅读:
  1. php gps如何转gcj-02
  2. js中火星坐标、百度坐标、WGS84坐标转换实现方法示例

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

火星坐标 百度坐标 高德地图

上一篇:python内置数据结构

下一篇:ssh-keygen免密登录

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》