arcgis飞行轨迹动画_ArcGIS轨迹回放

2017-8-20

前言

又到了周六,打完球,吃完饭,闲来无事,便把这周干的事情总结一下,顺便写个博客,分享给大家。

本来说好这周研究三维GIS的,但是看完官方文档发现只有最新的100版本推出了三维GIS,在加上小组长临时让我在2DGIS上研究一下轨迹回放,经过多次改动,最终在周四完成了这个功能,然后周五摸了一天的鱼(心里绞痛)。

整个功能通过你给的点的集合(小组长要求每个点相隔十分钟,当然,你们可以随便间隔),在地图上一步一步通过动画绘制出路线,每次到达一个点时,会显示出在这个点的时间,如果前后2个点没有太大的变化(也就是原地不动),每次会暂停一秒,然后继续绘制。

一些ARCGIS基础的开发,我就不说了,源码我也上传到GItHub上了,有兴趣的童鞋可以去看看。

好了,闲话就扯到这,开始吧。

效果实现

让我们先看看效果图

700fad8bfa9f

从动图中我们可以看到3个效果,下面我们依次分析下怎么实现。

首先轨迹回放的动画,是通过handler发送消息绘制Polyline来实现的,将所有的点分段绘制,正在走的为一种颜色,走完的为另一种颜色,没2个点为一段动画,通过你要求的所有的动画时间,计算每一段动画的绘制速度(100毫秒),每当发送一个消息(每100毫秒发送一次),便增加polyline.lineto()的坐标,以实现线移动的效果。

每一段动画中一共有2个polyline,第一个是正在走的polyline(临时线段),没100毫秒画一次(根据计算出的速度),当每一段动画结束时,移除第一个polyline,绘制第二个动画结束的polyline(最终线段),这样就实现了我们轨迹回访时得绘制动画。还有一个就是移动的图标,我们通过PictureMarkerSymbol来构建自己的移动图标,同样通过handler发送消息,根据速度增加坐标,每发送一次,移除上一个图片,重新绘制,实现移动的效果。

显示这个点的时间,无非就是判断一下这个点的经纬度时候是否和增加后的经纬度一致,之后再弹出一个显示框就可以了。

以上就是我们实现的思路了,下面我们来看看代码和难点。

代码

在代码之前,要说几个MapView的绘制时的特性。

我们绘制时,无论是线路还是图标,我们都是通过底图的投影坐标绘制的,所以我们需要将经纬度坐标转换为底图的投影坐标,否则无论你的点在哪里,都只会绘制在一个地方。

要将WGS-84转换为投影坐标,我们可以通过

Point mapPoint = (Point) GeometryEngine.project(wgsPoint ,SpatialReference.create(4326),map.getSpatialReference());

但有时候(没错,我就是那个但是),mapview是拿不到SpatialReference的,

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值