美文网首页GIS写一个简易的GIS系统GIS之家
GPS坐标在高德谷歌街道图层火星坐标系(GCJ-02)中展示

GPS坐标在高德谷歌街道图层火星坐标系(GCJ-02)中展示

作者: Yinawake | 来源:发表于2019-08-08 13:43 被阅读1次

    在选择地图的地图,有影像图和街道图,影像图选择的是Google的影像图,街道图也是选择的Google的,因为下载快。当然国内的高德也是可以的。但是高德和Google的街道图都有一个问题,和OpenStreetMap的街道图对比,明显高德、Google的地图偏移了。

    转换前,设备在建筑物中

    原因:

    WGS84:表示GPS获取的坐标。
    GCJ02:又称火星坐标系,是由中国国家测绘局制定的地理坐标系统,是由WGS84加密后得到的坐标系。
    BD09:为百度坐标系,在GCJ02坐标系基础上再次加密。其中bd09ll表示百度经纬度坐标,bd09mc表示百度墨卡托米制坐标。

    所以我们需要将GPS坐标转化为GCJ-02。
    参考资料:
    GCJ-02火星坐标系

    转换后,设备在街道上

    使用githubeviltransform
    代码:

    var srcCoords = geom.getCoordinates();
    for (var j = 0; j < srcCoords.length; j++) {
        var coods = srcCoords[j];
        if($.isArray(coods)) {
            if($.isArray(coods[0])) {
                //Plogon
                for(var k = 0; k < coods.length; k++){
                    var subPoint = coods[k];
                    for(var l = 0; l < subPoint.length; l++){
                        if(l % 2 != 0) continue;
                        var lat = subPoint[l + 1], lng = subPoint[l];
                        var wgs = wgs2gcj(lat, lng);
                        
                        subPoint[l] = wgs.lng;
                        subPoint[l+1] = wgs.lat;
                    }
                }
            } else {    
                //LineString
                for(var k = 0; k < coods.length; k++){
                    if(k % 2 != 0) continue;
                    var lat = coods[k + 1], lng = coods[k];
                    var wgs = wgs2gcj(lat, lng);
                    
                    coods[k] = wgs.lng;
                    coods[k+1] = wgs.lat;
                }
            }
        } else {
            //Point
            if(j % 2 != 0) continue;
            var lat = srcCoords[j + 1], lng = srcCoords[j];
            var wgs = wgs2gcj(lat, lng);
            
            srcCoords[j] = wgs.lng;
            srcCoords[j+1] = wgs.lat;
        }
    }
    
    geom.setCoordinates(srcCoords, geom.getLayout());
    

    相关文章

      网友评论

        本文标题:GPS坐标在高德谷歌街道图层火星坐标系(GCJ-02)中展示

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