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)

相关推荐

  • 雅诗兰黛的眼霜,雅诗兰黛眼霜套盒的使用顺序

    技术雅诗兰黛的眼霜,雅诗兰黛眼霜套盒的使用顺序正确的护肤顺序:鲜亮焕采精粹水――即时修护特润精华露―― 奇迹丰盈抗皱精华露――黛盈润保湿乳液――新款红石榴日晚霜套装雅诗兰黛的眼霜。需要注意的是:如果你是25岁以下的,可以

    生活 2021年10月30日
  • 美容医院排行,苏州排行第一的整形医院是哪家

    技术美容医院排行,苏州排行第一的整形医院是哪家苏州解放军第一00医院整形美容中心创建于1915年,迄今已有近百年的历史,医院坐落于古城苏州风景秀美的沧浪亭畔,建筑风格典雅的门诊楼美容医院排行、住院楼、疗养楼、康复楼与著名

    生活 2021年10月30日
  • 如何快速掌握Fink SQL

    技术如何快速掌握Fink SQL这篇文章主要讲解了“如何快速掌握Fink SQL”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何快速掌握Fink SQL”吧!1、导入所

    攻略 2021年10月22日
  • 英语邮件常用语,英文邮件开头打招呼的词都有哪些

    技术英语邮件常用语,英文邮件开头打招呼的词都有哪些邮件的开头,在称呼之后,通常会问候一下英语邮件常用语:1.Hopeyou are well.2.Havenot heard from you for a long tim

    生活 2021年10月30日
  • JavaScript实现换肤效果(换背景)

    技术JavaScript实现换肤效果(换背景) JavaScript实现换肤效果(换背景)JavaScript实现换肤效果(换背景)
    本文实例为大家分享了JavaScript实现换肤效果的具体代码,供大

    礼包 2021年11月1日
  • Docker怎样进行部署dotnetcore

    技术Docker怎样进行部署dotnetcore这篇文章给大家介绍Docker怎样进行部署dotnetcore,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。安装docker系统还是之前centos

    攻略 2021年11月19日