/**************************************************************************** * * (c) 2009-2016 QGROUNDCONTROL PROJECT * * QGroundControl is licensed according to the terms in the file * COPYING.md in the root of the source code directory. * ****************************************************************************/ import QtQuick 2.3 import QtQuick.Controls 1.2 import QtLocation 5.3 import QtPositioning 5.3 import QGroundControl 1.0 import QGroundControl.ScreenTools 1.0 import QGroundControl.Palette 1.0 import QGroundControl.Controls 1.0 import QGroundControl.FlightMap 1.0 /// GeoFence map visuals Item { z: QGroundControl.zOrderMapItems property var map property var myGeoFenceController property bool interactive: false ///< true: user can interact with items property bool planView: false ///< true: visuals showing in plan view property var homePosition property var _breachReturnPointComponent property var _mouseAreaComponent property var _circleComponent property var _mapPolygon: myGeoFenceController.mapPolygon property bool _interactive: interactive property bool _circleSupported: myGeoFenceController.circleRadiusFact !== null property bool _circleEnabled: myGeoFenceController.circleEnabled property real _circleRadius: _circleSupported ? myGeoFenceController.circleRadiusFact.rawValue : 0 property bool _polygonSupported: myGeoFenceController.polygonSupported property bool _polygonEnabled: myGeoFenceController.polygonEnabled Component.onCompleted: { _circleComponent = circleComponent.createObject(map) map.addMapItem(_circleComponent) _breachReturnPointComponent = breachReturnPointComponent.createObject(map) map.addMapItem(_breachReturnPointComponent) _mouseAreaComponent = mouseAreaComponent.createObject(map) } Component.onDestruction: { _circleComponent.destroy() _breachReturnPointComponent.destroy() _mouseAreaComponent.destroy() } Connections { target: myGeoFenceController onAddInitialFencePolygon: mapPolygonVisuals.addInitialPolygon() } // Mouse area to capture breach return point coordinate Component { id: mouseAreaComponent MouseArea { anchors.fill: map visible: interactive onClicked: myGeoFenceController.breachReturnPoint = map.toCoordinate(Qt.point(mouse.x, mouse.y), false /* clipToViewPort */) } } QGCMapPolygonVisuals { id: mapPolygonVisuals mapControl: map mapPolygon: _mapPolygon interactive: _interactive borderWidth: 2 borderColor: "orange" visible: _polygonSupported && (planView || _polygonEnabled) } // GeoFence circle Component { id: circleComponent MapCircle { z: QGroundControl.zOrderMapItems border.width: 2 border.color: "orange" color: "transparent" center: homePosition ? homePosition : QtPositioning.coordinate() radius: _circleRadius visible: _circleSupported && _circleRadius > 0 && (planView || _circleEnabled) } } // Breach return point Component { id: breachReturnPointComponent MapQuickItem { anchorPoint.x: sourceItem.anchorPointX anchorPoint.y: sourceItem.anchorPointY z: QGroundControl.zOrderMapItems coordinate: myGeoFenceController.breachReturnPoint sourceItem: MissionItemIndexLabel { label: "B" } } } }