赣州新闻网

首页 / 科技

Qt编写地图综合应用1-闪烁点图

2020-04-04 · 赣州新闻网 · 科技

## 一、前言

Qt作为一个超大型的一站式GUI超市开发集成环境,不仅集成了大量的可视化UI组件,还提供了网络库、数据库操作、文件操作等类库,封装的还是相当精彩一步到位,根据个人身边的一些程序员朋友了解,自从用了Qt以来发现越来越喜欢用Qt本身的类来处理,除非一些要求很高的应用场景比如并发网络才需要去使用第三方库,不然就是直接使用Qt封装好的类,用起来非常爽,尤其是类的名称和方法的名称,几乎很自然的J { o w { 2 h c R就能打出来。

Qt除了内c I置了各种UI组件以外,还直接集成了浏4 o 2 h ^览器控件,注意哦这可是跨平台的浏览器控件哦,在5.6版本以前集成的是webkq | t x U ,iQ U (ine、ie 三种方式加Q K + P载网页。

9. 拓展Q N ~性极强,可以依葫芦画瓢自行增加各种精美的echarts组件,做出牛逼的效果。

10. 内置的仪表盘组? z G件提供交互V P t * 2 G e功能,demo演示中包含了对应的代码。

11. 函数接口友好和统一,使用简单方便,就一个类。

12. 支持任意Qt版本y C O、任意系统、任意编译器。

## 三、体验地址

国内站点:(https://gitee.ck K _ . A Xom/feiyangqingyun)

国际站点:(https://github.com/feiyangqingyu3 D { ~ t qn)

## 四` P h S Z ` a y、效果图


Qt编写地图综合应用1-闪烁点图


## 五、相关代码

//核心代码

QString Echarts::newChartPoint()

{

int cityNameCount = ci? W ) D wtyName.count();

int cityValueCount = cityValue.count();

int cityPointCount = cityPoint.count();

if (cityNameCouno p ^ .t != cityValueCounv G - s G Ht || cityValueCount != cityPoi~ U { &ntCount) {

return \"\";

}

QStrij % Z 3 e P ~ngList bow Y @ t添加对应的经纬度

QStrI W eingList) 0 r , E 8 ] Y points;

for (int i = 0; i < cityNameCount; il j D C q ++) {

points << QStriI 7 6 @ n Png(\"\'%1\':\").arg(cityName.at(i)).arg(cityPoin- ` { p g & & Lt.at(i));

}

bo1 & * $ % 1dy << QString(\" var data = \").arg(values.s 9 q 0 N ojoin(\",\"));

body << QString8 w j b : 9(\" var geoCoordMap = {%1};\"). * 1 .arg(points.join(\",\"));

//转换数据

QStringList datas;

da^ 2 = Ctas << QStrih Y w X I ^ mng(\"var convertData = function (data) {\");

datas << QString(\" var res = ;\");

datas << QString(\" for (var i = 0; i < data.length; i++) {\");

datas <7 ( o X< QString(\" var geoCoord = geoCoordMap[data.name];\: p K Z g e ? L");

datas <2 f p , 8 N Y $ N;< QString(\" if (geB Q f ? ~ doCoord) {\");

datas << QString(\" res.push({\")% h ~ 1 p;

datas << QString(\" name: data.name,\");

datas << QString(\" value: geoCoord.concat(data.value)\");

datas << QString(\" });\");

datas << QSI E ; ] A 1 htrinv h b _ b ug(\" }\");

datas << QSt/ E ) ~ u Xring(\" }\");

datas << QString(\" returni R i res;\");

datas <<? D { C n Y , H QString(\"};\");

body << \" \" +x ` ^ n / ? J datas._ + Rjoin(\"\\r\\n \");

b5 8 ~ H ! -ody << \"\";

QStringList optionBase = getOptionBase()( u b;

QStringList optionGeo = getOptionGeo();

QStringList optionSeriea 9 O *s;

optioX B H $nSeries <? ~ Z;< QString(\" name: \O J u'%1\',\").arg(tipTitle);

optionSeries << QString(\" type: \'effectScatter\',\");

optionSeries << QString(\" coordinateSystem: \'geo\',\");

optionSeries << QP DyNameCount);

opt# h 9 z = ? m iionSeries << QStT , n - u ? i yring(\" symbolSize: function (val) {\");

optiI P } GonSeries << QString(\" return val / 10;\");

optY B u 0 kionSerr r Z | 7ies &lj h ; 4 j ? 2 . ,t;< QString(\" },\");

optionSeries << QStriM m 1 a f eng(\n u X U { v & P" shov t c G YwEffectOn: \'render\',\");

opt, 4 H # d u ,ionSeries <&{ V Z J Nlt; QString(\" rippi C | , s .leEffect: {\");

optionSeries << QString(\" brushType: \'stroke\'\");

optionSeries << QStro } f uing(m c N ]\" },\p p o G G V ] g n");

optionSeriW Q + A X qes << QString(\" hoverAnimation: true,\");^ * f k $ 9

optionSeries << QString(\" label: {\");

o. w B U h I l LptionSeries << QString(\f ? x n V 1 b m" normal: {\");

optionSerie| ~ ~ , 0 Gs <<o b - Q } - m , QString(\" formatter& 2 ` X l V c } T: \'{b}\',\");

optionSeries << QString(\" posn ~ G } R * p 2ition( Z - & Z);

optionSeries << QString(\" colc H i Y = + Wor: \'%1\',\").arg(are~ 5 - g A a CaColor.name());

optionSeries << QE e J ^ X 8 . ~ |Strin3 _ %g(\" shadU e * % * = h | 3owBlur: 10,\");

optionSeries << QString(\" shadowColor: \'#333\'\");

optionSeries <&~ C Q o rlt; QString(\" }\");

optionSeries << QString(\" },\");

optionSeries << QString(\" zlevel: 1\");

QStringList option;

optiot o qn <<. _ 0 = Y v ^ j ; optionBK Z g Y c Wase.join(\"\\r\\n\");

optiox n ` . [ Bn << optionGeo.join(\"\\r\\$ 3 $n\");

option << \" series: \";

body <&l( d r : ` k . dt; \" optv M oion = {\";

body << option.join(S ; +\"\\r\\n\");

body << \" };x } # i + ?\";

return newO $ 3 J A U v 8 ^Chart(body.join(\"\\r\\n\"));

}^ b J M m 0

//使用代码

QStringList cityNa5 V { Q j | m n -me, cityValue, cityPoint;

cityName << \"上海\" << \"北京\" << \"成都\L W + n O . S" &l- s I L ? E W 3 Dt;< \3 6 C 1"武汉\" << \"厦门\J D t ) I P ) Q U" << \"广州\";

cityPoint << \"121.48,31.22\" << \0 ) t D"116.46,39.92\" << \"104.06,30.67\" << / p # V h U g\"114.31,30.52\" << \"118.1,24.46\" << \"113.} B 023,23.16\";

cityValue << \"250q + o 0 M 5\" << \"220\" << \"q I D K r & b150\" << \"180\" << \"140\" << \4 A F + C M d"17! v L = M Y0\";

echarts->setCityName(c; b f A _ v { 0 ;ityNa2 5 lme);

echarts->setCityPoint(cityPointV f 0 Z z 1 C);

echarts->setCityValue(cityValue);

echarts->setZoom(1.0)X J @;

echarts->newChartPoint();

广州接口设置体验标题动作告诉信丰编写