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)

相关推荐

  • Redis持久化的方法是什么

    技术Redis持久化的方法是什么本篇内容主要讲解“Redis持久化的方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Redis持久化的方法是什么”吧!RDB持久化Re

    攻略 2021年11月4日
  • 如何进行JavaScript中getter/setter的实现

    技术如何进行JavaScript中getter/setter的实现如何进行JavaScript中getter/setter的实现,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望

    攻略 2021年10月29日
  • 怎么用Java实现网上电商项目

    技术怎么用Java实现网上电商项目这期内容当中小编将会给大家带来有关怎么用Java实现网上电商项目,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一、项目简述本系统功能包括: 一款基于S

    攻略 2021年11月12日
  • 平行四边形对角线性质,平行四边形对角线垂直吗

    技术平行四边形对角线性质,平行四边形对角线垂直吗性质:平行四边形:对边平行且相等,对角相等,两条对角线互相平分,中心对称平行四边形对角线性质。 矩形:对边平行且相等,四个角都是直角,两条对角线互相平分且相等,轴对称,中心

    生活 2021年10月19日
  • sqlserver索引的原理及索引建立的注意事项有哪些

    技术sqlserver索引的原理及索引建立的注意事项有哪些本篇文章为大家展示了sqlserver索引的原理及索引建立的注意事项有哪些,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

    攻略 2021年12月1日
  • 网站或者APP短信验证码是如何实现的

    技术网站或者APP短信验证码是如何实现的这篇文章主要介绍了网站或者APP短信验证码是如何实现的,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。短信验证码下发

    攻略 2021年11月30日