Browse Source

Support for dragging to change radius

QGC4.4
DonLakeFlyer 7 years ago
parent
commit
920969bb4f
  1. 45
      src/MissionManager/QGCMapCircleVisuals.qml

45
src/MissionManager/QGCMapCircleVisuals.qml

@ -112,7 +112,15 @@ Item { @@ -112,7 +112,15 @@ Item {
id: centerDragAreaComponent
MissionItemIndicatorDrag {
onItemCoordinateChanged: mapCircle.center = itemCoordinate
onItemCoordinateChanged: mapCircle.center = itemCoordinate
}
}
Component {
id: radiusDragAreaComponent
MissionItemIndicatorDrag {
onItemCoordinateChanged: mapCircle.radius.rawValue = mapCircle.center.distanceTo(itemCoordinate)
}
}
@ -120,19 +128,38 @@ Item { @@ -120,19 +128,38 @@ Item {
id: centerDragHandleComponent
Item {
property var dragHandle
property var dragArea
property var centerDragHandle
property var centerDragArea
property var radiusDragHandle
property var radiusDragArea
property var radiusDragCoord: QtPositioning.coordinate()
property var circleCenterCoord: mapCircle.center
property real circleRadius: mapCircle.radius.rawValue
function calcRadiusDragCoord() {
radiusDragCoord = mapCircle.center.atDistanceAndAzimuth(circleRadius, 90)
}
onCircleCenterCoordChanged: calcRadiusDragCoord()
onCircleRadiusChanged: calcRadiusDragCoord()
Component.onCompleted: {
dragHandle = dragHandleComponent.createObject(mapControl)
dragHandle.coordinate = Qt.binding(function() { return mapCircle.center })
mapControl.addMapItem(dragHandle)
dragArea = centerDragAreaComponent.createObject(mapControl, { "itemIndicator": dragHandle, "itemCoordinate": mapCircle.center })
calcRadiusDragCoord()
radiusDragHandle = dragHandleComponent.createObject(mapControl)
radiusDragHandle.coordinate = Qt.binding(function() { return radiusDragCoord })
mapControl.addMapItem(radiusDragHandle)
radiusDragArea = radiusDragAreaComponent.createObject(mapControl, { "itemIndicator": radiusDragHandle, "itemCoordinate": radiusDragCoord })
centerDragHandle = dragHandleComponent.createObject(mapControl)
centerDragHandle.coordinate = Qt.binding(function() { return circleCenterCoord })
mapControl.addMapItem(centerDragHandle)
centerDragArea = centerDragAreaComponent.createObject(mapControl, { "itemIndicator": centerDragHandle, "itemCoordinate": circleCenterCoord })
}
Component.onDestruction: {
dragHandle.destroy()
dragArea.destroy()
centerDragHandle.destroy()
centerDragArea.destroy()
radiusDragHandle.destroy()
radiusDragArea.destroy()
}
}
}

Loading…
Cancel
Save