openlayers3 加载高德地图 偏移的问题

新手上路,请多包涵

问题描述

项目中要使用openlayers3作为webgis的引擎,坐标系是EPSG:3857,再通过叠加天地图与高德地图作对比时发现,高德地图整体朝右下角偏移几百米.

问题出现的环境背景及自己尝试过哪些方法

根据度娘知道高德,腾讯等互联网地图都是GCJ-02的坐标系,尝试过网上的转换方法,但是好像针对百度地图有效,而且现在叠加百度地图和天地图已经可以了,就是高德地图有偏移

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)

var url = '';
    if(layerName == 'vec'){// 有标注电子地图
        url = "http://webrd0{1-4}.is.autonavi.com/appmaptile?lang=zh_cn&size=1&style=7&x={x}&y={y}&z={z}&ltype=0&scale=1";
    }else if(layerName == 'img'){// 无标注影像地图
        url = "https://webst0{1-4}.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}";
    }else if(layerName == 'img_i'){// 影像标注
        url = "https://wprd0{1-4}.is.autonavi.com/appmaptile?&x={x}&y={y}&z={z}&lang=zh_cn&size=1&scl=1&style=8&ltype=11";
    }
    var gaode = new ol.layer.Tile({
        name : params.layertitle,
        layerdescription: params.layerdescription,
        source: new ol.source.XYZ({
            projection: ol.proj.get('EPSG:3857'),
            url:url,
        })
    });
    return gaode;

这是百度转换后

var baiduMercatorProj = new ol.proj.Projection({
      code: 'baidu',
      extent: ol.extent.applyTransform(extent, projzh.ll2bmerc),
      units: 'm'
    });

ol.proj.addProjection(baiduMercatorProj);
ol.proj.addCoordinateTransforms('EPSG:4326', baiduMercatorProj, projzh.ll2bmerc, projzh.bmerc2ll);
ol.proj.addCoordinateTransforms('EPSG:3857', baiduMercatorProj, projzh.smerc2bmerc, projzh.bmerc2smerc);

你期待的结果是什么?实际看到的错误信息又是什么?

希望有大神指点一下迷津,

阅读 10.2k
2 个回答
新手上路,请多包涵

同样的问题,有解决吗?

新手上路,请多包涵

楼上,你的代码是不行的。楼主想问的是如何加载高德地图到OPENLYAERS不出现偏移。你这样会出现偏移的,因为高德用的是GCJ02,不是WGS84

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题