软件需求:开发一个态势管理软件,可以显示地图信息,并在地图上叠加一些自定义UI组件,包含:汽车、无人机、以及气象等。
通过卫星通信接收汽车、无人机搭载的信息系统上报的数据,在态势软件上实时更新位置、状态(在线、离线、故障、告警等)信息。
监控人员通过态势管理软件选中UI组件之后,可以远程控制汽车、无人机等搭载的信息系统以及传感器,实现设备的远程控制。
软件运行平台要求:windows 7及以上
软件设计:软件要求不能连接互联网,因此在进行软件开发式,考虑采用QT+QML+MySQL做一个本地的桌面软件,使用C++开发后台管理程序,使用QML开发软件界面,采用MySQL数据库,编译器采用MSVC 2017,提供列表显示、地图显示、位置状态更新以及数据库存储等功能。
QML有点类似于CSS样本,没有学过的小伙伴也不用担心,找一段代码入手,学习个一两个小时,基本就可以上手了。需要注意的是如果想要在QML中使用QT定义的一些基本类,需要使用qmlRegisterType进行注册,同时使用Q_INVOKABLE对类中的函数进行标注,这样在QML中才能调用这个类的对象以及内置函数。
/******主函数中注册类*******/
qmlRegisterType<Car>("Car", 1, 0, "Car"); // 替换为你的模块名
/*********汽车类***********/
Q_INVOKABLE float getLatitude() const; // 获取组件的纬度
软件运行后的效果图如下:
软件中采用了单图层设计,不同类型的组件存放在了不同的容器中,可以通过菜单栏选在要显示的组件类型。
地图目前还是采用网络地图,其实可以通过QGIS免费下载各种类型的免费地图瓦片到本地,实现离线加载地图。
我开发了另外一个软件,实现了多图层设计,可以将地图网片,汽车组件、无人机组件以及气象云团、雨团等分布在不同的图层上,这样会有更好的显示效果,同时使用了本地化地图瓦片,可是脱离互联网资源,离线显示地图。
有需要源代码的可以私我。