Qt编写地图综合应用13-获取边界点
2023-09-14 09:01:42 时间
一、前言
获取边界点一般和行政区划搭配起来使用,比如用户输入一个省市的名称,然后自动定位到该省市,然后对该轮廓获取所有边界点集合输出到js文件,最后供离线使用,获取边界点还有一个功能就是获取当前区域内的左下角右上角等经纬度坐标,这个主要是供离线地图下载使用的,百度地图很好的提供了bdary.get(cityname, function(rs)的函数来获取行政区划的边界点集合,其中rs.boundaries就是所有的边界点集合,估计他是服务器上存储好的每个区域的集合,查询到了立即返回,可能早期也是人工的一点点圈起来连线好存到到数据库的,按照此方式其实可以搞一个程序自动将全国的所有省市边界点集合数据全部扒下来,给离线地图使用,测试了下貌似只支持到县城级别,不支持具体到乡镇。
二、功能特点
- 同时支持在线地图和离线地图两种模式。
- 同时支持webkit内核、webengine内核、IE内核。
- 支持设置多个标注点,信息包括名称、地址、经纬度。
- 可设置地图是否可单击、拖动、鼠标滚轮缩放。
- 可设置协议版本、秘钥、主题样式、中心坐标、中心城市、地理编码位置等。
- 可设置地图缩放比例和级别,缩略图、比例尺、路况信息等控件的可见。
- 支持地图交互,比如鼠标按下获取对应位置的经纬度。
- 支持查询路线,可设置起点位置、终点位置、路线模式、路线方式、路线方案(最少时间、最少换乘、最少步行、不乘地铁、最短距离、避开高速)。
- 可显示点线面工具,可直接在地图上划线、点、矩形、圆形等。
- 可设置行政区划,指定某个城市区域绘制图层,在线地图自动输出行政区划边界点集合到js文件给离线地图使用。
- 可静态或者动态添加多个覆盖物。支持点、折线、多边形、矩形、圆形、弧线、点聚合等。
- 函数接口友好和统一,使用简单方便,就一个类。
- 支持js动态交互添加点、删除点、清空点、重置点,不需要刷新页面。
- 支持任意Qt版本、任意系统、任意编译器。
三、体验地址
- 体验地址: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 MapBaiDu::getBounds(QStringList &list)
{
//获取可视区域经纬度 bssw=左下角 bsne=右上角 bsce=中心
list << QString(" function getBounds() {");
list << QString(" var bs = map.getBounds();");
list << QString(" var bssw = bs.getSouthWest();");
list << QString(" var bsne = bs.getNorthEast();");
list << QString(" var bsce = bs.getCenter();");
list << QString(" var rect = bssw.lng + ',' + bssw.lat + ',' + bsne.lng + ',' + bsne.lat + ',' + bsce.lng + ',' + bsce.lat + ',' + map.getZoom();");
//信号发出去
list << QString(" window.%1('bounds', rect);").arg(callFun);
list << QString(" }");
}
void MapBaiDu::getBoundary(QStringList &list)
{
list << QString(" function getBoundary() {");
list << QString(" for (var i = 0; i < polygons.length; i++) {");
list << QString(" var polyline = polygons[i];");
list << QString(" var pts = polyline.getPath();");
list << QString(" var result = '';");
list << QString(" for (var j = 0; j < pts.length; j++) {");
list << QString(" result += pts[j].lng + ', ' + pts[j].lat + ';';");
list << QString(" }");
list << QString(" window.%1('newboundary', result);").arg(callFun);
list << QString(" }");
list << QString(" }");
}
相关文章
- pyCharm的Qt开发环境搭建「建议收藏」
- Qt多线程1:QThread
- Qt-4.8.7交叉编译平台的搭建、移植详解( aarch32、aarch64 、mips64)「建议收藏」
- Qt导出exe程序并打包
- C/C++ Qt 自定义Dialog对话框组件应用
- 嵌入式Qt-表格使用测试
- Qt官方示例-Qml翻转动画
- 建立Linux下QT动态库建立快速指南(linux下qt动态库)
- 使用Qt快速设置Linux时间(qt设置linux时间)
- Qt读写文件(2种方式)实现详解
- Linux安装Qt:实现轻松易用之旅(linux中安装qt)
- 开发Linux Qt界面开发:拥抱开源世界的应用之旅(linuxqt界面)
- 实现Linux下Qt应用静态编译的方法(linux下qt静态编译)
- Linux Qt快速入门:从零开始快速了解(linuxqt快速入门)
- Linux下的Qt编译器之旅(qt编译器linux)
- Linux下高效安装Qt(linux下安装qt)
- Linux上静态编译Qt应用实现方案(linux静态编译qt)
- Qt 静态编译在 Linux 的实践(qt静态编译linux)
- 使用Linux构建Qt界面:一种自定义体验(linuxqt界面开发)
- 「零基础入门」Linux下安装QT教程,助力程序员成为高手!(linux下安装qt教程)
- Linux下Qt应用程序调试实践(linuxqt调试)
- 快速使用QT进行MySQL数据库操作(qt使用mysql数据库)
- 提高数据处理效率:探究Qt与MySQL数据库的结合应用(qt与mysql数据库)
- 如何在Linux上运行QT程序?(linux运行qt程序)
- 在Qt中编译Oracle环境(qt编译 oracle)
- Qt 与 MySQL 数据库的数据插入操作(qtmysql插入)
- Redis与Qt实现完美连接(redis连接qt)
- Redis使用Qt解决读写互斥问题(redis读写互斥qt)