问题描述
我正在尝试在用户界面中为系统中的每个无人机显示无人机路径,但是在弄清楚如何绘制每个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)
}
}
}
}
}
其中Line
是mappolyline
import QtQuick 2.14
import QtLocation 5.14
MapPolyline {
id: mainPolyline
line.width: 3
line.color: 'red'
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)