首页 / 浏览问题 / 移动GIS / 问题详情
加载在线天地图作为底图,定位点显示会发生偏移,导入的shp矢量图层也会偏移
12EXP 2020年12月18日

地图已开启动态投影,天地图加载的2000坐标,矢量叠加 偏差很大。

定位点显示做了投影转换到当前地图坐标,代码如下:

// 当投影不是经纬坐标系时,则对点进行投影转换
Point2D result = point;
PrjCoordSys targetPrj = mMap.getPrjCoordSys();
if (targetPrj.getType() != PrjCoordSysType.PCS_EARTH_LONGITUDE_LATITUDE) {
    Point2Ds points = new Point2Ds();
    Point2D oldPoint = new Point2D(point.getX(), point.getY());
    points.add(oldPoint);
    PrjCoordSys desPrjCoorSys = new PrjCoordSys();
    desPrjCoorSys.setType(PrjCoordSysType.PCS_EARTH_LONGITUDE_LATITUDE);
    CoordSysTranslator.convert(points, desPrjCoorSys, targetPrj,
            new CoordSysTransParameter(),
            CoordSysTransMethod.MTH_GEOCENTRIC_TRANSLATION);
    result = points.getItem(0);
}

另外测试了在线谷歌地图,同样的代码偏差不大,而天地图缺偏了几千公里,请问是哪里不对吗?

1个回答

您好,您那边定位是采用什么方式定位的呢?加载天地图的时候你那边可以加上参数DPI=96(加载之前需要先把设备中的缓存全部删掉,重新加载)。定位点便宜大部分是因为定位的坐标和地图的坐标系不一致导致的,您可以参考一下这篇博客:https://blog.csdn.net/supermapsupport/article/details/80318735

9,242EXP 2020年12月18日
你那种肯定不行的,初始化的时候地图都没有坐标系,你按照我上面的写法哈
嗯,确实是,原来这样,确实图层出来了,非常感谢。动态投影的图层应该如何获取图层显示范围呢?
获取图层的显示范围还是地图的显示范围呢?获取的范围坐标是按照地图的坐标系来定的
就是想要地图坐标系的范围,但Layer 的并没有找到获取范围的方法,只找到有Dateset有一个getBounds但范围好像是按照数据的坐标系,
dataset的bounds肯定是按照数据的范围来的,地图范围就是按照地图的坐标系来的。如果数据和地图的坐标系不一致要设置范围可以对bounds进行投影转换来设置显示的范围。
...