Qt编写地图综合应用54-动态点位标注
一、前言
动态点位标注是定制的一个功能模块,提供直接地图上选点设置标记点,点位信息用结构体存储,其中包括了经度、纬度、速度、时间等信息,单击对应的标注点可以显示详细的弹框信息,弹框信息采用自定义的html格式显示,而不是地图自带的格式,这样显示更方便,比如可控不同行不同颜色或者加粗。标注点可选是否标记,标记的话就是一个设备图标显示,不标记的就普通的显示,一般在明显的拐弯的地方建议设置标记。
近期在动态点位标注功能中还增加了新增点以后立即移动到地图中心,相当于把新增的点作为地图中心点,这样可以保证每次都能看到新增的点位置,不然还要自己去移动拉动地图才能看到,其实后面的路书功能也可以增加类似的处理,轨迹点在移动的时候自动切换最近的点为中心点。
二、功能特点
- 定时器排队下载省市轮廓图点坐标集合存储到JS文件。
- 支持一个行政区域多个不规则区域下载。
- 自动计算行政区域的下载轮廓数量。
- 可精确选择省份、市区、县城,也可直接输入行政区域的名称。
- 可以设置下载间隔、随时开始下载和停止下载。
- 提供编辑边界功能,可以直接在地图上编辑好不规则区域的点集合,然后获取边界点集合数据,这个可以用来自己绘制区域拿到数据,比如某个乡镇甚至某个小区的行政区域数据,很牛逼。
三、体验地址
- 体验地址:https://pan.baidu.com/s/1ZxG-oyUKe286LPMPxOrO2A 提取码:o05q 文件名:bin_map.zip
- 国内站点:https://gitee.com/feiyangqingyun
- 国际站点:https://github.com/feiyangqingyun
- 个人主页:https://blog.csdn.net/feiyangqingyun
- 知乎主页:https://www.zhihu.com/people/feiyangqingyun/
四、效果图

五、相关代码
void frmMapMarker::append(const MarkerInfo &markerInfo)
{
//先删除上一次添加的线条,不然会重叠不好看
runJs("deleteOverlay('Polyline')");
//取出详细数据,添加到坐标集合中进行绘制线条
QString point = markerInfo.lng + "," + markerInfo.lat;
points << point;
QString js = QString("addPolyline('%1')").arg(points.join("|"));
runJs(js);
//如果isMark则还需要添加对应的点
if (markerInfo.isMark) {
//标注点名称 为空则不显示
QString name = "";
//标注点地址 为空则不显示
QString addr = "";
//标注点弹框信息html格式标题 为空则采用默认的格式
QString title = "";
//title = "<div style=\"color:#CE5521;font-size:25px;\">标题: 测试设备</div>";
//标注点弹框信息html格式内容 为空则采用默认的格式
QString tips = "";
QStringList list;
list << QString("<div style=\"color:#CE5521;font-size:15px;\">经度: %1</div>").arg(markerInfo.lng);
list << QString("<div style=\"color:#CE5521;font-size:15px;\">纬度: %1</div>").arg(markerInfo.lat);
list << QString("<div style=\"color:#CE5521;font-size:15px;\">速度: %1 kv/h</div>").arg(markerInfo.speed);
list << QString("<div style=\"color:#CE5521;font-size:15px;\">时间: [%1]</div>").arg(markerInfo.time);
tips = list.join("");
//标注点弹框信息最小宽度
int width = 150;
//单击以后触发什么动作 0-不处理 1-自己弹框 2-发送信号
int action = 1;
//动画效果 0-不处理 1-跳动 2-坠落
int animation = 0;
//动态图 http://lbsyun.baidu.com/jsdemo/img/fox.gif
//静态图 http://api.map.baidu.com/img/markers.png 需要指定iconindex
//本地图 m0.png ./m0.png m1.png 图标必须放在config文件夹下 大小默认53*52
//为空则采用默认图标
QString iconfile = "http://api.map.baidu.com/img/markers.png";
QString js = QString("addMarker('%1', '%2', '%3', '%4', %5, '%6', %7, %8, '%9')")
.arg(name).arg(addr).arg(title).arg(tips).arg(width)
.arg(point).arg(action).arg(animation).arg(iconfile);
runJs(js);
//移动中心点到当前点,不需要可以注释掉
js = QString("setCenter('%1')").arg(point);
runJs(js);
}
int count = ui->tableWidget->rowCount() + 1;
ui->tableWidget->setRowCount(count);
QTableWidgetItem *itemLng = new QTableWidgetItem;
QTableWidgetItem *itemLat = new QTableWidgetItem;
QTableWidgetItem *itemMark = new QTableWidgetItem;
QTableWidgetItem *itemSpeed = new QTableWidgetItem;
QTableWidgetItem *itemTime = new QTableWidgetItem;
itemLng->setText(markerInfo.lng);
itemLat->setText(markerInfo.lat);
itemMark->setText(markerInfo.isMark ? "是" : "否");
itemSpeed->setText(QString::number(markerInfo.speed));
itemTime->setText(markerInfo.time);
ui->tableWidget->setItem(count - 1, 0, itemLng);
ui->tableWidget->setItem(count - 1, 1, itemLat);
ui->tableWidget->setItem(count - 1, 2, itemMark);
ui->tableWidget->setItem(count - 1, 3, itemSpeed);
ui->tableWidget->setItem(count - 1, 4, itemTime);
}
void frmMapMarker::clear()
{
points.clear();
ui->tableWidget->setRowCount(0);
runJs("deleteOverlay('')");
}
void frmMapMarker::on_btnAdd_clicked()
{
MarkerInfo markerInfo;
markerInfo.lng = ui->txtLng->text().trimmed();
markerInfo.lat = ui->txtLat->text().trimmed();
markerInfo.isMark = (ui->cboxMark->currentIndex() == 0);
markerInfo.speed = ui->txtSpeed->text().trimmed().toInt();
markerInfo.time = ui->txtTime->text().trimmed();
append(markerInfo);
}
Qt编写地图综合应用54-动态点位标注的更多相关文章
- Qt编写自定义控件插件开放动态库dll使用(永久免费)
这套控件陆陆续续完善了四年多,目前共133个控件,除了十几个控件参考网友开源的代码写的,其余全部原创,在发布之初就有打算将动态库开放出来永久免费使用,在控件比较完善的今天抽了半天时间编译了多个qt版本 ...
- Qt编写自定义控件59-直方动态图
一.前言 直方动态图类似于音乐播放时候的柱状图展示,顶部提供一个横线条,当柱状上升的时候,该线条类似于帽子的形式冲到顶端,相当于柱状顶上去的感觉,给人一种动态的感觉,听音乐的同时更加赏心悦目,原理比较 ...
- Qt编写项目作品大全(自定义控件+输入法+大屏电子看板+视频监控+楼宇对讲+气体安全等)
一.自定义控件大全 (一).控件介绍 超过160个精美控件,涵盖了各种仪表盘.进度条.进度球.指南针.曲线图.标尺.温度计.导航条.导航栏,flatui.高亮按钮.滑动选择器.农历等.远超qwt集成的 ...
- Qt编写的开源帖子集合(懒人专用)
回顾自己学习Qt以来九年了,在这九年多时间里面,从本论坛学习不到不少的东西,今天特意整了一下自己开源过的资源的帖子,整理一起方便大家直接跳转下载,不统计不知道,一统计吓一跳,不知不觉开源了这么多代码, ...
- Qt编写安防视频监控系统(界面很漂亮)
一.前言 视频监控系统在整个安防领域,已经做到了烂大街的程序,全国起码几百家公司做过类似的系统,当然这一方面的需求量也是非常旺盛的,各种定制化的需求越来越多,尤其是这几年借着人脸识别的东风,发展更加迅 ...
- Qt编写自定义控件二动画按钮
现在的web发展越来越快,很多流行的布局样式,都是从web开始的,写惯了Qt widgets 项目,很多时候想改进一下现有的人机交互,尤其是在现有的按钮上加一些动画的效果,例如鼠标移上去变大,移开还原 ...
- Qt编写自定义控件11-设备防区按钮控件
前言 在很多项目应用中,需要根据数据动态生成对象显示在地图上,比如地图标注,同时还需要可拖动对象到指定位置显示,能有多种状态指示,安防领域一般用来表示防区或者设备,可以直接显示防区号,有多种状态颜色指 ...
- Qt编写自定义控件10-云台仪表盘
前言 做过安防视频监控的同学都清楚,在视频监控系统软件上都可以看到一个云台控制区域,可以对球机进行下下左右等八个方位的运动控制,还可以进行复位,一般都是美工作图好,然后贴图的形式加入到软件中,好处是程 ...
- Qt编写数据可视化大屏界面电子看板系统
一.前言 目前大屏大数据可视化UI这块非常火,趁热也用Qt来实现一个,Qt这个一站式超大型GUI超市,没有什么他做不了的,大屏电子看板当然也不在话下,有了QSS和QPainter这两个无敌的工具组合, ...
- Qt编写安防视频监控系统18-云台控制
一.前言 云台控制是视频监控系统中必备的一个功能,对球机进行上下左右的移动,还有焦距的控制,其实核心就是控制XYZ三个坐标轴,为了开发这个模块,特意研究了各种云台控制的方法和开源库比如soap,有些厂 ...
随机推荐
- element的图片上传预处理函数
/** 图片格式和大小的控制 */ beforeAvatarUpload (file) { // 允许上传 jpg 和 png 格式的图片 const isJPG = file.type === &q ...
- Python 潮流周刊#72:Python 3.13.0 最终版已发布!(摘要)
本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章.教程.开源项目.软件工具.播客和视频.热门话题等内容.愿景:帮助所有读者精进 Python 技术,并增长职 ...
- 揭秘!KubeSphere 背后的“超级大脑”:etcd 的魅力与力量
作者:尹珉,KubeSphere Ambassador & Contributor,KubeSphere 社区用户委员会杭州站站长. 1. 开篇:揭开神秘面纱,etcd 如何驱动 KubeSp ...
- 在 Kubernetes 中基于 StatefulSet 部署 MySQL(下)
大家好,我是老 Z! 上篇文章实现了 MySQL 数据库在基于 KubeSphere 部署的 K8s 集群上的安装部署,部署方式采用了图形化界面这种形式.本文将会介绍如何使用 GitOps 来部署 M ...
- Games101 作业8 质点弹簧系统
目录 1 前言 2 基础数据结构 3 欧拉 4 Verlet Integration 4.1 Constraints 1 前言 质点弹簧系统的模拟仿真,其实非常简单,核心就是牛顿第二定律 \(F = ...
- "安装VMware Tools"显示灰色的解决办法
用VMware Workstation Pro好几年了,期间这个问题也遇到过好几次,这次把解决方案记录一下,若后续有其他情况其他解决方案将在此博文更新. Step1:关闭虚拟机: Step2:在虚拟机 ...
- debug指南-基础bug
基础Bug 本章节主要阐述一些最基本的bug. 虽然这些bug看起来很弱智简单,但正是因为这些小bug,让我们调代码的时间增加至少 \(2,3\) 个小时. 本系列的宗旨就是综合这些小bug极其对应解 ...
- Linux 练习
目录 练习一 练习2 练习一 分析日志t.log(访问量),将各个ip地址截取,并统计出现次数,并按从大到小排序(腾讯) 每行格式:http: //192.168.200.30/index1.html ...
- 支持多语言、多商店的商城,.Net7 + EF7领域驱动设计架构
推荐一个跨平台.模块化.可扩展且超快速的开源一体化电子商务平台. 01项目简介 Smartstore 支持桌面和移动平台.多语言.多商店.多货币的商城,并支持SEO优化,支持无限数量的产品和类别.报表 ...
- 题解:P6672 [清华集训2016] 你的生命已如风中残烛
题解:P6672 [清华集训2016] 你的生命已如风中残烛 标签 组合数学 分析 首先引入一个引理. Raney 引理 对于一个长度为 \(n\) 的序列 \(a\),如果 \(\sum\limit ...