一、前言

在添加设备点或者区域形状的时候,会考虑是直接静态的方式写入到网页中加载,还是动态js函数异步加载的方式,这个需要根据现场的实际需求来,如果只需要一次加载的话建议静态即可,如果运行期间还需要动态添加的话就采用动态的js函数交互的方法,绝大部分场景都是动态添加,毕竟这个是异步执行的,而且比较灵活,静态的方式写入到网页中加载开起来比较傻,数据都在网页中可以看到了,没有什么保密性可言,在前面两篇文章做行政区划和点聚合的时候,也是两种方法都支持,具体现场怎么方便怎么来。

动态添加的话,相当于要把官网那些demo,都做成js函数调用的形式,官网的那些demo主要都是以静态写死的方式作为演示的,为了更直观更容易理解,如果是Qt程序员或者c++的程序,需要花一丢丢时间才能学会如何将其封装成js函数调用,毕竟在js中没有数据类型的概念,统一都是var,相当于Qt中的QVariant类型,所谓万物皆var,数组和数组对象直接用[]搞定,着实相当方便。

二、功能特点

  1. 同时支持在线地图和离线地图两种模式。
  2. 同时支持webkit内核、webengine内核、IE内核。
  3. 支持设置多个标注点,信息包括名称、地址、经纬度。
  4. 可设置地图是否可单击、拖动、鼠标滚轮缩放。
  5. 可设置协议版本、秘钥、主题样式、中心坐标、中心城市、地理编码位置等。
  6. 可设置地图缩放比例和级别,缩略图、比例尺、路况信息等控件的可见。
  7. 支持地图交互,比如鼠标按下获取对应位置的经纬度。
  8. 支持查询路线,可设置起点位置、终点位置、路线模式、路线方式、路线方案(最少时间、最少换乘、最少步行、不乘地铁、最短距离、避开高速)。
  9. 可显示点线面工具,可直接在地图上划线、点、矩形、圆形等。
  10. 可设置行政区划,指定某个城市区域绘制图层,在线地图自动输出行政区划边界点集合到js文件给离线地图使用。
  11. 可静态或者动态添加多个覆盖物。支持点、折线、多边形、矩形、圆形、弧线、点聚合等。
  12. 函数接口友好和统一,使用简单方便,就一个类。
  13. 支持js动态交互添加点、删除点、清空点、重置点,不需要刷新页面。
  14. 支持任意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::addPolyline(QStringList &list)
{
//覆盖物通用属性,包括颜色线条粗细等,可以自行更改
QString property = getOverlayProperty(); //动态添加折线
list << QString(" function addPolyline(points) {");
list << QString(" var pts = getPoints(points);");
list << QString(" var polyline = new BMap.Polyline(pts, %1);").arg(property);
list << QString(" map.addOverlay(polyline);");
list << QString(" }");
} void MapBaiDu::addPolygon(QStringList &list)
{
//覆盖物通用属性,包括颜色线条粗细等,可以自行更改
QString property = getOverlayProperty(); //动态添加多边形
list << QString(" function addPolygon(points) {");
list << QString(" var pts = getPoints(points);");
list << QString(" var polygon = new BMap.Polygon(pts, %1);").arg(property);
list << QString(" map.addOverlay(polygon);");
list << QString(" }");
} void MapBaiDu::addRectangle(QStringList &list)
{
//覆盖物通用属性,包括颜色线条粗细等,可以自行更改
QString property = getOverlayProperty(); //动态添加矩形
list << QString(" function addRectangle(points) {");
list << QString(" var listPoint = points.split(\"|\");");
list << QString(" if (listPoint.length != 2) {");
list << QString(" return;");
list << QString(" }"); //将两个坐标拆分成四个点
list << QString(" var list1 = listPoint[0].split(\",\");");
list << QString(" var list2 = listPoint[1].split(\",\");");
list << QString(" var ptStart = new BMap.Point(list1[0], list1[1]);");
list << QString(" var ptEnd = new BMap.Point(list2[0], list2[1]);");
list << QString(" var pt1 = new BMap.Point(ptStart.lng, ptStart.lat);");
list << QString(" var pt2 = new BMap.Point(ptEnd.lng, ptStart.lat);");
list << QString(" var pt3 = new BMap.Point(ptEnd.lng, ptEnd.lat);");
list << QString(" var pt4 = new BMap.Point(ptStart.lng, ptEnd.lat);");
list << QString(" var rectangle = new BMap.Polygon([pt1,pt2,pt3,pt4], %1);").arg(property);
list << QString(" map.addOverlay(rectangle);");
list << QString(" }");
} void MapBaiDu::addCircle(QStringList &list)
{
//覆盖物通用属性,包括颜色线条粗细等,可以自行更改
QString property = getOverlayProperty(); //动态添加圆形
list << QString(" function addCircle(points, radius) {");
list << QString(" var listPoint = points.split(\"|\");");
list << QString(" var list = listPoint[0].split(\",\");");
list << QString(" var ptCenter = new BMap.Point(list[0], list[1]);");
list << QString(" var circle = new BMap.Circle(ptCenter, radius, %1);").arg(property);
list << QString(" map.addOverlay(circle);");
list << QString(" }");
}

Qt编写地图综合应用11-动态添加的更多相关文章

  1. 插件~使用ECharts动态在地图上标识点~动态添加和删除标识点

    之前写过一个Echarts的文章,没有基础的同学可以先看这<上一篇>,对于一个地图和说,我们在初始化之后,你可能被在地图上标识出一些点,当然这根据你的业务去标识,而如果每次更新数据都加载全 ...

  2. Qt编写自定义控件插件开放动态库dll使用(永久免费)

    这套控件陆陆续续完善了四年多,目前共133个控件,除了十几个控件参考网友开源的代码写的,其余全部原创,在发布之初就有打算将动态库开放出来永久免费使用,在控件比较完善的今天抽了半天时间编译了多个qt版本 ...

  3. Qt编写自定义控件59-直方动态图

    一.前言 直方动态图类似于音乐播放时候的柱状图展示,顶部提供一个横线条,当柱状上升的时候,该线条类似于帽子的形式冲到顶端,相当于柱状顶上去的感觉,给人一种动态的感觉,听音乐的同时更加赏心悦目,原理比较 ...

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

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

  5. Quartz动态添加,修改,删除任务(暂停,任务状态,恢复,最近触发时间)

    首页 博客 学院 下载 图文课 论坛 APP 问答 商城 VIP会员 活动 招聘 ITeye GitChat 写博客 小程序 消息 登录注册 关闭 quartz_Cron表达式一分钟教程 09-05 ...

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

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

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

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

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

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

  9. Qt编写自定义控件55-手机通讯录

    一.前言 前面几篇文章中的控件基本上难度系数接近0,甚至有凑控件数量的嫌疑,这次必须来一个强悍的控件,本控件难度系数在所有控件中排前五,代码量也不少,头文件都550行,实现文件1600行,为什么这么多 ...

  10. Qt编写数据可视化大屏界面电子看板1-布局方案

    一.前言 布局方案在整个数据可视化大屏界面电子看板系统中,是除了基础功能以外的核心功能之一,只有具备了布局方案这个功能,才能让用户随意调整自己想要的布局,保存成自定义名称的布局配置文件,这样就大大增加 ...

随机推荐

  1. 快速部署kafka集群和可视化界面

    3台机器部署kafka集群的分布 10.1.161.111 -> kafka(1个节点)+ zookeeper(一个节点)+ kowl(一个节点) 10.1.161.112 -> kafk ...

  2. OKR 目标和关键成果

    OKR(Objectives and Key Results)是目标与关键成果管理法,是一套明确和跟踪目标及其完成情况的管理工具和方法.1.OKR首先是沟通工具:团队中的每个人都要写OKR,所有这些O ...

  3. 元类、实现ORM

    阅读目录: 元类 元类实现ORM 元类 1. 类也是对象 在大多数编程语言中,类就是一组用来描述如何生成一个对象的代码段.在Python中这一点仍然成立: >>> class Obj ...

  4. 【Python】公众号聚合登录软件+源码

    废话不多说了,直接上图,回复拿软件和源码[自己打包,配置环境比较复杂] 写这个软件就是因为其他平台的会员太贵了,还不如自己写个,不限制账号登录数~ 授权,打开和删除功能都是正常的, 面板功能,我打算做 ...

  5. Nuxt.js 应用中的 nitro:build:before 事件钩子详解

    title: Nuxt.js 应用中的 nitro:build:before 事件钩子详解 date: 2024/11/4 updated: 2024/11/4 author: cmdragon ex ...

  6. 【Playwright + Python】系列(十)利用 Playwright 完美处理 Dialogs 对话框

    哈喽,大家好,我是六哥!今天我来给大家分享一下如何使用playwight处理Dialogs对话框,面向对象为功能测试及零基础小白,这里我尽量用大白话的方式举例讲解,力求所有人都能看懂,建议大家先**收 ...

  7. 简单但实用,RTC时钟使用指南

    合宙Air201快速入门-RTC实时时钟使用示例- 本教程教你通过使用脚本代码,实现Air201内置RTC实时时钟同步时间.获取时间.设置时间等功能,可根据实际需求灵活应用. 我们先了解一些相关基础知 ...

  8. cmu15545笔记-查询执行(Query Excution)

    目录 执行模型 Iterator Model Materialization Model Vectoriazation Model 对比 数据访问方式 Sequential Scan Index Sc ...

  9. ExtJS & Asp.NET

    企业应用中,要快速开发Web应用,前端使用ExtJS还行,包含许多常用的控件,图标,配色方案... 帖上部分载图: 完全可订制的登录界面: 可调整的布局: 可综合使用的模态对话框: 树结构及动态加载: ...

  10. 我们有40%代码是 AI 写的