diff --git a/qgroundcontrol.qrc b/qgroundcontrol.qrc
index ebc90c3ddd2c34fa150d450820814d1c6a3d453b..319f391e999252fe6f2babc8bfd5586422cf79da 100644
--- a/qgroundcontrol.qrc
+++ b/qgroundcontrol.qrc
@@ -104,6 +104,7 @@
src/QmlControls/QGCCheckBox.qml
src/QmlControls/QGCColoredImage.qml
src/QmlControls/QGCComboBox.qml
+ src/QmlControls/QGCDynamicObjectManager.qml
src/QmlControls/QGCFileDialog.qml
src/QmlControls/QGCFlickable.qml
src/QmlControls/QGCFlickableHorizontalIndicator.qml
diff --git a/src/PlanView/FWLandingPatternMapVisual.qml b/src/PlanView/FWLandingPatternMapVisual.qml
index 8f2a9d882eaf51c0129141eccde3aeb9a4680766..0c9e70e580bb2bd16d3e1c979a985def0a8844b1 100644
--- a/src/PlanView/FWLandingPatternMapVisual.qml
+++ b/src/PlanView/FWLandingPatternMapVisual.qml
@@ -30,7 +30,6 @@ Item {
readonly property real _landingLengthMeters: 100
property var _missionItem: object
- property var _itemVisuals: [ ]
property var _mouseArea
property var _dragAreas: [ ]
property var _flightPath
@@ -39,30 +38,16 @@ Item {
property var _landingPointObject
function hideItemVisuals() {
- for (var i=0; i<_itemVisuals.length; i++) {
- _itemVisuals[i].destroy()
- }
- _itemVisuals = [ ]
+ objMgr.destroyObjects()
}
function showItemVisuals() {
- if (_itemVisuals.length === 0) {
- var itemVisual = loiterPointComponent.createObject(map)
- map.addMapItem(itemVisual)
- _itemVisuals.push(itemVisual)
- _loiterPointObject = itemVisual
-
- itemVisual = landingPointComponent.createObject(map)
- map.addMapItem(itemVisual)
- _itemVisuals.push(itemVisual)
- _landingPointObject = itemVisual
+ if (objMgr.rgDynamicObjects.length === 0) {
+ _loiterPointObject = objMgr.createObject(loiterPointComponent, map, true /* parentObjectIsMap */)
+ _landingPointObject = objMgr.createObject(landingPointComponent, map, true /* parentObjectIsMap */)
var rgComponents = [ flightPathComponent, loiterRadiusComponent, landingAreaComponent, landingAreaLabelComponent, glideSlopeComponent, glideSlopeLabelComponent ]
- for (var i=0; i