FlightDisplayViewMap.qml 4.61 KB
Newer Older
1 2 3 4 5 6 7 8
/****************************************************************************
 *
 *   (c) 2009-2016 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
 *
 * QGroundControl is licensed according to the terms in the file
 * COPYING.md in the root of the source code directory.
 *
 ****************************************************************************/
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28


import QtQuick                      2.4
import QtQuick.Controls             1.3
import QtLocation                   5.3
import QtPositioning                5.2

import QGroundControl               1.0
import QGroundControl.FlightDisplay 1.0
import QGroundControl.FlightMap     1.0
import QGroundControl.ScreenTools   1.0
import QGroundControl.Controls      1.0
import QGroundControl.Palette       1.0
import QGroundControl.Vehicle       1.0
import QGroundControl.Controllers   1.0

FlightMap {
    id:             flightMap
    anchors.fill:   parent
    mapName:        _mapName
dogmaphobic's avatar
dogmaphobic committed
29
    showScale:      QGroundControl.flightMapSettings.showScaleOnFlyView
30

Don Gagne's avatar
Don Gagne committed
31 32 33
    property alias  missionController: _missionController
    property var    flightWidgets

34
    property bool   _followVehicle:                 true
Don Gagne's avatar
Don Gagne committed
35 36 37 38
    property var    _activeVehicle:                 QGroundControl.multiVehicleManager.activeVehicle
    property bool   _activeVehicleCoordinateValid:  _activeVehicle ? _activeVehicle.coordinateValid : false
    property var    activeVehicleCoordinate:        _activeVehicle ? _activeVehicle.coordinate : QtPositioning.coordinate()
    property var    _gotoHereCoordinate:            QtPositioning.coordinate()
39
    property int    _retaskSequence:                0
40

41 42 43 44
    Component.onCompleted: {
        QGroundControl.flightMapPosition = center
        QGroundControl.flightMapZoom = zoomLevel
    }
45
    onCenterChanged: QGroundControl.flightMapPosition = center
46
    onZoomLevelChanged: QGroundControl.flightMapZoom = zoomLevel
47

48
    onActiveVehicleCoordinateChanged: {
49
        if (_followVehicle && _activeVehicleCoordinateValid && activeVehicleCoordinate.isValid) {
50 51
            _initialMapPositionSet = true
            flightMap.center  = activeVehicleCoordinate
52 53 54
        }
    }

Don Gagne's avatar
Don Gagne committed
55 56
    QGCPalette { id: qgcPal; colorGroupEnabled: true }

57 58 59 60 61
    MissionController {
        id: _missionController
        Component.onCompleted: start(false /* editMode */)
    }

62 63
    // Add trajectory points to the map
    MapItemView {
64
        model: _mainIsMap ? _activeVehicle ? _activeVehicle.trajectoryPoints : 0 : 0
65 66
        delegate:
            MapPolyline {
Don Gagne's avatar
Don Gagne committed
67 68 69 70 71 72 73 74
            line.width: 3
            line.color: "red"
            z:          QGroundControl.zOrderMapItems - 1
            path: [
                { latitude: object.coordinate1.latitude, longitude: object.coordinate1.longitude },
                { latitude: object.coordinate2.latitude, longitude: object.coordinate2.longitude },
            ]
        }
75 76 77 78
    }

    // Add the vehicles to the map
    MapItemView {
79
        model: QGroundControl.multiVehicleManager.vehicles
80 81
        delegate:
            VehicleMapItem {
Don Gagne's avatar
Don Gagne committed
82 83 84 85 86 87
            vehicle:        object
            coordinate:     object.coordinate
            isSatellite:    flightMap.isSatelliteMap
            size:           _mainIsMap ? ScreenTools.defaultFontPixelHeight * 5 : ScreenTools.defaultFontPixelHeight * 2
            z:              QGroundControl.zOrderMapItems
        }
88 89 90 91
    }

    // Add the mission items to the map
    MissionItemView {
92
        model: _mainIsMap ? _missionController.visualItems : 0
93 94 95 96 97 98 99
    }

    // Add lines between waypoints
    MissionLineView {
        model: _mainIsMap ? _missionController.waypointLines : 0
    }

Don Gagne's avatar
Don Gagne committed
100 101 102
    // GoTo here waypoint
    MapQuickItem {
        coordinate:     _gotoHereCoordinate
Don Gagne's avatar
Don Gagne committed
103
        visible:        _activeVehicle && _activeVehicle.guidedMode && _gotoHereCoordinate.isValid
Don Gagne's avatar
Don Gagne committed
104 105 106 107 108 109
        z:              QGroundControl.zOrderMapItems
        anchorPoint.x:  sourceItem.width  / 2
        anchorPoint.y:  sourceItem.height / 2

        sourceItem: MissionItemIndexLabel {
            isCurrentItem:  true
110
            label:          qsTr("G", "Goto here waypoint") // second string is translator's hint.
Don Gagne's avatar
Don Gagne committed
111 112 113 114
        }
    }

    // Handle guided mode clicks
115 116
    MouseArea {
        anchors.fill: parent
Don Gagne's avatar
Don Gagne committed
117 118

        onClicked: {
Don Gagne's avatar
Don Gagne committed
119 120 121 122 123 124 125
            if (_activeVehicle) {
                if (_activeVehicle.guidedMode && flightWidgets.guidedModeBar.state == "Shown") {
                    _gotoHereCoordinate = flightMap.toCoordinate(Qt.point(mouse.x, mouse.y))
                    flightWidgets.guidedModeBar.confirmAction(flightWidgets.guidedModeBar.confirmGoTo)
                } else {
                    flightWidgets.guidedModeBar.state = "Shown"
                }
Don Gagne's avatar
Don Gagne committed
126 127
            }
        }
128 129
    }
}