首页 / 浏览问题 / 移动GIS / 问题详情
如何使用imobile实时绘制行走轨迹
6EXP 2019年10月16日

使用产品:imobile 9D 操作系统:win10 x64 / android

数据类型:文件型

问题详细描述:

业务需求是记录轨迹的过程中,实时将轨迹显示在地图上,Track类好像没有提供类似功能,我知道它会将途径的点创建为一个点数据集。

1.请问是否有简易方式利用现有API完成这一功能呢?

2.如果自己写一个Track类,实时采集坐标,将当前坐标与上一坐标连成线,那么就需要自己构造线数据集。线数据集是怎么确定线的方向呢?

3.是否有其他更好的实现方式推荐?

问题关闭原因: 已经解决,map.getLayers().add(trackDataset,true);并没有将图层加进layers,需要将返回的layer再次加入layers

1个回答

您好,我们提供的轨迹记录Track中是没有直接连接成线滴滴,需要我们自己使用轨迹记录点去构造线,使用接口:GeoLine。线的方向是随着点集的序列号来确定,如从第一个点连接第二个点再连接三个点。
9,197EXP 2019年10月16日

你好,请问这样构造有什么问题吗?为什么地图上无法显示?

public boolean set(Point2Ds point2Ds){
        points = point2Ds;
        recordset = trackDataset.getRecordset(true,CursorType.DYNAMIC);

        geoLine = new GeoLine(points);
        Log.i(TAG,"points count : " + points.getCount());//测试时我使用了4个点用来构造线
        recordset.addNew(geoLine);

        trackDataset.append(recordset);
        layer = map.getLayers().add(trackDataset,true);
        return true;
    }

使用iDesktop可以看到新增的数据集,里面也有记录,但是无法在地图上显示。和直接用iDesktop绘制的线数据集相比,发现使用GeoLine构造的记录少了一项SmGeoPosition字段,难道是它的原因?该如何解决呢?

您好,
1.调试一下您的代码返回的layer是否有值
2.您传的点串point2ds的坐标值跟您的底图是否匹配
3.可以试试将geoline添加到跟踪图层上,看是否显示。使用方法:trackingLayer.add(Geometry  String)
你好,layer返回值非空,geoline添加到跟踪图层上可以显示,由此可见坐标与地图匹配。但是业务需求需要将geoline记录在数据集中,只用TrackingLayer显示肯定是无法达到需求的,该如何解决呢?
layer返回值为null说明您的图层没有添加上去,您看一下您的代码map是否有值,可以这样写:mapControl.getMap().getLayers().add(dataset,true)
我的意思是layer返回值不是null。。。
您保存一下工作空间,然后把工作空间和数据源拷贝到电脑上用桌面软件打开,看一下地图是否显示,图层的显示顺序是否正确
这一点在第一条回复中已经指出,使用iDesktop可以看到新增的数据集,里面也有记录,但是无法在地图上显示。至于图层的显示顺序,我将数据集添加到地图后,隐藏了其他包括底图在内的所有图层,并将图层风格中线的宽度调大,还是找不到
您好,能否方便把数据集发给我呢,可以私信我数据地址,谢谢
...