如何在QML中显示QVariantList的QVariantList以在QML中绘制MapPolyline

问题描述

我正在尝试在用户界面中为系统中的每个无人机显示无人机路径,但是在弄清楚如何绘制每个QGeoCoordinate列表的路径时遇到了麻烦。我有一个GCS课:

GCS.h

class GCS: public QObject
{
   Q_OBJECT
   Q_PROPERTY(QVariantList mtspPath READ getMtspVector)

public:
   QVariantList getMtspVector();
   void generatePoints();

private:
   QVariantList mtsp_points;      
};

GCS.cpp

在GCS.cpp中,我有一个生成2D QVariantList的函数,其中包含每个无人机的QGeocoordinates列表。

void GCS::generatePoints()
{
     // Create a new route for the UAVs 
    for(std::size_t i = 0; i < sol.size(); i++)
    {
        QVariantList inner2;
        for(std::size_t j = 0; j < sol.at(i).size(); j++)
        {
         
            int indexA = sol.at(i).at(j);
            route.at(i).push_back(tsp_wp.at(indexA));
            
            // Generate for QVector
            QGeoCoordinate p_single;
            p_single.setLatitude(tsp_wp.at(indexA).latitude);
            p_single.setLongitude(tsp_wp.at(indexA).longitude);
            inner2 << QVariant::fromValue(p_single);
        }
    
       mtsp_points << QVariant::fromValue(QVariantList{inner2});
    }
}

QVariantList GCS::getMtspVector()
{
  return mtsp_points
}

然后使用QML。我希望地图在用户单击按钮后显示每个点的路线。这就是我卡住的地方。我不确定如何显示此内容。自然,我会使用ListModel如果它是1D QvariantList,但我不确定您可以进行2D ListModel,而且我不认为TableView将是适当的。我可以将坐标打印到控制台,但是对于如何在地图上将坐标显示为单独的线会有所帮助。

import QtQuick 2.14
import QtQuick.Controls 2.14
import QtPositioning 5.14
import QtLocation 5.14
import QtGraphicalEffects 1.14
import QtQuick.Layouts 1.14
import QtQuick.Window 2.14

Window {
    width: 700
    height: 500
    visible: true
    title: qsTr("Test MapPolyline for airport")
    id: win

    Map{
      id:map
      anchors.fill: parent
      anchors.centerIn: parent;
      anchors.fill: parent
      zoomLevel: 12
      plugin: Plugin {name: "osm"}

      Line{
       id: uavPath
      }


    }

   Button{
         id:clickButton
         onClicked: {
                      planner.generatePoints()
                      for(var i = 0; i < planner.mtspPath.length; i++)
                      {
                        console.log(planner.mtspPath[i])
                        for(var j = 0; j < planner.mtspPath[i].length; j++)
                        {
                          console.log(planner.mtspPath[i][j].latitude)
                        }
                      }
                    }

           }
}

其中Linemappolyline

import QtQuick 2.14
import QtLocation 5.14

MapPolyline {
    id: mainPolyline
    line.width: 3
    line.color: 'red'
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...