diff --git a/src/FlightMap/FlightMap.qml b/src/FlightMap/FlightMap.qml index 24a8458a801644624c771501034e466d60ea39bf..2d3b7f2df94df111cea747b4e3a7cdc9701fd063 100644 --- a/src/FlightMap/FlightMap.qml +++ b/src/FlightMap/FlightMap.qml @@ -197,7 +197,8 @@ Map { property alias drawingPolygon: polygonDrawer.hoverEnabled property bool adjustingPolygon: false - property bool polygonReady: polygonDrawerPolygon.path.length > 3 ///< true: enough points have been captured to create a closed polygon + property bool polygonReady: polygonDrawerPolygonSet.path.length > 2 ///< true: enough points have been captured to create a closed polygon + property bool justClicked: false property var _callbackObject @@ -220,8 +221,7 @@ Map { return false } - var polygonPath = polygonDrawerPolygon.path - polygonPath.pop() // get rid of drag coordinate + var polygonPath = polygonDrawerPolygonSet.path _cancelCapturePolygon() polygonDrawer._callbackObject.polygonCaptureFinished(polygonPath) return true @@ -322,10 +322,13 @@ Map { polygonDrawerNextPoint.path = [ bogusCoord, bogusCoord ] polygonDrawerPolygon.path = [ ] polygonDrawerNextPoint.path = [ ] + polygonDrawerPolygonSet.path = [ bogusCoord, bogusCoord ] + polygonDrawerPolygonSet.path = [ ] } onClicked: { if (mouse.button == Qt.LeftButton) { + polygonDrawer.justClicked = true if (polygonDrawerPolygon.path.length > 2) { // Make sure the new line doesn't intersect the existing polygon var lastSegment = polygonDrawerPolygon.path.length - 2 @@ -349,8 +352,7 @@ Map { // Update finalized coordinate polygonPath[polygonDrawerPolygon.path.length - 1] = clickCoordinate } - // Add next drag coordinate - polygonPath.push(clickCoordinate) + polygonDrawerPolygonSet.path = polygonPath polygonDrawerPolygon.path = polygonPath } else if (polygonDrawer.polygonReady) { finishCapturePolygon() @@ -360,14 +362,18 @@ Map { onPositionChanged: { if (polygonDrawerPolygon.path.length) { var dragCoordinate = _map.toCoordinate(Qt.point(mouse.x, mouse.y)) + var polygonPath = polygonDrawerPolygon.path + if (polygonDrawer.justClicked){ + polygonPath.push(dragCoordinate) + polygonDrawer.justClicked = false + } // Update drag line polygonDrawerNextPoint.path = [ polygonDrawerPolygon.path[polygonDrawerPolygon.path.length - 2], dragCoordinate ] - // Update drag coordinate - var polygonPath = polygonDrawerPolygon.path polygonPath[polygonDrawerPolygon.path.length - 1] = dragCoordinate polygonDrawerPolygon.path = polygonPath + } } } @@ -377,14 +383,20 @@ Map { id: polygonDrawerPolygon color: "blue" opacity: 0.5 - visible: polygonDrawer.drawingPolygon + visible: polygonDrawerPolygon.path.length > 2 + } + MapPolygon { + id: polygonDrawerPolygonSet + color: 'green' + opacity: 0.5 + visible: polygonDrawer.polygonReady } /// Next line for polygon MapPolyline { id: polygonDrawerNextPoint line.color: "green" - line.width: 5 + line.width: 3 visible: polygonDrawer.drawingPolygon }