From 22169ffe523500902e6137577ddd6cefb3c1f508 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beat=20K=C3=BCng?= Date: Mon, 27 Nov 2017 16:52:03 +0100 Subject: [PATCH] AirMapManager: update polygons to changed airmapd interface --- src/MissionManager/AirMapManager.cc | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/src/MissionManager/AirMapManager.cc b/src/MissionManager/AirMapManager.cc index ba91d72..f95b0ff 100644 --- a/src/MissionManager/AirMapManager.cc +++ b/src/MissionManager/AirMapManager.cc @@ -210,21 +210,20 @@ void AirMapRestrictionManager::setROI(const QGeoCoordinate& center, double radiu void AirMapRestrictionManager::_addPolygonToList(const airmap::Geometry::Polygon& polygon, QList& list) { QVariantList polygonArray; - if (polygon.size() == 1) { - for (const auto& vertex : polygon[0].coordinates) { - QGeoCoordinate coord; - if (vertex.altitude) { - coord = QGeoCoordinate(vertex.latitude, vertex.longitude, vertex.altitude.get()); - } else { - coord = QGeoCoordinate(vertex.latitude, vertex.longitude); - } - polygonArray.append(QVariant::fromValue(coord)); + for (const auto& vertex : polygon.outer_ring.coordinates) { + QGeoCoordinate coord; + if (vertex.altitude) { + coord = QGeoCoordinate(vertex.latitude, vertex.longitude, vertex.altitude.get()); + } else { + coord = QGeoCoordinate(vertex.latitude, vertex.longitude); } - list.append(new PolygonAirspaceRestriction(polygonArray)); + polygonArray.append(QVariant::fromValue(coord)); + } + list.append(new PolygonAirspaceRestriction(polygonArray)); - } else { + if (polygon.inner_rings.size() > 0) { // no need to support those (they are rare, and in most cases, there's a more restrictive polygon filling the hole) - qCDebug(AirMapManagerLog) << "Empty polygon, or Polygon with holes. Size: "<