Qt 在QML中具有凸映射多边形

Qt 在QML中具有凸映射多边形,qt,Qt,我想根据一些坐标在QML中绘制一个MapPolygon。我从文件中提取坐标,并以yellowPointsQML的名称将其放入QVariantList中,然后将此QVariantList发送给QML。所以我使用这些代码(这些坐标来自一个文件): 在*.cpp文件中: yellowPoints.append(QVariant::fromValue(QGeoCoordinate(38.613931, 50.842588))); yellowPoints.append(QVariant::fromVal

我想根据一些坐标在QML中绘制一个
MapPolygon
。我从文件中提取坐标,并以
yellowPointsQML
的名称将其放入
QVariantList
中,然后将此
QVariantList
发送给QML。所以我使用这些代码(这些坐标来自一个文件):

在*.cpp文件中:

yellowPoints.append(QVariant::fromValue(QGeoCoordinate(38.613931, 50.842588)));
yellowPoints.append(QVariant::fromValue(QGeoCoordinate(38.613489, 50.838962)));
yellowPoints.append(QVariant::fromValue(QGeoCoordinate(38.612465, 50.837600)));
yellowPoints.append(QVariant::fromValue(QGeoCoordinate(38.610743, 50.840475)));
yellowPoints.append(QVariant::fromValue(QGeoCoordinate(38.611564, 50.843286)));
和在*.qml中

MapPolygon{
    id: yellowCover
    color: '#ffff6f'
    opacity: 0.7
}
...
yellowCover.path = yellowPointsQML

一切都很好,我的多边形是凸的。但是如果我改变这些坐标的种类,结果会很粗略。因为在我的输入文件中,我只有一些没有任何顺序的坐标,所以我不知道如何设置绘制凸多边形的坐标顺序。

实际上,这个问题与QML无关。很快,您必须找到中心点,然后根据极轴角度对每个点进行排序。您看。@folibis谢谢您的回答,我认为没有必要转换为极角,因为纬度和经度将获得所有位置信息,并将它们与中心点进行比较是解决方案。@ahmadimortezaali问题与QML无关,这是一个计算几何问题:给定n个点,得到所有n边凸多边形,其顶点就是这些点。@eyllanesc谢谢,我删除了
qml
标记。我想,
MapPolygon
中可能有一个选项可以自动执行该操作。