一、前言

圆形的应用场景和多边形、矩形基本一致,支持的属性也是一致,比如可以设置线条的颜色、线条的粗细、线条透明度等。也是用来框起一块区域,然后根据坐标点集合,找到该区域内的标注点集合,比如指定某个县市区域多边形,然后找到这个县市对应的所有站点,拿到这些站点在做其他处理。

二、功能特点

  1. 同时支持在线地图和离线地图两种模式。
  2. 同时支持webkit内核、webengine内核、miniblink内核、IE内核。
  3. 支持设置多个标注点,信息包括名称、地址、经纬度。
  4. 可设置地图是否可单击、拖动、鼠标滚轮缩放。
  5. 可设置协议版本、秘钥、主题样式、中心坐标、中心城市、地理编码位置等。
  6. 可设置地图缩放比例和级别,缩略图、比例尺、路况信息等控件的可见。
  7. 支持地图交互,比如鼠标按下获取对应位置的经纬度。
  8. 支持查询路线,可设置起点位置、终点位置、路线模式、路线方式、路线方案(最少时间、最少换乘、最少步行、不乘地铁、最短距离、避开高速)。
  9. 可显示点线面工具,可直接在地图上划线、点、矩形、圆形等。
  10. 可设置行政区划,指定某个城市区域绘制图层,在线地图自动输出行政区划边界点集合到js文件给离线地图使用。
  11. 可静态或者动态添加多个覆盖物。支持点、折线、多边形、矩形、圆形、弧线、点聚合等。
  12. 提供函数接口处理经纬度解析成地址和地址解析成经纬度坐标。
  13. 提供的demo直接可以单独选点执行对应的处理比如路线查询。
  14. 可以拿到路线查询到的点坐标信息集合,比如用于机器人坐标导航等。
  15. 封装了丰富的函数比如删除指定点和所有点,删除指定覆盖物和所有覆盖物等。
  16. 标注点弹框信息可以自定义内容,标准html格式。
  17. 标注点单击事件可选 0-不处理 1-自己弹框 2-发送信号。
  18. 标注点可设置动画效果 0-不处理 1-跳动 2-坠落
  19. 标注点可设置本地图片文件等。
  20. 函数接口友好和统一,使用简单方便,就一个类。
  21. 支持js动态交互添加点、删除点、清空点、重置点,不需要刷新页面。
  22. 支持任意Qt版本、任意系统、任意编译器。

三、体验地址

  1. 体验地址:https://pan.baidu.com/s/1ZxG-oyUKe286LPMPxOrO2A 提取码:o05q 文件名:bin_map.zip
  2. 国内站点:https://gitee.com/feiyangqingyun
  3. 国际站点:https://github.com/feiyangqingyun
  4. 个人主页:https://blog.csdn.net/feiyangqingyun
  5. 知乎主页:https://www.zhihu.com/people/feiyangqingyun/

四、效果图

五、相关代码

void MapBaiDu::addCircle(QStringList &list)
{
//动态添加圆形
list << QString(" function addCircle(points, radius, color, weight, opacity) {");
list << QString(" var listPoint = points.split('|');");
list << QString(" var list = listPoint[0].split(',');");
list << QString(" var ptCenter = new %1.Point(list[0], list[1]);").arg(mapFlag);
list << QString(" var property = getProperty(color, weight, opacity);");
list << QString(" var circle = new %1.Circle(ptCenter, radius, property);").arg(mapFlag);
list << QString(" map.addOverlay(circle);");
list << QString(" }");
} void frmMapBaiDu::getOverlayPoints()
{
//改成了选中点作为参照点
QString center = ui->txtMapCenter->text();
QStringList list = center.split(",");
double lng = list.first().toDouble();
double lat = list.last().toDouble();
center = QString("%1,%2").arg(lng).arg(lat);
QString center2 = QString("%1,%2").arg(lng).arg(lat + 0.001);
QString center3 = QString("%1,%2").arg(lng + 0.002).arg(lat + 0.001);
QString center4 = center + "|" + center2 + "|" + center3; int index = ui->cboxOverlayType->currentIndex();
if (index == 0) {
overlayPoints = center;
} else if (index == 1) {
overlayPoints = center4;
} else if (index == 2) {
overlayPoints = center4;
} else if (index == 3) {
overlayPoints = center + "|" + center3;
} else if (index == 4) {
overlayPoints = center + "|" + "50";
} else if (index == 5) {
overlayPoints = center4;
} else if (index == 6) {
overlayPoints = "上海市徐汇区";
} else if (index == 7) {
QStringList points = QUIHelper::getRandPoint(100, lng, lat, 0.01, 0.01);
overlayPoints = points.join("|");
}
} void frmMapBaiDu::addOverlay()
{
QString js;
QString points = overlayPoints;
MapBaiDu::OverlayType type = (MapBaiDu::OverlayType)ui->cboxOverlayType->currentIndex();
if (type == MapBaiDu::OverlayType_Marker) {
js = QString("addMarker('测试点', '测试地址', '', '', 60, '%1', 2)").arg(points);
} else if (type == MapBaiDu::OverlayType_Polyline) {
js = QString("addPolyline('%1')").arg(points);
} else if (type == MapBaiDu::OverlayType_Polygon) {
js = QString("addPolygon('%1')").arg(points);
} else if (type == MapBaiDu::OverlayType_Rectangle) {
js = QString("addRectangle('%1')").arg(points);
} else if (type == MapBaiDu::OverlayType_Circle) {
js = QString("addCircle('%1', 100)").arg(points);
} else if (type == MapBaiDu::OverlayType_CurveLine) {
js = QString("addCurveLine('%1')").arg(points);
} else if (type == MapBaiDu::OverlayType_Boundary) {
js = QString("addBoundary('%1', false, false)").arg(points);
} else if (type == MapBaiDu::OverlayType_MarkerClusterer) {
js = QString("addMarkerClusterer('%1')").arg(points);
} runJs(js);
}

Qt编写地图综合应用39-覆盖物圆形的更多相关文章

  1. 【百度地图API】如何用圆形搜索获取中心点周围100米内全部关键点?如天安门附近所有的餐厅、加油站、宾馆、大厦等

    原文:[百度地图API]如何用圆形搜索获取中心点周围100米内全部关键点?如天安门附近所有的餐厅.加油站.宾馆.大厦等 摘要: 在LBS上有这样一个常用的功能,查找附近所有的关键点(POI点,比如标志 ...

  2. Android高效率编码-第三方SDK详解系列(一)——百度地图,绘制,覆盖物,导航,定位,细腻分解!

    Android高效率编码-第三方SDK详解系列(一)--百度地图,绘制,覆盖物,导航,定位,细腻分解! 这是一个系列,但是我也不确定具体会更新多少期,最近很忙,主要还是效率的问题,所以一些有效的东西还 ...

  3. Qt编写自定义控件11-设备防区按钮控件

    前言 在很多项目应用中,需要根据数据动态生成对象显示在地图上,比如地图标注,同时还需要可拖动对象到指定位置显示,能有多种状态指示,安防领域一般用来表示防区或者设备,可以直接显示防区号,有多种状态颜色指 ...

  4. Qt编写的开源帖子集合(懒人专用)

    回顾自己学习Qt以来九年了,在这九年多时间里面,从本论坛学习不到不少的东西,今天特意整了一下自己开源过的资源的帖子,整理一起方便大家直接跳转下载,不统计不知道,一统计吓一跳,不知不觉开源了这么多代码, ...

  5. Qt编写项目作品大全(自定义控件+输入法+大屏电子看板+视频监控+楼宇对讲+气体安全等)

    一.自定义控件大全 (一).控件介绍 超过160个精美控件,涵盖了各种仪表盘.进度条.进度球.指南针.曲线图.标尺.温度计.导航条.导航栏,flatui.高亮按钮.滑动选择器.农历等.远超qwt集成的 ...

  6. Qt编写安防视频监控系统(界面很漂亮)

    一.前言 视频监控系统在整个安防领域,已经做到了烂大街的程序,全国起码几百家公司做过类似的系统,当然这一方面的需求量也是非常旺盛的,各种定制化的需求越来越多,尤其是这几年借着人脸识别的东风,发展更加迅 ...

  7. Qt编写自定义控件38-高亮按钮

    一.前言 高亮按钮控件,既可以作为类似于交通指示灯使用,也可以作为设备状态指示灯使用,控件内置多套颜色风格,还可以自己设置颜色风格,按钮可以增加文字显示,非常适合需要在状态设备上显示小量的文字展示,按 ...

  8. Qt编写自定义控件二动画按钮

    现在的web发展越来越快,很多流行的布局样式,都是从web开始的,写惯了Qt widgets 项目,很多时候想改进一下现有的人机交互,尤其是在现有的按钮上加一些动画的效果,例如鼠标移上去变大,移开还原 ...

  9. Qt编写自定义控件10-云台仪表盘

    前言 做过安防视频监控的同学都清楚,在视频监控系统软件上都可以看到一个云台控制区域,可以对球机进行下下左右等八个方位的运动控制,还可以进行复位,一般都是美工作图好,然后贴图的形式加入到软件中,好处是程 ...

  10. Qt编写自定义控件4-旋转仪表盘

    前言 旋转仪表盘,一般用在需要触摸调节设置值的场景中,其实Qt本身就提供了QDial控件具有类似的功能,本控件最大的难点不在于绘制刻度和指针等,而在于自动计算当前用户按下处的坐标转换为当前值,这个功能 ...

随机推荐

  1. 小程序的json文件

    json文件是页面的描述文件,对本页面的窗口外观设置,页面的配置可以覆盖全局的配置 (app.json);

  2. promise是什么?它有哪些作用?

    promsie是es6新增的特性,用来解决回调地狱的问题(异步深层嵌套问题) : 也叫做期约函数,是js内部的构造函数 ,可以当作一个容器,里面保存着某个未来才会结束的事件,比如异步请求 :

  3. fastjson序列化导致prometheus返回监控数据格式错乱

    在springboot 中集成prometheus的监控时遇见问题. 因为项目里在StaticResourceConfig配置了fastjson 序列化,导致prometheus接口返回数据被转化为j ...

  4. Spark任务OOM问题如何解决?

    大家好,我是 V 哥.在实际的业务场景中,Spark任务出现OOM(Out of Memory) 问题通常是由于任务处理的数据量过大.资源分配不合理或者代码存在性能瓶颈等原因造成的.针对不同的业务场景 ...

  5. 四、Spring Boot集成Spring Security之认证流程

    二.概要说明 本文主要介绍登录登出业务流程,所以使用基于内存的用户名密码,暂不介绍授权相关内容,后续会详细介绍基于数据库的认证及授权 如何查看基于内存的默认用户名密码 如何配置基于内存的自定义用户名密 ...

  6. Centos7下非lvm的分区扩容

    Centos7下非lvm的分区扩容(重要) 前言:一般在生产环境中,如果需要使用一个分区保存大量的文件,建议的做法是在虚拟化环境中增加一块单独的硬盘,挂载一个单独的分区,比如 /data 上图我们可以 ...

  7. MySQL 通过 Next-Key Locking 技术(行锁+间隙锁)避免幻读问题

    在MySQL中,InnoDB引擎通过Next-Key Locking技术来解决幻读问题.幻读是一种事务并发问题,通常出现在Repeatable Read隔离级别下的范围查询操作中.幻读的现象是,事务在 ...

  8. c++中输出小数

    首先 需要有#include<iomanip>这个头文件,因为它是输出输出流的格式控制 #include<iomanip> // 用于调用setprecision(n) 1 d ...

  9. 一些有用的shell命令组合

    1.找出Linux系统中磁盘占用最大的10个文件 1)CentOS7 和 busybox 1.30.1 验证可用 find / -type f -print0 | xargs -0 du | sort ...

  10. 人工智能模型训练中的数据之美——探索TFRecord

    上一篇:<构建人工智能模型基础:TFDS和Keras的完美搭配> 序言:在人工智能模型的训练过程中,如何高效管理和处理大量数据是一个重要的课题.TensorFlow 的 TFRecord ...