diff --git a/src/MissionManager/VisualMissionItem.cc b/src/MissionManager/VisualMissionItem.cc
index a108dde1982d2583a00f5a9fa30d2b33c2457ff9..1f0173f156851138b55adc3df8c39b93655f22bf 100644
--- a/src/MissionManager/VisualMissionItem.cc
+++ b/src/MissionManager/VisualMissionItem.cc
@@ -38,11 +38,15 @@ VisualMissionItem::VisualMissionItem(Vehicle* vehicle, QObject* parent)
     , _lastLatTerrainQuery      (0)
     , _lastLonTerrainQuery      (0)
 {
-    _updateTerrainTimer.setInterval(500);
-    _updateTerrainTimer.setSingleShot(true);
-    connect(&_updateTerrainTimer, &QTimer::timeout, this, &VisualMissionItem::_reallyUpdateTerrainAltitude);
 
-    connect(this, &VisualMissionItem::coordinateChanged, this, &VisualMissionItem::_updateTerrainAltitude);
+    // Don't get terrain altitude information for submarines or boards
+    if (_vehicle->vehicleType() != MAV_TYPE_SUBMARINE && _vehicle->vehicleType() != MAV_TYPE_SURFACE_BOAT) {
+        _updateTerrainTimer.setInterval(500);
+        _updateTerrainTimer.setSingleShot(true);
+        connect(&_updateTerrainTimer, &QTimer::timeout, this, &VisualMissionItem::_reallyUpdateTerrainAltitude);
+
+        connect(this, &VisualMissionItem::coordinateChanged, this, &VisualMissionItem::_updateTerrainAltitude);
+    }
 }
 
 VisualMissionItem::VisualMissionItem(const VisualMissionItem& other, QObject* parent)
@@ -58,7 +62,11 @@ VisualMissionItem::VisualMissionItem(const VisualMissionItem& other, QObject* pa
     , _distance                 (0.0)
 {
     *this = other;
-    connect(this, &VisualMissionItem::coordinateChanged, this, &VisualMissionItem::_updateTerrainAltitude);
+
+    // Don't get terrain altitude information for submarines or boards
+    if (_vehicle->vehicleType() != MAV_TYPE_SUBMARINE && _vehicle->vehicleType() != MAV_TYPE_SURFACE_BOAT) {
+        connect(this, &VisualMissionItem::coordinateChanged, this, &VisualMissionItem::_updateTerrainAltitude);
+    }
 }
 
 const VisualMissionItem& VisualMissionItem::operator=(const VisualMissionItem& other)