专栏首页Qt项目实战Qt编写地图综合应用5-自适应拉伸
原创

Qt编写地图综合应用5-自适应拉伸

一、前言

用过echart的人都会遇到一个问题,就算是代码中写了window.onresize = echart.resize,也只是横向自适应拉伸填充页面,垂直方向不会变化,除非指定高度才可以,这就比较郁闷了,为何echart本身不会自适应呢?按道理不应该啊,莫非实现起来很困难?好吧先不管这个了,这个问题搜索出来一大堆解决方案,在Qt的浏览器控件中也有这个问题,为了解决这个问题想了两个策略,一种是程序本身检测尺寸变化,然后重新设置高度并载入网页,一种是js函数设置对应的宽高,什么时候执行呢,就是在程序界面尺寸变化的时候,两种办法对比下来,最终选用的后者,因为效果比较好,还是异步执行的,无需重新加载网页,那个每次高度变化了就重新加载网页的办法在早期的作品中用过,看起来好弱弱的。

二、功能特点

  1. 同时支持闪烁点图、迁徙图、区域地图、仪表盘等。
  2. 可以设置标题、提示信息、背景颜色、文字颜色、线条颜色、区域颜色等各种颜色。
  3. 可设置城市的名称、值、经纬度 集合。
  4. 可设置地图的放大倍数、是否允许鼠标滚轮缩放。
  5. 内置世界地图、全国地图、省份地图、地区地图,可以精确到县,所有地图全部离线使用。
  6. 内置了各省市json数据文件转js文件功能,如有数据更新自行转换即可,支持单个文件转换和一键转换所有文件。
  7. 内置了从json文件或者js文件获取该区域的所有名称和经纬度信息集合的功能,可以通过该方法获取到信息用来显示。
  8. 依赖浏览器组件显示地图,提供的demo支持webkit、webengine、ie 三种方式加载网页。
  9. 拓展性极强,可以依葫芦画瓢自行增加各种精美的echarts组件,做出牛逼的效果。
  10. 内置的仪表盘组件提供交互功能,demo演示中包含了对应的代码。
  11. 函数接口友好和统一,使用简单方便,就一个类。
  12. 支持任意Qt版本、任意系统、任意编译器。

三、体验地址

  1. 体验地址:https://pan.baidu.com/s/1uQsDQO5E5crUBN2J-nPeLQ 提取码:1jkp 文件名:bin_map.zip
  2. 国内站点:https://gitee.com/feiyangqingyun
  3. 国际站点:https://github.com/feiyangqingyun
  4. 个人主页:https://blog.csdn.net/feiyangqingyun
  5. 知乎主页:https://www.zhihu.com/people/feiyangqingyun/

四、效果图

map.gif

五、相关代码

//设置窗口大小变动echarts自动拉伸填充,此方法只能横向拉伸
list << QString("  window.onresize = echart.resize;");
//下面的方法用来设置画布的宽度高度
list << QString("  function resize(width, height) {");
list << QString("    var chart = document.getElementById('chart');");
list << QString("    chart.style.width = width + \"px\";");
list << QString("    chart.style.height = height + \"px\";");
list << QString("    echart.resize();");
list << QString("  }");

void frmEcharts::resizeMap()
{
    if (isLoad) {
#ifdef webkit
        QString js = QString("resize(%1, %2)").arg(webView->width()).arg(webView->height());
        webView->page()->mainFrame()->evaluateJavaScript(js);
#elif webengine
        QString js = QString("resize(%1, %2)").arg(webView->width()).arg(webView->height());
        webView->page()->runJavaScript(js);
#endif
    }
}

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Qt编写地图综合应用19-地图服务

    国内提供地图服务的厂家基本上是五家,百度地图、高德地图、腾讯地图、搜狗地图、天地图,国外的一般还有谷歌地图、微软地图(BING地图),这几家的地图服务的api接...

    feiyangqingyun
  • Qt编写地图综合应用7-百度离线地图

    离线地图的核心其实就是拿到这些瓦片地图文件,并不是离线地图的代码怎么写,其实离线地图的网页代码和在线地图的网页代码几乎一致的,主要就是将对应的依赖的js文件从在...

    feiyangqingyun
  • Qt编写数据可视化大屏界面电子看板2-配色方案

    做完整个数据可视化大屏界面电子看板系统后,为了提升点逼格,需要提供好几套默认的风格样式以供选择,这样用户可以选择自己喜欢的配色方案来作为整个系统的颜色方案,去看...

    feiyangqingyun
  • MongoDB 索引

    当往一个集合中插入多个文档后,每个文档经过存储殷引擎后,有一个位置信息,通过这个位置信息。就能从存储引擎中读出该文档。在 mmapv1 引擎下,位置信息是【文件...

    王小明_HIT
  • python+gensim︱jieba分词、词袋doc2bow、TFIDF文本挖掘

    分词这块之前一直用R在做,R中由两个jiebaR+Rwordseg来进行分词,来看看python里面的jieba. 之前相关的文章: R语言︱文本挖掘之...

    素质
  • 【Unity游戏开发】浅谈Unity游戏开发中的单元测试

      单元测试定义:单元测试在传统软件开发中是非常重要的工具,它是指对软件中的最小可测试单元进行检查和验证,一般情况下就是对代码中的一个函数去进行验证,检查它的正...

    马三小伙儿
  • 小程序添加插屏广告演示代码详解

    这段代码的意思就是在页面初始化的时候,加载出弹窗,如果需要其它地方调用,可以直接把下面这段代码复制,然后在需要的地方this.interstitialAd();...

    许坏
  • Selenium 4 Python的最佳测试框架

    随着Python语言的使用越来越流行,基于Python的测试自动化框架也越来越流行。在项目选择最佳框架时,开发人员和测试人员会有些无法下手。做出选择是应该判断很...

    八音弦
  • 分享8个提高工作效率的Excel技巧

    3.复制划定区域,再进行黏贴,选择“仅复制数据”,这样一来,划定区域的公式会被消去,最后把不需要的数据进行删除就好。

    迅达集团
  • 小朋友学C语言(20):数组

    一、数组简介 C 语言支持数组数据结构,它可以存储一个固定大小的相同类型元素的顺序集合。数组是用来存储一系列数据,但它往往被认为是一系列相同类型的变量。 数组的...

    海天一树

扫码关注云+社区

领取腾讯云代金券