zoukankan      html  css  js  c++  java
  • qml 绘制高精地图之怀疑人生的加载速度

    绘制高精地图时需要gps的经纬度坐标,之前的实现方式是QGeocoordinate类的经纬度变量通过json的方式在qml中使用。

    以画线为例,使用方式是这样哒。

     1 for(var i in vehicleMapProcess.laneMedian){ // 道路条数
     2     var newMapLaneMedian = Qt.createQmlObject('import QtLocation 5.9;import QtPositioning 5.5;    // 这里只画中线
     3                                                 MapPolyline {
     4                                                     line.color:"'+color+'";
     5                                                     line. 1;
     6                                                     smooth: true;
     7                                                     opacity: 0.6;}',
     8                                                  rootHighPrecisionMap,
     9                                                  "dynamicSnippet1");
    10 
    11             for( var j in vehicleMapProcess.laneMedian[i]){   // 每条道路差不多有1557个坐标点,laneMedian 是json变量
    12     newMapLaneMedian.addCoordinate(QtPositioning.coordinate(vehicleMapProcess.laneMedian[i][j].lat, vehicleMapProcess.laneMedian[i][j].lon)) }  
    13     rootHighPrecisionMap.addMapItem(newMapLaneMedian)
    14  }
    View Code

    影响时间的关键点在addCoordinate这是,这个函数就是往要画的path中增加gps坐标点。

    查找帮助文档发现MapPolyline有个setPath(geoPath path)函数,该函数是设置整体的一个绘制路径,

    我把所有的坐标添加 QList<QGeoCoordinate>变量,然后使用setPath赋值给到QGeoPath。

    qml 代码中使用如下

    var line = vehicleMapProcess.getMiddleGeopath();
     middleRoad.setPath(line);
    rootHighPrecisionMap.addMapItem(middleRoad);
    效果秒加载,不用再苦等十几分钟。
    该问题出现在qt版本是5.10.1而在qt5.11上做了修改,提高了性能。
    Qt Location
    • Greatly improved MapPolyline performance
  • 相关阅读:
    TensorFlow 官方文档中文版 --技术文档
    借助离散数学解决“哈弗大学智商测试”一题 --编程算法
    Python3文件操作1 --Python3
    ThinkPHP5.0完全开发手册 --技术文档
    JSON和Serialize数据格式的对比
    JSON格式简介
    Github的简易操作
    Python3之JSON数据解析实例:新闻头条 --Python3
    MySql常用函数 --MySql
    Git简易教程
  • 原文地址:https://www.cnblogs.com/kabe/p/9402874.html
Copyright © 2011-2022 走看看