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.width: 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

转载于:https://www.cnblogs.com/kabe/p/9402874.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值