首页 > 其他分享 >QT离线三维地图插件

QT离线三维地图插件

时间:2024-10-22 23:12:25浏览次数:7  
标签:插件 QT 离线 void lonLatList brief lonLat QString 绘制


QT三维离线地图插件是一款功能强大的离线三维地图插件,支持多图源切换、海量点绘制、星历外推、航迹仿真、模型加载、倾斜数据加载,能够实现真实感的卫星仿真及航迹平滑处理。此外,该插件设计为便于二次开发,允许开发者根据特定需求扩展和定制功能,满足多样化的应用场景。

支持Windows、Linux(x86、ARM),支持在线地图以及离线地图。另一篇文章提供地图资源下载、发布、压缩工具。

无偿提供SDK,需要可以加群906146817

1.多图源切换
1.1Goole卫星图
​​​​​​​​

1.2ArcGis卫星图

1.3ArcGis海图

2.点位绘制与选择
2.1绘制选择

2.2绘制航迹

2.3航迹平滑

3.态势仿真
3.1航迹仿真

3.2卫星仿真

3.3动画控制

4.扩展功能

5.代码示例
5.1 初始化示例

    Map3DControl *map3D = new Map3DControl(this);   //初始化
    map3D->InitMapServer(CommonParam::MapPathList); //设置地图资源信息
    map3D->SetTerrain(CommonParam::TerrainResource);//设置高程数据
    connect(map3D, &Map3DControl::ClickLeftEvent,       this, &MapView::MapClickLeft);        //鼠标左键点击
    connect(map3D, &Map3DControl::ClickRightEvent,      this, &MapView::MapClickRight);       //鼠标右键点击
    connect(map3D, &Map3DControl::SelectEvent,          this, &MapView::MapSelect);           //地图选择
    connect(map3D, &Map3DControl::PointCompleteEvent,   this, &MapView::PointComplete);       //绘制点完成
    connect(map3D, &Map3DControl::RectCompleteEvent,    this, &MapView::RectComplete);        //绘制矩形完成
    connect(map3D, &Map3DControl::EllipseCompleteEvent, this, &MapView::EllipseComplete);     //绘制圆完成
    connect(map3D, &Map3DControl::OperatoinChange,      this, &MapView::MapOperatoinChange);  //地图操作模式改变
    connect(map3D, &Map3DControl::FullscreenEvent,      this, &MapView::FullscreenClicked);   //控制全屏显示

5.2 头文件示例

/**
* @brief         设置高程数据
* @terrain       高程数据信息
*/
void SetTerrain(MapResourceModel terrain);

/**
* @brief         绘制一个点
* @lonLat        点信息
*/
QString DrawPointEfficient(LonLatModel lonLat, float alpha);

/**
* @brief         绘制点集合
* @lonLatList    点集合信息
* @clean         是否清理历史点位
*/
QStringList DrawPointListEfficient(QList<LonLatModel> lonLatList, float alpha, bool clean = true);

/**
* @brief         绘制线集合(使用点信息中的颜色进行分段颜色)
* @lonLatList    线对应点集合
* @alpha         透明度
* @width         线宽
*/
QString DrawLineListEfficient(QList<LonLatModel> lonLatList, float alpha, short width);

/**
* @brief         绘制线集合
* @lonLatList    线对应点集合
* @color         颜色
* @alpha         透明度
* @width         线宽
*/
QString DrawLineListEfficient(QList<LonLatModel> lonLatList, QColor color, float alpha, short width);

/**
* @brief         绘制根据惯性坐标系线集合
* @lonLatList    线对应点集合
* @color         颜色
* @alpha         透明度
* @width         线宽
*/
QString DrawLineListEfficientInertial(QList<LonLatModel> lonLatList, QColor color, float alpha, short width);

/**
* @brief         更新线
* @lonLatList    线对应点集合
* @alpha         透明度
* @width         线宽
* @id            线ID
* @toolTip       显示距离ToolTip
*/
void UpdateLineListEfficient(QList<LonLatModel> lonLatList, float alpha, short width, QString id, bool toolTip);

/**
* @brief         绘制箭头
* @lonLatList    箭头点集合
* @color         颜色
* @width         线宽
*/
QString DrawArrow(QList<LonLatModel> lonLatList, QColor color, short width = 5);//绘制箭头

/**
* @brief         绘制矩形
* @startLonLat   矩形开始点信息
* @endLonLat     矩形结束点信息
* @color         颜色
*/
QString DrawRect(LonLatModel startLonLat, LonLatModel endLonLat, QColor color);

/**
* @brief         绘制圆
* @centerLonLat  圆心点信息
* @endLonLat     结束点信息
* @color         颜色
*/
QString DrawEllipse(LonLatModel centerLonLat, LonLatModel endLonLat, QColor color);

/**
* @brief         选择点
* @selectList    选择的点ID集合
* @cancelList    需要取消选择的点ID集合
*/
void SelectPointListEfficient(QStringList selectList, QStringList cancelList);

/**
* @brief         获取当前已绘制的点信息
*/
QHash<QString, LonLatModel> GetPointList();

/**
* @brief         更新点
* @lonLat        点信息
* @id            点ID
*/
void UpdatePointEfficient(LonLatModel lonLat, QString id, float alpha);

/**
* @brief         更新点集合 使用LonLatModel中ID进行匹配
* @lonLatList    点信息集合
*/
void UpdatePointListEfficient(QList<LonLatModel> lonLatList, float alpha);

/**
* @brief         定位
* @lonLat        定位信息
*/
void Location(LonLatModel lonLat);//定位

/**
* @brief         显示等待信息
* @waitText      等待信息
*/
void ShowWait(QString waitText);

/**
* @brief         绘制航迹(动画仿真)
* @trackList     目标航迹集合
* @minTime       最小时间
* @maxTime       最大时间
* @add           是否追加航迹
* @dataRangeList 数据区域
*/
QStringList DrawTrack(QList<TrackModel> trackList, QDateTime minTime, QDateTime maxTime, bool add, QList<QPair<QDateTime, QDateTime> > dataRangeList = QList<QPair<QDateTime, QDateTime> >());

/**
* @brief         获取点ID
* @count         获取数量
*/
QStringList GetPointIDList(int count);

/**
* @brief         增加点信息缓存(即由外部绘制 当前进行统一点信息管理)
* @lonLat        点信息
*/
void AddPointInfo(LonLatModel lonLat);

/**
* @brief         异步获取当前可视范围(通过信号槽获取)
*/
void GetVisibleRange();

/**
* @brief         绘制模型
* @lonLat        模型信息
* @model         模型名称
* @angle         角度
*/
QString DrawModel(LonLatModel lonLat, QString model, ushort angle);

/**
* @brief         绘制模型集合
* @lonLatList    模型信息集合
*/
QStringList DrawModelList(QList<LonLatModel> lonLatList);

/**
* @brief         模型信息
* @lonLat        角度
* @angle         ID
*/
void UpdateModel(LonLatModel lonLat, ushort angle, QString id);

/**
* @brief         设置时间轴显示状态
* @visible       时间轴显示状态
*/
void SetTimeLineVisible(bool visible);

/**
* @brief         设置时间轴显示状态
* @operation     操作栏显示状态
* @time          时间轴显示状态
*/
void SetTimeLineVisible(bool operation, bool time);

/**
* @brief         设置时间轴范围
* @minTime       最小时间
* @maxTime       最大时间
*/
void SetTimeRange(QDateTime minTime, QDateTime maxTime);

/**
* @brief         设置操作模式
* @mapEnum       操作模式
*/
void SetOperatoin(MapEnum mapEnum);

/**
* @brief         增加固定标签
* @lonLat        固定标签经纬度 Remark用于内容填充
*/
void AddFixedToolTip(LonLatModel lonLat);

/**
* @brief         增加固定标签集合 单次上限为100
* @lonLatList    固定标签经纬度集合 Remark用于内容填充
*/
void AddFixedToolTipList(QList<LonLatModel> lonLatList);

/**
* @brief         取消所有固定标签
*/
void CancelFixedToolTip();

/**
* @brief         播放动画
*/
void PlayAnimation();

/**
* @brief         暂停动画
*/
void SuspendAnimation();

/**
* @brief         设置动画时间
*/
void SetAnimationTime(QDateTime currentTime);

/**
* @brief         获取动画开始时间
*/
QDateTime GetAnimationStartTime();

/**
* @brief         获取动画结束时间
*/
QDateTime GetAnimationEndTime();

/**
* @brief         增加倾斜数据
* @url           倾斜数据链接地址
* @height        倾斜数据高度
*/
QString Add3DTileset(QString url, int height = 0);

/**
* @brief         设置倾斜数据显示状态
* @id            倾斜数据ID
* @visible       显示状态
*/
void Set3DTilesetVisible(QString id, bool visible);

标签:插件,QT,离线,void,lonLatList,brief,lonLat,QString,绘制
From: https://www.cnblogs.com/pssddddd/p/18494134

相关文章

  • 如何隐藏wordpress主题或插件的更新提示
    如何隐藏WordPress主题或插件的更新提示平常在维护WordPress时,有时候会因为一些错误或者兼容性等问题,我们不能马上升级主题或插件到最新的版本,需要保持旧版本,但是这时候会有一个问题就是每次点开后台都会看到非常显眼的小红点,影响后台体验在本文中我们就来说一下如何在不升级的......
  • 基于PyQt Python的深度学习图像处理界面开发(二)
         Python标准库更多的适合处理后台任务,唯一的图形库tkinter使用起来很不方便,所以后来出现了针对Python图形界面开发的扩展库,例如PyQt。    在介绍PyQt之前,必须先简单介绍一下Qt。Qt是一个C++可视化开发平台,是一个跨平台的C++图形用户界面应用程序框架(C++......
  • MQTTnet 4.3.7.1207 (最新版)使用体验,做成在线客服聊天功能,实现Cefsharp的物联的功能(如
    一、MQTTnet4.3.x版本客户端将客户端集成到cefsharp定制浏览器中,实现物联网功能网上很多代码是3.x版本代码,和4.x版本差异性较大,介绍较为简单或不系统二、部分代码说明初始化,初始化》连接服务端》发布上线信息(遗嘱)ConnectAsync等订阅主题:SubscribeAsync......
  • 即时通讯 离线消息处理初版
    离线消息处理NotOnlineExecutepackagecom.example.im.infra.executor.send;importcom.example.im.endpoint.WebSocketEndpoint;importorg.apache.commons.collections4.CollectionUtils;importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;importorg.springf......
  • 鸿蒙Flutter 实战:使用第三方插件
    鸿蒙Flutter实战:使用第三方插件在鸿蒙Flutter开发中,如果涉及到使用原生功能,就要使用插件。使用插件有两种方式,一种是自己编写原生ArkTS代码,在Dart侧调用。另外一种是使用第三方代码。方式一:编号原生ArkTS代码该方案可以使用PlatformView或者MethodChannel调用。Platf......
  • 使用 ArkTs 开发 Flutter 鸿蒙平台插件
    使用ArkTs开发Flutter鸿蒙平台插件本文讲述如何开发一个Flutter鸿蒙插件,如何实现Flutter与鸿蒙的混合开发,以及双端消息通信。Flutter侧,编写MethodChannelconstMethodChannel_methodChannel=MethodChannel('xxx.com/app');///获取tokenstaticFuture<dyna......
  • Qt学习笔记(二)Qt 信号与槽
    系列文章目录Qt开发笔记(一)Qt的基础知识及环境编译(泰山派)Qt学习笔记(二)Qt信号与槽文章目录系列文章目录@[TOC](文章目录)前言一、Qt信号与槽机制1.1什么是信号和槽1.1信号和槽的关联及断连二、编辑槽函数1.自动关联2.手动关联前言  在学习Qt的过程中,信......
  • 如何手动安装jenkins插件
    第一步:进入jenkins的插件地址https://plugins.jenkins.io/(有时加载会慢,等等就会加载出来,加载不出来的话,就使用梯子)第二步:搜索插件第三步:选择插件第四步:查看详情页第五步:下载插件如果是下载当前插件的话,直接点击directlink如果要下载之前版本的插件的话,点击checksums......
  • 新 Chrome 插件可检测 AI 伪造声音;Canary Speech 推出用于临床对话的语音分析技术丨 R
       开发者朋友们大家好: 这里是「RTE开发者日报」,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享RTE(Real-TimeEngagement)领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有看点的会议」,但内容仅代表编......
  • 用PyQt5中的textline实现log的实时显示
    在PyQt5中使用QLineEdit(即QTextLine的实现类之一)来实现日志的实时显示是可行的,但可能不适合大规模、多行日志的输出,因为QLineEdit仅支持单行文本。若要显示多行日志,建议使用QTextEdit,它更适合日志实时显示。但如果你确实希望使用QLineEdit来实现简单的日志输出,可以通......