diff --git a/src/MissionManager/MissionController.cc b/src/MissionManager/MissionController.cc index 512d8a6..0b3a40b 100644 --- a/src/MissionManager/MissionController.cc +++ b/src/MissionManager/MissionController.cc @@ -1293,8 +1293,8 @@ void MissionController::_initAllVisualItems(void) _settingsItem->setIsCurrentItem(true); } - if (!_editMode && _controllerVehicle) { - _settingsItem->setCoordinate(_controllerVehicle->homePosition()); + if (!_editMode && _managerVehicle->homePosition().isValid()) { + _settingsItem->setCoordinate(_managerVehicle->homePosition()); } connect(_settingsItem, &MissionSettingsItem::coordinateChanged, this, &MissionController::_recalcAll); @@ -1481,6 +1481,8 @@ void MissionController::_addMissionSettings(QmlObjectListModel* visualItems, boo { MissionSettingsItem* settingsItem = new MissionSettingsItem(_controllerVehicle, visualItems); + qCDebug(MissionControllerLog) << "_addMissionSettings addToCenter" << addToCenter; + visualItems->insert(0, settingsItem); if (addToCenter) { @@ -1515,8 +1517,8 @@ void MissionController::_addMissionSettings(QmlObjectListModel* visualItems, boo settingsItem->setCoordinate(QGeoCoordinate((south + ((north - south) / 2)) - 90.0, (west + ((east - west) / 2)) - 180.0, 0.0)); } } - } else { - settingsItem->setCoordinate(_controllerVehicle->homePosition()); + } else if (_managerVehicle->homePosition().isValid()) { + settingsItem->setCoordinate(_managerVehicle->homePosition()); } } diff --git a/src/MissionManager/MissionSettingsItem.cc b/src/MissionManager/MissionSettingsItem.cc index 67072b7..858b58f 100644 --- a/src/MissionManager/MissionSettingsItem.cc +++ b/src/MissionManager/MissionSettingsItem.cc @@ -221,7 +221,7 @@ void MissionSettingsItem::setCoordinate(const QGeoCoordinate& coordinate) { if (_plannedHomePositionCoordinate != coordinate) { // ArduPilot tends to send crap home positions at initial vehicel boot, discard them - if (coordinate.latitude() != 0 || coordinate.longitude() != 0) { + if (coordinate.isValid() && (coordinate.latitude() != 0 || coordinate.longitude() != 0)) { qDebug() << "Setting home position" << coordinate; _plannedHomePositionCoordinate = coordinate; emit coordinateChanged(coordinate);