Browse Source

New polygon center calc

QGC4.4
Don Gagne 8 years ago
parent
commit
50bdc46d64
  1. 10
      src/MissionManager/QGCMapPolygon.cc
  2. 7
      src/MissionManager/QGCMapPolygonVisuals.qml

10
src/MissionManager/QGCMapPolygon.cc

@ -253,6 +253,8 @@ void QGCMapPolygon::removeVertex(int vertexIndex) @@ -253,6 +253,8 @@ void QGCMapPolygon::removeVertex(int vertexIndex)
_polygonPath.removeAt(vertexIndex);
emit pathChanged();
_updateCenter();
}
void QGCMapPolygon::_polygonModelCountChanged(int count)
@ -266,8 +268,12 @@ void QGCMapPolygon::_updateCenter(void) @@ -266,8 +268,12 @@ void QGCMapPolygon::_updateCenter(void)
QGeoCoordinate center;
if (_polygonPath.count() > 2) {
QPointF centerPoint = _toPolygonF().boundingRect().center();
center = _coordFromPointF(centerPoint);
QPointF centroid(0, 0);
QPolygonF polygonF = _toPolygonF();
for (int i=0; i<polygonF.count(); i++) {
centroid += polygonF[i];
}
center = _coordFromPointF(QPointF(centroid.x() / polygonF.count(), centroid.y() / polygonF.count()));
}
_center = center;

7
src/MissionManager/QGCMapPolygonVisuals.qml

@ -35,8 +35,9 @@ Item { @@ -35,8 +35,9 @@ Item {
property var _splitHandlesComponent
property var _centerDragHandleComponent
property real _zorderDragHandle: QGroundControl.zOrderMapItems + 2
property real _zorderSplitHandle: QGroundControl.zOrderMapItems + 1
property real _zorderDragHandle: QGroundControl.zOrderMapItems + 3 // Highest to prevent splitting when items overlap
property real _zorderSplitHandle: QGroundControl.zOrderMapItems + 2
property real _zorderCenterHandle: QGroundControl.zOrderMapItems + 1 // Lowest such that drag or split takes precedence
function addVisuals() {
_polygonComponent = polygonComponent.createObject(mapControl)
@ -281,7 +282,7 @@ Item { @@ -281,7 +282,7 @@ Item {
id: centerDragAreaComponent
MissionItemIndicatorDrag {
z: _zorderDragHandle
z: _zorderCenterHandle
onItemCoordinateChanged: mapPolygon.center = itemCoordinate
onDragStart: mapPolygon.centerDrag = true
onDragStop: mapPolygon.centerDrag = false

Loading…
Cancel
Save