Qt/C++地图轨迹回放/自定义图标/动态平滑移动/导入轨迹数据
cac55 2024-10-18 04:19 24 浏览 0 评论
一、前言说明
这个轨迹回放的功能迭代过很多个版本,最初的版本是轨迹点的坐标每次都是删除折线再重新生成折线,后面发现有内存泄漏,地图js中并不会及时的释放没有用的对象,哪怕是用地图提供的clearoverlay的方法,也不会去释放,不知道是地图js没有处理好还是。第二个版本是先按需生成曲线对象,每次轨迹点更新后,就调用polyline对应的setpath方法去设置新的路径,这样如果只有一条路径,则只有一个折线对象,每次都是更新他的路径就好。最后不需要的时候再去删除这个折线就好,怎大大提升了效率,减轻了频繁分配内存的压力。
按照上面的方法基本可用了,那是不是就到此为止了呢?肯定不是的,你会发现现在的方法,可以移动,但是移动起来很僵硬不连贯不平滑,需要两个点的间隔很密集才看起来不僵硬,那怎么行呢,如果用户提供的只有两个点的直线呢,突然跳跃一下子就抛到了终点,看起来多么的失败。用户希望的是平滑移动而不是跳跃运动,这个时候就需要根据两个点之间再插入点,以便移动的时候是平滑的效果,至于这个插值谁来做,可以自己用算法实现,网上也提供了类似的算法,或者从路书js文件中查看到源码,也可以直接用提供的路书功能去实现。
在对各种地图内核实现平滑移动的过程中,发现百度地图和天地图都是提供了js文件对应的类去实现,而高德地图和腾讯地图是直接将此功能放在标注点marker对象中,调用对应的moveAlong方法即可。这是两种不同的实现策略,各有优缺点。
二、功能特点
- 支持多种地图内核,默认采用百度地图,可选高德地图、天地图、腾讯地图等。
- 同时支持在线地图和离线地图两种模式,离线地图方便在不联网的场景中使用。
- 支持各种地图控件的启用,比如地图导航、地图类型、缩略图、比例尺、全景导航、实时路况、绘图工具、结果面板等。
- 支持多种地图功能的动态启用禁用,比如地图拖曳、键盘操作、滚轮缩放、双击放大、连续缩放、地图测距等。
- 提供众多js函数接口用于交互,参数极其丰富,能够想到的应用场景需求都有。
- 统一的信号槽机制,地图中的结果统一信号发送出去,收到后根据type类型区分。
- 支持地图交互,比如鼠标按下获取对应位置的经纬度。单击标注点弹出对应点的信息。
- 支持添加标注、删除标注、移动标注、清空标注。
- 标注点可以指定图标图片和尺寸,支持gif动图,支持指定以图片中心对齐还是底部中心对齐。可以设置旋转角度,带富文本提示信息。
- 标注点事件支持单击发信号通知和自己弹框显示信息。
- 提供地址转坐标和坐标转地址接口。
- 支持各种图形绘制,包括折线图、多边形、矩形、圆形、弧线等。
- 可显示悬浮的绘图工具栏,直接在地图上划线、标注点、矩形、圆形等。
- 支持各种区域搜索,比如矩形区域、圆形区域,可以按照关键字匹配将搜索结果显示在地图中。
- 可动态添加离线的行政区边界点数据。可以搜索行政区划并获取该区域的边界点数据。数据可以保存到文件以便离线使用。
- 支持点聚合功能,多个小标注点合并到一个大标注点,防止点密集导致交互不友好。
- 可以添加海量点,每个点都可以单击获取对应坐标和信息。
- 所有的覆盖物信息比如标注点、矩形、多边形、折线图等,都可以主动获取对应的信息比如坐标点和路径等。
- 支持路径规划,支持公交路线、自驾路线、步行路线、骑行路线,不同查询支持不同策略,可选最少时间、最少换乘、不走高架等。
- 路径规划结果可以显示在地图中,也可以获取到路径点坐标集合。这个数据可以保存到文件,以便发给机器人或者无人机做导航用来轨迹移动。
- 可以设置不同的地图视图比如街道图、卫星图、混合图。
- 可以设置不同的样式,比如午夜蓝、青草绿等样式风格。
- 可以设置地图的旋转角度和倾斜角度。
- 提供经纬度坐标纠偏转换功能,比如传入的GPS坐标需要转换到百度地图坐标或者高德地图坐标。各种坐标系转换全部离线函数,支持地球坐标系WGS-84、火星坐标系GCJ-02、百度坐标系BD-09之间的互相转换,涵盖了各种地图的坐标系。
- 提供动态轨迹点移动功能,按照给定的经纬度坐标集合平滑移动。
- 同时支持qwidget和qml,支持编译到安卓系统运行。
三、使用说明
- 第一步:选择地图内核,下拉地图内核可以动态切换地图内核。
- 第二步:选择移动模式,支持多种移动模式,用来控制是否重新动态绘制当前轨迹进度以及是否循环移动。
- 重新绘制-单次:标注点移动到哪里,轨迹折线就绘制到哪里,只移动一次就结束。
- 重新绘制-循环:标注点移动到哪里,轨迹折线就绘制到哪里,移动完成后再次从起始点开始移动。
- 沿线运动-单次:标注点沿着路径点移动,只移动一次就结束。
- 沿线运动-循环:标注点沿着路径点移动,移动完成后再次从起始点开始移动。
- 沿线绘制-单次:标注点沿着路径点移动,同时以不同颜色绘制走过的路径,只移动一次就结束。
- 沿线绘制-循环:标注点沿着路径点移动,同时以不同颜色绘制走过的路径,移动完成后再次从起始点开始移动。
- 第三步:选择移动速度,一般值越大速度越快。
- 第四步:选择起始点和结束点坐标,文本框哪个右焦点,则鼠标左侧选点后的值就填在哪个文本框中。
- 第五步:单击查询轨迹,查询结果路径中的经纬度坐标集合显示在右上角表格中。
- 第六步:筛选数据,这一步可选,不筛选则以最原始的路径点数据进行。
- 筛选数据是根据设定的点数量,从原始数据中取平均值。数量表示最终筛选后的点数。
- 比如原始数据总数量是90个,点数填30,表示依次从90个数据中每3个点取一个,这样刚好是30个点。
- 为了保证数据完整性,第一个点和末位点一定在筛选数据中。也就是按照设定的点数取值后,可能会多出两个数据点。
- 为什么需要筛选?因为查询出来的轨迹点数量可能很多,比如几千几万个,如果每次移动一个点,这样速度很慢。
- 实际使用过程中还有一种情况是,无人机或者机器人,下发给他的经纬度坐标点数量有限制,这就也需要筛选数据。
- 筛选后如果想恢复数据,数量填0重新筛选即可,0表示不筛选直接用原始数据。
- 第七步:保存轨迹,这一步可选,可以将当前查询的轨迹点保存到文本文件中,以便提供给轨迹回放模块使用。
- 第八步:模拟轨迹,单击模拟轨迹按钮,会按照设定的速度模拟轨迹点移动,按钮字样变成停止模拟,再次单击则停止模拟。
- 第九步:轨迹回放,这一步可选,单击轨迹回放按钮,弹出轨迹回放界面。
四、相关链接
- 国内站点:https://gitee.com/feiyangqingyun
- 国际站点:https://github.com/feiyangqingyun
五、效果图
相关推荐
- 三星电视通过VGA端口接连笔记本教程
-
科技的发达不仅仅表现于智能电视的功能有多全面,手机、笔记本、电视盒子有多智能,而是这些电子产品是否能够相互连接、多屏互动进而进行多媒体播放与数据传输等。目前,三星电视早已可以实现多项设备间的连接与使用...
- KVM210UA 2口USB电脑切换器VGA KVM切换器 键鼠控制2台电脑 免电源
-
登昌恒KVM210UA2口USB电脑切换器VGAKVM切换器键鼠控制2台电脑免外接电源即时切换显示画面不延迟热插拔免驱动适合MAC苹果电脑笔记本和台式电脑...
- 大神自己将老旧笔记本改装成多方面强悍的“超极本”
-
文/自己建房子亲戚有个03年的清华紫光笔记本,配置是奔腾1.8G,XP勉强运行,亲戚今年帮了非常大的忙,无以回报,把他这个垃圾本改一下略为回报新配置:CPU是i53470t的,内存是4G两条组成双...
- 正点原子开拓者FPGA开发板资料连载第二十二章RGBTFT-LCD彩条显示
-
1)实验平台:正点原子开拓者FPGA开发板2)摘自《开拓者FPGA开发指南》关注官方微信号公众号,获取更多资料:正点原子3)全套实验源码+手册+视频下载地址:http://www.openedv.c...
- 显卡引出故障现象及排除(造成显卡故障的原因有哪些)
-
故障现象一:显示器黑屏故障排除:1、先确定是否是显卡有问题。判断的方法是听PC喇叭的叫声,一长两短声肯定是显卡发生了致命错误,只能更换。2、如果无法断定显卡的好坏,可以换一块试试,还不行的话则有几种情...
- 用FPGA/树莓派RP2040驱动HDMI的资源
-
如果能够用FPGA能够驱动显示器,就可以做不少与视频相关的实验,很多FPGA开发板使用了比较简单的VGA接口,连接非常简单,如下图:然后我们就可以用FPGA的逻辑来做各种游戏了:然而,现在的显示器基本...
- STM32+A3P125 图形控制器方案,多参数监护仪数据采集模块深度解析
-
一、生理信号采集与转换架构多参数监护仪数据采集模块是将人体生理信号转化为数字信号的核心单元,其架构遵循“传感器感知→信号调理→模数转换→数字处理”的标准化流程:1.传感器类型与生理信号转换传感器...
- 电脑重启都提示AMD显卡错误“No AMD graphics driver is..”解决方法
-
电脑重装完系统后,每次重启都提示AMD显卡错误“NoAMDgraphicsdriveris......”怎么办?网上相关问题解决很多人方法是打驱动,可是有些是驱动打好了还是反复出现NoAM...
- ipad1改造显示器之拆解篇(ipadair改显示器)
-
闲来无事,翻出来家里12年前的初代ipad,除了能正常充电开机盖泡面之外,好像啥也干不了……上网一搜有许多改成显示器的案例,按耐不住的激动的小手也想跃跃欲试一番,说干就干,先从拆解开始。注意,以hom...
- 老电脑显卡驱动装不上?降级旧版驱动一招解决!
-
老电脑显卡驱动装不上?降级旧版驱动一招解决!今天给家里的老台式机重装系统遇到了麻烦:i34130处理器配上HD7770显卡,装完Win7后,显卡驱动死活装不对!问题表现:最初状态:设备管理器“显...
- 想淘汰VGA 先得知道这些门道(vga是不是淘汰了)
-
不要说新显卡,就是在主板上,VGA接口也越来越少,眼看就被彻底淘汰了。当然小伙伴们的显示器应该早就不是只有VGA接口的旧型号了,彻底淘汰VGA就换个接口或者弄个转接呗,可是……真的这么简单吗?小编今天...
- IMX258摄像头驱动(摄像头最新驱动)
-
IMX25813MPOISUSBCamera(A)说明IMX25813MPOISUSBCamera(A)功能简介特性USB通用摄像头1300万像素接口USB...
- 朗强科技:VGA视频信号分配原理分析
-
VGA分配器的主要功能是把一个视频信号重新分配成多个信号。高分辨率的视频分配放大器的作用是在接收一个来自计算机视频端口的信号后将其进行放大处理,并且在保持原有信号质量的情况下,将其信号分配到多个高分辨...
- 视频矩阵的应用及分类(视频矩阵的应用及分类)
-
视频矩阵-基本功能和要求视频矩阵-基本功能和要求 一个矩阵系统通常还应该包括以下基本功能:字符信号叠加;解码器接口以控制云台和摄像机;报警器接口;控制主机,以及音频控制箱、报警接口箱、控制键盘等附件...
- 告别蓝屏烦恼,Windows系统崩溃急救指南!
-
Windows系统蓝屏(BlueScreenofDeath,简称BSoD)是Windows操作系统在无法从系统错误中恢复时显示的屏幕图像,通常会伴随一个或多个错误代码,这些代码是诊断问题的关键线...
你 发表评论:
欢迎- 一周热门
- 最近发表
-
- 三星电视通过VGA端口接连笔记本教程
- KVM210UA 2口USB电脑切换器VGA KVM切换器 键鼠控制2台电脑 免电源
- 大神自己将老旧笔记本改装成多方面强悍的“超极本”
- 正点原子开拓者FPGA开发板资料连载第二十二章RGBTFT-LCD彩条显示
- 显卡引出故障现象及排除(造成显卡故障的原因有哪些)
- 用FPGA/树莓派RP2040驱动HDMI的资源
- STM32+A3P125 图形控制器方案,多参数监护仪数据采集模块深度解析
- 电脑重启都提示AMD显卡错误“No AMD graphics driver is..”解决方法
- ipad1改造显示器之拆解篇(ipadair改显示器)
- 老电脑显卡驱动装不上?降级旧版驱动一招解决!
- 标签列表
-
- 如何绘制折线图 (52)
- javaabstract (48)
- 新浪微博头像 (53)
- grub4dos (66)
- s扫描器 (51)
- httpfile dll (48)
- ps实例教程 (55)
- taskmgr (51)
- s spline (61)
- vnc远程控制 (47)
- 数据丢失 (47)
- wbem (57)
- flac文件 (72)
- 网页制作基础教程 (53)
- 镜像文件刻录 (61)
- ug5 0软件免费下载 (78)
- debian下载 (53)
- ubuntu10 04 (60)
- web qq登录 (59)
- 笔记本变成无线路由 (52)
- flash player 11 4 (50)
- 右键菜单清理 (78)
- cuteftp 注册码 (57)
- ospf协议 (53)
- ms17 010 下载 (60)