文章版权由做者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/html
在以前的”多车辆实时迹展现方案”(http://www.javashuo.com/article/p-hzmmgifx-kd.html)文章中,我讲解了咱们对多轨迹实时监测展现方案在前段的一些实践和对于后端架构的设计,可是在真实项目的落地过程当中,咱们基于此作了不少的优化,这里作一个简单的总结。前端
这里我将该项目大体作一个描述:公司某个项目中有一万两千辆车须要作实时监控,并且这些车24小时均会不间断进行GPS上报。因此其中涉及到GPS的对接、海量数据存储的设计方案、消息推送、前端展现、系列报警设计等。这其中的GPS对接、数据存储涉及等问题我在轨迹系列文章中均有描述,感兴趣的朋友能够看看,本篇着重描述信息推送和前端展现的优化。redis
这里的消息推送并非很复杂,因此咱们并无采用卡夫卡等成熟的消息机制架构,依然采用的是前篇中我进行了介绍的WebSocket方案。可是,有几点咱们须要考虑:后端
a.前端为了播放效果,每次传入的GPS中一个车辆必须拥有2个以上的GPS数据(若是只有一个则是停留的)微信
b.咱们有1万辆以上的车辆,每次推送给前端的数据不该该是全部的,即作成广播协议是不合理的。架构
针对这两个问题,咱们分别作了解决:socket
a.采用redis进行GPS数据的实时存放,可是进行了存放规则设定,即redis中存放的轨迹只包含目前时间向前推移指定时间的轨迹量。好比,redis中永远存放的是此前三分钟的轨迹数据(时间长可设置)。这样能够累积必定量的轨迹后推送,以便实现播放效果,而且方便高效读取。优化
b.在消息推送中,咱们根据humanID来进行数据推送的选择。不一样人员要看到的车辆是不同的,因humanID不一样而不一样。spa
在推送方案中咱们还进行了其余优化:设计
a.经过心跳检查来进行socket链接保活。
b.前端播放时效与后台轨迹推送的同步。
a.根据车辆数目切换展现方式,车辆少时用车辆图标,车辆多时用点。
b.从新设计车辆图标,以俯视图进行车辆图标设计,并经过后视镜等细节来更好的表现车头和车尾。
c.每次GPS从新获取后,地图不进行缩放,保持观察的连续性。而且经过车辆ID的关联,保证前端播放轨迹的连续不闪烁。
d.车辆车牌的显示,而且只有在地图缩放到必定级别后才显示,以免图标杂乱。
e.经过计算播放点与最近GPS点的距离来展现该播放点的车速。
f.提供车辆详细信息展现的入口。
g.根据车辆不一样的状态,好比超速、停留等用不一样的车辆图标来进行表示。
多轨迹展现效果:
单车辆历史轨迹展现效果:
-----欢迎转载,但保留版权,请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/
若是您以为本文确实帮助了您,能够微信扫一扫,进行小额的打赏和鼓励,谢谢 ^_^