Commit 7c46cbe9 authored by Don Gagne's avatar Don Gagne

Merge pull request #2799 from DonLakeFlyer/CopyFlyPosition

Copy Fly view position to Plan
parents 7766a76e 8b938a34
...@@ -44,6 +44,9 @@ FlightMap { ...@@ -44,6 +44,9 @@ FlightMap {
property bool _activeVehicleCoordinateValid: multiVehicleManager.activeVehicle ? multiVehicleManager.activeVehicle.coordinateValid : false property bool _activeVehicleCoordinateValid: multiVehicleManager.activeVehicle ? multiVehicleManager.activeVehicle.coordinateValid : false
property var activeVehicleCoordinate: multiVehicleManager.activeVehicle ? multiVehicleManager.activeVehicle.coordinate : QtPositioning.coordinate() property var activeVehicleCoordinate: multiVehicleManager.activeVehicle ? multiVehicleManager.activeVehicle.coordinate : QtPositioning.coordinate()
Component.onCompleted: QGroundControl.flightMapPosition = center
onCenterChanged: QGroundControl.flightMapPosition = center
onActiveVehicleCoordinateChanged: { onActiveVehicleCoordinateChanged: {
if (_followVehicle && _activeVehicleCoordinateValid && activeVehicleCoordinate.isValid) { if (_followVehicle && _activeVehicleCoordinateValid && activeVehicleCoordinate.isValid) {
_initialMapPositionSet = true _initialMapPositionSet = true
......
...@@ -67,7 +67,6 @@ QGCView { ...@@ -67,7 +67,6 @@ QGCView {
property bool _syncInProgress: _activeVehicle ? _activeVehicle.missionManager.inProgress : false property bool _syncInProgress: _activeVehicle ? _activeVehicle.missionManager.inProgress : false
Component.onCompleted: updateMapToVehiclePosition()
onActiveVehiclePositionChanged: updateMapToVehiclePosition() onActiveVehiclePositionChanged: updateMapToVehiclePosition()
Connections { Connections {
...@@ -118,29 +117,32 @@ QGCView { ...@@ -118,29 +117,32 @@ QGCView {
return lon + 180.0 return lon + 180.0
} }
/// Fix the map viewport to the current mission items. We don't fit the home position in this process. /// Fix the map viewport to the current mission items.
function fitViewportToMissionItems() { function fitViewportToMissionItems() {
var missionItem = _missionItems.get(0) if (_missionItems.count == 1) {
var north = normalizeLat(missionItem.coordinate.latitude) editorMap.center = _missionItems.get(0).coordinate
var south = north } else {
var east = normalizeLon(missionItem.coordinate.longitude) var missionItem = _missionItems.get(0)
var west = east var north = normalizeLat(missionItem.coordinate.latitude)
var south = north
for (var i=1; i<_missionItems.count; i++) { var east = normalizeLon(missionItem.coordinate.longitude)
missionItem = _missionItems.get(i) var west = east
if (missionItem.specifiesCoordinate && !missionItem.standaloneCoordinate) { for (var i=1; i<_missionItems.count; i++) {
var lat = normalizeLat(missionItem.coordinate.latitude) missionItem = _missionItems.get(i)
var lon = normalizeLon(missionItem.coordinate.longitude)
if (missionItem.specifiesCoordinate && !missionItem.standaloneCoordinate) {
north = Math.max(north, lat) var lat = normalizeLat(missionItem.coordinate.latitude)
south = Math.min(south, lat) var lon = normalizeLon(missionItem.coordinate.longitude)
east = Math.max(east, lon)
west = Math.min(west, lon) north = Math.max(north, lat)
south = Math.min(south, lat)
east = Math.max(east, lon)
west = Math.min(west, lon)
}
} }
editorMap.visibleRegion = QtPositioning.rectangle(QtPositioning.coordinate(north - 90.0, west - 180.0), QtPositioning.coordinate(south - 90.0, east - 180.0))
} }
editorMap.visibleRegion = QtPositioning.rectangle(QtPositioning.coordinate(north - 90.0, west - 180.0), QtPositioning.coordinate(south - 90.0, east - 180.0))
} }
MissionController { MissionController {
...@@ -286,6 +288,9 @@ QGCView { ...@@ -286,6 +288,9 @@ QGCView {
readonly property real animationDuration: 500 readonly property real animationDuration: 500
// Initial map position duplicates Fly view position
Component.onCompleted: editorMap.center = QGroundControl.flightMapPosition
Behavior on zoomLevel { Behavior on zoomLevel {
NumberAnimation { NumberAnimation {
duration: editorMap.animationDuration duration: editorMap.animationDuration
...@@ -540,6 +545,15 @@ QGCView { ...@@ -540,6 +545,15 @@ QGCView {
} }
} }
QGCButton {
text: "Mission"
onClicked: {
centerMapButton.hideDropDown()
fitViewportToMissionItems()
}
}
QGCButton { QGCButton {
text: "Vehicle" text: "Vehicle"
enabled: activeVehicle && activeVehicle.latitude != 0 && activeVehicle.longitude != 0 enabled: activeVehicle && activeVehicle.latitude != 0 && activeVehicle.longitude != 0
......
...@@ -76,6 +76,7 @@ public: ...@@ -76,6 +76,7 @@ public:
Q_PROPERTY(Fact* offlineEditingFirmwareType READ offlineEditingFirmwareType CONSTANT) Q_PROPERTY(Fact* offlineEditingFirmwareType READ offlineEditingFirmwareType CONSTANT)
Q_PROPERTY(QGeoCoordinate lastKnownHomePosition READ lastKnownHomePosition CONSTANT) Q_PROPERTY(QGeoCoordinate lastKnownHomePosition READ lastKnownHomePosition CONSTANT)
Q_PROPERTY(QGeoCoordinate flightMapPosition MEMBER _flightMapPosition NOTIFY flightMapPositionChanged)
Q_INVOKABLE void saveGlobalSetting (const QString& key, const QString& value); Q_INVOKABLE void saveGlobalSetting (const QString& key, const QString& value);
Q_INVOKABLE QString loadGlobalSetting (const QString& key, const QString& defaultValue); Q_INVOKABLE QString loadGlobalSetting (const QString& key, const QString& defaultValue);
...@@ -142,6 +143,7 @@ signals: ...@@ -142,6 +143,7 @@ signals:
void isMultiplexingEnabledChanged (bool enabled); void isMultiplexingEnabledChanged (bool enabled);
void isVersionCheckEnabledChanged (bool enabled); void isVersionCheckEnabledChanged (bool enabled);
void mavlinkSystemIDChanged (int id); void mavlinkSystemIDChanged (int id);
void flightMapPositionChanged (QGeoCoordinate flightMapPosition);
private: private:
FlightMapSettings* _flightMapSettings; FlightMapSettings* _flightMapSettings;
...@@ -152,6 +154,8 @@ private: ...@@ -152,6 +154,8 @@ private:
bool _virtualTabletJoystick; bool _virtualTabletJoystick;
QGeoCoordinate _flightMapPosition;
SettingsFact _offlineEditingFirmwareTypeFact; SettingsFact _offlineEditingFirmwareTypeFact;
FactMetaData _offlineEditingFirmwareTypeMetaData; FactMetaData _offlineEditingFirmwareTypeMetaData;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment