美文网首页
转--百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、

转--百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、

作者: 灰灰是只小贱狗 | 来源:发表于2018-08-13 14:17 被阅读1297次

    先贴原文链接

    百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系互转

    coordtransform 坐标转换

    支持node、浏览器(AMD方式和直接引用方式)

    为什么写这个模块

    image

    当前互联网地图的坐标系现状

    地球坐标 (WGS84)

    • 国际标准,从专业GPS 设备中取出的数据的坐标系
    • 国际地图提供商使用的坐标系

    火星坐标 (GCJ-02)也叫国测局坐标系

    • 中国标准,从国行移动设备中定位获取的坐标数据使用这个坐标系
    • 国家规定: 国内出版的各种地图系统(包括电子形式),必须至少采用GCJ-02对地理位置进行首次加密。

    百度坐标 (BD-09)

    • 百度标准,百度 SDK,百度地图,Geocoding 使用
    • (本来就乱了,百度又在火星坐标上来个二次加密)

    开发过程需要注意的事

    •     如果使用的是百度sdk那么可以获得百度坐标(bd09)或者火星坐标(GCJ02),默认是bd09
          如果使用的是ios的原生定位库,那么获得的坐标是WGS84
          如果使用的是高德sdk,那么获取的坐标是GCJ02
      
    • 火星坐标系:
              iOS 地图(其实是高德)
              Gogole地图
              搜搜、阿里云、高德地图
      百度坐标系:
              当然只有百度地图
      WGS84坐标系:
              国际标准,谷歌国外地图、osm地图等国外的地图一般都是这个
      

    举个栗子


    安装(install)

    npm install coordtransform
    

    示例用法(Example&Usage)

    //国测局坐标(火星坐标,比如高德地图在用),百度坐标,wgs84坐标(谷歌国外以及绝大部分国外在线地图使用的坐标)
    var coordtransform=require('coordtransform');
    //百度经纬度坐标转国测局坐标
    var bd09togcj02=coordtransform.bd09togcj02(116.404, 39.915);
    //国测局坐标转百度经纬度坐标
    var gcj02tobd09=coordtransform.gcj02tobd09(116.404, 39.915);
    //wgs84转国测局坐标
    var wgs84togcj02=coordtransform.wgs84togcj02(116.404, 39.915);
    //国测局坐标转wgs84坐标
    var gcj02towgs84=coordtransform.gcj02towgs84(116.404, 39.915);
    console.log(bd09togcj02);
    console.log(gcj02tobd09);
    console.log(wgs84togcj02);
    console.log(gcj02towgs84);
    //result
    //bd09togcj02:   [ 116.39762729119315, 39.90865673957631 ]
    //gcj02tobd09:   [ 116.41036949371029, 39.92133699351021 ]
    //wgs84togcj02:  [ 116.41024449916938, 39.91640428150164 ]
    //gcj02towgs84:  [ 116.39775550083061, 39.91359571849836 ]
    
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>coordTransform</title>
    </head>
    <body>
    <h1>请按F12打开控制台查看结果</h1>
    <script src="index.js"></script>
    <script>
        //国测局坐标(火星坐标,比如高德地图在用),百度坐标,wgs84坐标(谷歌国外以及绝大部分国外在线地图使用的坐标)
        //百度经纬度坐标转国测局坐标
        var bd09togcj02 = coordtransform.bd09togcj02(116.404, 39.915);
        //国测局坐标转百度经纬度坐标
        var gcj02tobd09 = coordtransform.gcj02tobd09(116.404, 39.915);
        //wgs84转国测局坐标
        var wgs84togcj02 = coordtransform.wgs84togcj02(116.404, 39.915);
        //国测局坐标转wgs84坐标
        var gcj02towgs84 = coordtransform.gcj02towgs84(116.404, 39.915);
        console.log(bd09togcj02);
        console.log(gcj02tobd09);
        console.log(wgs84togcj02);
        console.log(gcj02towgs84);
        //result
        //bd09togcj02:   [ 116.39762729119315, 39.90865673957631 ]
        //gcj02tobd09:   [ 116.41036949371029, 39.92133699351021 ]
        //wgs84togcj02:  [ 116.41024449916938, 39.91640428150164 ]
        //gcj02towgs84:  [ 116.39775550083061, 39.91359571849836 ]
    </script>
    </body>
    </html>
    

    sometipes

    对于做GIS的人来说,底图对我们还是很重要的,有时候看国外的底图很好看,换上之后发现坐标位置全部不对,因此写了这个包帮助大家完成坐标的转换,也准备写成一个leaflet的扩展,方便大家的使用,喜欢的童鞋请star,O(∩_∩)O

    原文链接

    百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系互转

    相关文章

      网友评论

          本文标题:转--百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、

          本文链接:https://www.haomeiwen.com/subject/ftfubftx.html