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)

相关推荐

  • 河南十三届ICPC部分题解

    技术河南十三届ICPC部分题解 河南十三届ICPC部分题解A.祝融传火
    输入之后,暴力枚举\((x,y)\)判断即可
    #include bits/stdc++.h
    using namespace std

    礼包 2021年10月20日
  • 怎么理解UML

    技术怎么理解UML今天就跟大家聊聊有关怎么理解UML,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。什么是UML?Unified Modeling Language

    攻略 2021年11月23日
  • gps是什么意思,导航和GPS有什么区别

    技术gps是什么意思,导航和GPS有什么区别GPS(Global Positioning System)即全球卫星定位系统,从1973年发展到2009年36年间,实际意义早已超过设计之初的定义。现在,GPS不仅仅为移动目

    生活 2021年10月28日
  • 别人夸你优秀神回复,朋友夸我有才我怎么回复

    技术别人夸你优秀神回复,朋友夸我有才我怎么回复被别人夸奖别人夸你优秀神回复,怎样回答才显示出我们的高情商呢,我总结了下面五种回应方式仅供参考。
    1、以接受来回应
    如果别人夸你,而你又不知道怎么去回应的话,起码要接受并感谢

    生活 2021年10月21日
  • Hibernate3有哪些新特性

    技术Hibernate3有哪些新特性小编给大家分享一下Hibernate3有哪些新特性,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Hiber

    攻略 2021年12月8日
  • kafka分区数量设置多少合适(kafka 分区个数与集群大小的关系)

    技术如何为Kafka集群确定合适的分区数以及分区数过多带来的弊端如何为Kafka集群确定合适的分区数以及分区数过多带来的弊端,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到

    攻略 2021年12月15日