qt 场景视图画地图(qt图片绘制区域得到点坐标)

技术Qt如何编写地图实现省市区域图这篇文章主要介绍了Qt如何编写地图实现省市区域图,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、前言省市区域图也可以叫

本文主要介绍Qt如何编图实现省市区域地图,具有一定的参考价值。有兴趣的朋友可以参考一下。希望大家看完这篇文章后收获多多。让边肖带你去了解一下。

00-1010省市区域图也可以称为省市轮廓图,即把每个省市的边界区域变成轮廓显示,这只是一个大致的轮廓,与实景图基本一致。毕竟都是一个个堆砌起来的,可能会有小错误。在大屏系统中间制作中国地图之前,客户想尽一切办法想清楚,一定要注意九段线。不然在展会上被别人看到,连九段线都没有,会被骂死。可能有些前期数据因为不完善可能没有,但后期最新的地图数据是有的,包括轮廓数据。

Echart本身不提供省市的轮廓图,需要引入外部js文件进行绘制。为了得到全国各省市对应大纲图的js文件,我特意在网上搜索了很多相关文章并了解了一下,下载了对应省市的json数据,然后专门编写了一个类,根据js规则将jsON数据转换成js文件,然后生成各省市的JS文件。在echart中使用哪一个只需要那个的js文件。这些js文件可以在下载地址找到。至于这些区域的轮廓图,其实是一些凌乱的符号。不知道具体是什么意思。你说这是base64编码。仔细看不像。不管怎样,用它是对的。具体原理估计还需要研究echart的源代码。

之前的闪烁点图或者迁移图都是基于中国的轮廓图,可以用鼠标缩放。事实上,svg也可以达到类似的效果,类似于矢量地图。除了中国地图,还可以有世界地图。至于世界上其他国家的地图,估计要通过其他方式慢慢转换。原则上应该有很多针对国外客户的应用软件。

00-1010还支持闪烁点图、迁移图、区域图、仪表盘等。

可以设置标题、提示信息、背景色、文字色、线条色、区域色等各种颜色。

可以设置城市的名称、数值、经纬度集。

您可以设置地图的放大倍数以及是否允许鼠标滚轮缩放。

内置世界地图、国家地图、省地图、区域地图可精准到县,所有地图均离线使用。

内置json数据文件到各省市js文件的功能,如有数据更新,可自行转换,支持单文件转换,所有文件一键转换。

内置从json文件或js文件获取该区域所有名称和经纬度信息集的功能,通过这种方法可以获取信息进行显示。

根据显示地图的浏览器组件,提供的演示支持webkit、webengine和ie加载网页。

极具拓展性,可以根据葫芦画瓢自行添加各种精美的echarts组件,制作出令人敬畏的效果。

内置仪表盘组件提供交互功能,演示演示包含相应的代码。

界面友好统一,使用简单方便,就一个类。

支持任何Qt版本,任何系统和任何编译器。

00-1010体验地址:https://pan.baidu.com/s/1Ie1xGLv7tSL-9vfsv28w1Q提取代码: wf4f文件名:bin_map.zip

国内网站:https://gitee.com/feiyangqingyun

国际网站:https://github.com/feiyangqingyun

一、前言

Qt如何编写地图实现省市区域图

二、功能特点

qstrillistechartjs : getinofromdata(constQByteArraydata)

{

//取出对应的城市名称和经纬度。

//下面两种方法测试了解析时间,json大概是1S,字符串分段大概是5s,JSON方法比较快。

qstringlisterresult;

# if(QT _ VERSION QT _ VERSION _ CHECK(5,0,0))

//用qt内置的json方法解析

QJsonParseErrorerror

QJsonDocumentjsonDoc=qjsondocument: fromjson(数据,错误);

if(错误. er

ror == QJsonParseError::NoError) {
        QJsonObject rootObj = jsonDoc.object();
        //qDebug() << rootObj.keys();

        if (rootObj.contains("features")) {
            QJsonArray features = rootObj.value("features").toArray();
            for (int i = 0; i < features.count(); i++) {
                QJsonValue value = features.at(i);
                QJsonObject subObj = value.toObject();
                if (subObj.contains("properties")) {
                    QJsonObject nodeObj = subObj.value("properties").toObject();
                    QStringList list;
                    QJsonArray array = nodeObj.value("cp").toArray();
                    for (int k = 0; k < array.count(); k++) {
                        list << QString::number(array.at(k).toDouble());
                    }

                    QString name = nodeObj.value("name").toString();
                    QString cp = list.join(",");
                    result << QString("%1|%2").arg(name).arg(cp);
                }
            }
        }
    }
#else
    //采用字符串分割方法解析
    QString temp = data;
    temp = temp.mid(0, temp.length() - 24);
    QString flag = "properties";
    int len = temp.length();
    for (int i = 0; i < len; i++) {
        QString str = temp.mid(i, 10);
        if (str == flag) {
            str = temp.mid(i, 100);
            str = str.mid(13, str.indexOf("},") - 13);
            str = str.replace("}", "");
            //到这步数据已经变成 "cp":[121.490317,31.222771],"name":"黄浦区","childNum":1
            //cp name的顺序可能不一样,所以需要分割字符串重新判断
            QString name, cp;
            QStringList list = str.split(",");
            foreach (QString s, list) {
                if (s.startsWith("\"cp\"")) {
                    cp = s.mid(6, s.length());
                } else if (s.startsWith("\"name\"")) {
                    name = s.mid(8, s.length());
                    name = name.replace("\"", "");
                } else if (s.startsWith("\"childNum\"")) {

                } else {
                    //经纬度会拆分成两部分,一部分在这里 31.222771]
                    cp = QString("%1,%2").arg(cp).arg(s.left(s.length() - 1));
                }
            }

            result << QString("%1|%2").arg(name).arg(cp);
        }
    }
#endif
    return result;
}

感谢你能够认真阅读完这篇文章,希望小编分享的“Qt如何编写地图实现省市区域图”这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/153411.html

(0)

相关推荐

  • 分析js对象的读取速度

    技术分析js对象的读取速度本篇内容介绍了“分析js对象的读取速度”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、访问字

    攻略 2021年11月8日
  • ps如何添加字体,ps如何添加字体样式文件

    技术ps如何添加字体,ps如何添加字体样式文件1ps如何添加字体、打开PS,新建一个图形文件,并随意输入一行文字2、把该行文字选上,点击如图中位置,可以选择字体样式、大小等。3、在右下侧图层栏把该图像选上,在图像中空白处

    生活 2021年10月20日
  • mysql设置字段为varchar(mysql怎么把varchar改类型)

    技术mysql如何转换varchar这篇文章主要介绍了mysql如何转换varchar,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

    攻略 2021年12月16日
  • 怎么用Python写一个电信客户流失预测模型

    技术怎么用Python写一个电信客户流失预测模型这篇文章主要讲解了“怎么用Python写一个电信客户流失预测模型”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用Pyt

    攻略 2021年10月26日
  • 社戏人物形象分析,社戏中的人物形象分析和句子

    技术社戏人物形象分析,社戏中的人物形象分析和句子【文学常识】鲁迅社戏人物形象分析,原名周树人,字豫才。浙江绍兴人。伟大的无产阶级文学家、思想家和革命家。中国现代文学的奠基人。代表作有我国现代文学史上第一篇白话小说《狂人日

    生活 2021年10月22日
  • 未时是几点到几点钟,午时,未时,酉时是几点

    技术未时是几点到几点钟,午时,未时,酉时是几点排列时间顺序是正确的每天晚上从11点开始就进入第二天的子时 是两天的分界点 到凌晨1点子时结束 就是11点到1点是子时 1点到3点是丑时 往下排3点到5点是寅时 5点到

    生活 2021年10月27日