Commit c65f8eca authored by Valentin Platzgummer's avatar Valentin Platzgummer

wima controller mod, appimage updated

parent 4acc1d5d
...@@ -448,7 +448,6 @@ HEADERS += \ ...@@ -448,7 +448,6 @@ HEADERS += \
src/Wima/Snake/QNemoHeartbeat.h \ src/Wima/Snake/QNemoHeartbeat.h \
src/Wima/Snake/QNemoProgress.h \ src/Wima/Snake/QNemoProgress.h \
src/Wima/Snake/QNemoProgress.h \ src/Wima/Snake/QNemoProgress.h \
src/Wima/Snake/SnakeThread.h \
src/Wima/Snake/SnakeTile.h \ src/Wima/Snake/SnakeTile.h \
src/Wima/Snake/SnakeTileLocal.h \ src/Wima/Snake/SnakeTileLocal.h \
src/Wima/Snake/SnakeTiles.h \ src/Wima/Snake/SnakeTiles.h \
...@@ -513,7 +512,6 @@ SOURCES += \ ...@@ -513,7 +512,6 @@ SOURCES += \
src/Wima/Geometry/GeoPoint3D.cpp \ src/Wima/Geometry/GeoPoint3D.cpp \
src/Wima/Snake/NemoInterface.cpp \ src/Wima/Snake/NemoInterface.cpp \
src/Wima/Snake/QNemoProgress.cc \ src/Wima/Snake/QNemoProgress.cc \
src/Wima/Snake/SnakeThread.cc \
src/Wima/Snake/SnakeTile.cpp \ src/Wima/Snake/SnakeTile.cpp \
src/Wima/WaypointManager/AreaInterface.cpp \ src/Wima/WaypointManager/AreaInterface.cpp \
src/Wima/WaypointManager/DefaultManager.cpp \ src/Wima/WaypointManager/DefaultManager.cpp \
......
...@@ -241,43 +241,66 @@ FlightMap { ...@@ -241,43 +241,66 @@ FlightMap {
color: "green" color: "green"
} }
// Add Snake tile center points to the map // // Add Snake tile center points to the map
MapItemView { // MapItemView {
property bool _enable: wimaController.enableWimaController.value // id:progressView
&& wimaController.enableSnake.value // property bool _enable: wimaController.enableWimaController.value
model: _enable ? wimaController.snakeTileCenterPoints : 0 // && wimaController.enableSnake.value
// property bool valid: wimaController.snakeTileCenterPoints.length
delegate: ProgressIndicator{ // === wimaController.nemoProgress.length
coordinate: modelData // model: _enable ? wimaController.snakeTileCenterPoints : 0
currentValue: getProgress()
width: 10 // delegate: ProgressIndicator{
height: 10 // coordinate: modelData
z: 1 // currentValue: getProgress()
// z: 1
function getProgress() {
var progress = wimaController.nemoProgress[index] // function getProgress() {
if (progress < 0) // var progress = 0
progress = 0 // if (progressView.valid){
if (progress > 100) // progress = wimaController.nemoProgress[index]
progress = 100 // }
return progress // if (progress < 0)
} // progress = 0
} // if (progress > 100)
} // progress = 100
// return progress
// }
// }
// }
// Add Snake tiles to the map // Add Snake tiles to the map
MapItemView { MapItemView {
id: tileView
property bool _enable: wimaController.enableWimaController.value property bool _enable: wimaController.enableWimaController.value
&& wimaController.enableSnake.value && wimaController.enableSnake.value
property bool valid: wimaController.snakeTileCenterPoints.length
=== wimaController.nemoProgress.length
model: _enable ? wimaController.snakeTiles : 0 model: _enable ? wimaController.snakeTiles : 0
delegate: MapPolygon{ delegate: MapPolygon{
path: object.path; path: object.path;
border.color: "black" border.color: "black"
border.width: 1 border.width: 1
color: "transparent" color: getColor()
opacity: 1 opacity: 0.6
z: 2 z: 2
function getColor() {
var progress = 0
if (tileView.valid){
progress = wimaController.nemoProgress[index]
}
if (progress < 25)
return "transparent"
if (progress < 50)
return "orange"
if (progress < 75)
return "yellow"
if (progress < 100)
return "greenyellow"
return "limegreen"
}
} }
} }
......
This diff is collapsed.
...@@ -121,9 +121,9 @@ const QObject *QmlObjectListModel::operator[](int index) const { ...@@ -121,9 +121,9 @@ const QObject *QmlObjectListModel::operator[](int index) const {
return _objectList[index]; return _objectList[index];
} }
bool QmlObjectListModel::operator==(const QmlObjectListModel &other) { bool QmlObjectListModel::operator==(const QmlObjectListModel &other) const {
if (this->count() == other.count()) { if (this->count() == other.count()) {
for (std::size_t i = 0; i < this->count(); ++i) { for (int i = 0; i < this->count(); ++i) {
if (this->get(i) != other.get(i)) { if (this->get(i) != other.get(i)) {
return false; return false;
} }
...@@ -134,7 +134,7 @@ bool QmlObjectListModel::operator==(const QmlObjectListModel &other) { ...@@ -134,7 +134,7 @@ bool QmlObjectListModel::operator==(const QmlObjectListModel &other) {
} }
} }
bool QmlObjectListModel::operator==(const QmlObjectListModel &other) { bool QmlObjectListModel::operator!=(const QmlObjectListModel &other) const {
return !this->operator==(other); return !this->operator==(other);
} }
......
...@@ -51,8 +51,8 @@ public: ...@@ -51,8 +51,8 @@ public:
} }
QList<QObject *> *objectList() { return &_objectList; } QList<QObject *> *objectList() { return &_objectList; }
bool operator==(const QmlObjectListModel &other); bool operator==(const QmlObjectListModel &other) const;
bool operator!=(const QmlObjectListModel &other); bool operator!=(const QmlObjectListModel &other) const;
/// Calls deleteLater on all items and this itself. /// Calls deleteLater on all items and this itself.
void deleteListAndContents(); void deleteListAndContents();
......
...@@ -359,7 +359,12 @@ void CircularSurvey::_rebuildTransectsPhase1(void) { ...@@ -359,7 +359,12 @@ void CircularSurvey::_rebuildTransectsPhase1(void) {
// Store raw transects. // Store raw transects.
const auto &transectsENU = this->_workerOutput->transects; const auto &transectsENU = this->_workerOutput->transects;
const auto &ori = this->_referencePoint; const auto &ori = this->_referencePoint;
for (auto &t : transectsENU) { std::size_t startIdx = 0;
if (transectsENU.size() > 0 && transectsENU.front().size() == 1) {
startIdx = 1;
}
for (std::size_t i = startIdx; i < transectsENU.size(); ++i) {
const auto &t = transectsENU[i];
QList<QGeoCoordinate> trGeo; QList<QGeoCoordinate> trGeo;
for (auto &v : t) { for (auto &v : t) {
QGeoCoordinate c; QGeoCoordinate c;
......
...@@ -28,6 +28,15 @@ TileData &TileData::operator=(const TileData &other) { ...@@ -28,6 +28,15 @@ TileData &TileData::operator=(const TileData &other) {
return *this; return *this;
} }
bool TileData::operator==(const TileData &other) const {
return this->tiles == other.tiles &&
this->tileCenterPoints == other.tileCenterPoints;
}
bool TileData::operator!=(const TileData &other) const {
return !this->operator==(other);
}
void TileData::clear() { void TileData::clear() {
this->tiles.clearAndDeleteContents(); this->tiles.clearAndDeleteContents();
this->tileCenterPoints.clear(); this->tileCenterPoints.clear();
......
...@@ -17,6 +17,8 @@ public: ...@@ -17,6 +17,8 @@ public:
~TileData(); ~TileData();
TileData &operator=(const TileData &other); TileData &operator=(const TileData &other);
bool operator==(const TileData &other) const;
bool operator!=(const TileData &other) const;
void clear(); void clear();
std::size_t size() const; std::size_t size() const;
......
...@@ -61,10 +61,10 @@ QVariantList &WimaMeasurementAreaData::tileCenterPoints() { ...@@ -61,10 +61,10 @@ QVariantList &WimaMeasurementAreaData::tileCenterPoints() {
} }
const TileData &WimaMeasurementAreaData::tileData() const { const TileData &WimaMeasurementAreaData::tileData() const {
return this->tileData(); return this->_tileData;
} }
TileData &WimaMeasurementAreaData::tileData() { return this->tileData(); } TileData &WimaMeasurementAreaData::tileData() { return this->_tileData; }
const QVector<int> &WimaMeasurementAreaData::progress() const { const QVector<int> &WimaMeasurementAreaData::progress() const {
return this->_progress; return this->_progress;
......
...@@ -21,7 +21,7 @@ RoutingThread::~RoutingThread() { ...@@ -21,7 +21,7 @@ RoutingThread::~RoutingThread() {
this->wait(); this->wait();
} }
bool RoutingThread::calculating() { return this->_calculating; } bool RoutingThread::calculating() const { return this->_calculating; }
void RoutingThread::route(const snake::BoostPolygon &safeArea, void RoutingThread::route(const snake::BoostPolygon &safeArea,
const RoutingThread::Generator &generator) { const RoutingThread::Generator &generator) {
...@@ -107,7 +107,7 @@ void RoutingThread::run() { ...@@ -107,7 +107,7 @@ void RoutingThread::run() {
} // end calculation } // end calculation
#ifdef DEBUG_CIRCULAR_SURVEY #ifdef DEBUG_CIRCULAR_SURVEY
else { else {
qWarning() << "RoutingWorker::run(): preconditions failed."; qWarning() << "RoutingWorker::run(): generator() failed.";
} }
#endif #endif
#ifdef SHOW_CIRCULAR_SURVEY_TIME #ifdef SHOW_CIRCULAR_SURVEY_TIME
......
...@@ -27,11 +27,12 @@ class RoutingThread : public QThread { ...@@ -27,11 +27,12 @@ class RoutingThread : public QThread {
public: public:
using PtrRoutingData = QSharedPointer<RoutingData>; using PtrRoutingData = QSharedPointer<RoutingData>;
using Generator = std::function<bool(snake::Transects &)>; using Generator = std::function<bool(snake::Transects &)>;
using Consumer = std::function<void(const RoutingData &)>;
RoutingThread(QObject *parent = nullptr); RoutingThread(QObject *parent = nullptr);
~RoutingThread() override; ~RoutingThread() override;
bool calculating(); bool calculating() const;
public slots: public slots:
void route(const snake::BoostPolygon &safeArea, const Generator &generator); void route(const snake::BoostPolygon &safeArea, const Generator &generator);
......
#include "NemoInterface.h" #include "NemoInterface.h"
#include "SnakeTilesLocal.h"
#include "QGCApplication.h" #include "QGCApplication.h"
#include "QGCToolbox.h" #include "QGCToolbox.h"
...@@ -135,12 +136,12 @@ void NemoInterface::Impl::setTileData(const TileData &tileData) { ...@@ -135,12 +136,12 @@ void NemoInterface::Impl::setTileData(const TileData &tileData) {
const auto &origin = this->ENUOrigin; const auto &origin = this->ENUOrigin;
this->tilesENU.polygons().clear(); this->tilesENU.polygons().clear();
bool error = false; bool error = false;
for (std::size_t i = 0; i < tileData.tiles.count(); ++i) { for (int i = 0; i < tileData.tiles.count(); ++i) {
*obj = tileData.tiles.get(i); obj = tileData.tiles.get(i);
*tile = qobject_cast<const SnakeTile *>(obj); tile = qobject_cast<const SnakeTile *>(obj);
if (tile != nullptr) { if (tile != nullptr) {
snake::BoostPolygon tileENU; SnakeTileLocal tileENU;
snake::areaToEnu(origin, tile->coordinateList(), tileENU); snake::areaToEnu(origin, tile->coordinateList(), tileENU.path());
this->tilesENU.polygons().push_back(std::move(tileENU)); this->tilesENU.polygons().push_back(std::move(tileENU));
} else { } else {
qWarning() << "NemoInterface::Impl::setTileData(): nullptr."; qWarning() << "NemoInterface::Impl::setTileData(): nullptr.";
...@@ -162,7 +163,7 @@ void NemoInterface::Impl::setTileData(const TileData &tileData) { ...@@ -162,7 +163,7 @@ void NemoInterface::Impl::setTileData(const TileData &tileData) {
} }
bool NemoInterface::Impl::hasTileData(const TileData &tileData) const { bool NemoInterface::Impl::hasTileData(const TileData &tileData) const {
return this->tileData = tileData; return this->tileData == tileData;
} }
NemoInterface::NemoStatus NemoInterface::Impl::status() { NemoInterface::NemoStatus NemoInterface::Impl::status() {
......
...@@ -3,8 +3,6 @@ ...@@ -3,8 +3,6 @@
#include <QGeoCoordinate> #include <QGeoCoordinate>
#include <QObject> #include <QObject>
#include "SnakeTilesLocal.h"
#include <memory> #include <memory>
class TileData; class TileData;
......
#pragma once #pragma once
#include "Wima/Geometry/GenericPolygon.h" #include "Wima/Geometry/GenericPolygon.h"
using SnakeTileLocal = GenericPolygon<>; using SnakeTileLocal = GenericPolygon<QPointF, std::vector>;
#pragma once #pragma once
#include "Wima/Snake/SnakeTileLocal.h"
#include "Wima/Geometry/GenericPolygonArray.h" #include "Wima/Geometry/GenericPolygonArray.h"
#include "Wima/Snake/SnakeTileLocal.h"
typedef GenericPolygonArray<SnakeTileLocal, QVector> SnakeTilesLocal; #include <vector>
typedef GenericPolygonArray<SnakeTileLocal, std::vector> SnakeTilesLocal;
...@@ -92,10 +92,10 @@ struct BoundingBox { ...@@ -92,10 +92,10 @@ struct BoundingBox {
BoostPolygon corners; BoostPolygon corners;
}; };
template <class GeoPoint> template <class GeoPoint1, class GeoPoint2>
void toENU(const GeoPoint &origin, const GeoPoint &in, BoostPoint &out) { void toENU(const GeoPoint1 &origin, const GeoPoint2 &in, BoostPoint &out) {
GeographicLib::Geocentric earth(GeographicLib::Constants::WGS84_a(), static GeographicLib::Geocentric earth(GeographicLib::Constants::WGS84_a(),
GeographicLib::Constants::WGS84_f()); GeographicLib::Constants::WGS84_f());
GeographicLib::LocalCartesian proj(origin.latitude(), origin.longitude(), GeographicLib::LocalCartesian proj(origin.latitude(), origin.longitude(),
origin.altitude(), earth); origin.altitude(), earth);
...@@ -108,10 +108,26 @@ void toENU(const GeoPoint &origin, const GeoPoint &in, BoostPoint &out) { ...@@ -108,10 +108,26 @@ void toENU(const GeoPoint &origin, const GeoPoint &in, BoostPoint &out) {
(void)z; (void)z;
} }
template <class GeoPoint1, class GeoPoint2, class Point>
void toENU(const GeoPoint1 &origin, const GeoPoint2 &in, Point &out) {
static GeographicLib::Geocentric earth(GeographicLib::Constants::WGS84_a(),
GeographicLib::Constants::WGS84_f());
GeographicLib::LocalCartesian proj(origin.latitude(), origin.longitude(),
origin.altitude(), earth);
double x = 0, y = 0, z = 0;
auto alt = in.altitude();
alt = std::isnan(alt) ? 0 : alt;
proj.Forward(in.latitude(), in.longitude(), alt, x, y, z);
out.setX(x);
out.setY(y);
(void)z;
}
template <class GeoPoint> template <class GeoPoint>
void fromENU(const GeoPoint &origin, const BoostPoint &in, GeoPoint &out) { void fromENU(const GeoPoint &origin, const BoostPoint &in, GeoPoint &out) {
GeographicLib::Geocentric earth(GeographicLib::Constants::WGS84_a(), static GeographicLib::Geocentric earth(GeographicLib::Constants::WGS84_a(),
GeographicLib::Constants::WGS84_f()); GeographicLib::Constants::WGS84_f());
GeographicLib::LocalCartesian proj(origin.latitude(), origin.longitude(), GeographicLib::LocalCartesian proj(origin.latitude(), origin.longitude(),
origin.altitude(), earth); origin.altitude(), earth);
...@@ -122,10 +138,18 @@ void fromENU(const GeoPoint &origin, const BoostPoint &in, GeoPoint &out) { ...@@ -122,10 +138,18 @@ void fromENU(const GeoPoint &origin, const BoostPoint &in, GeoPoint &out) {
out.setAltitude(alt); out.setAltitude(alt);
} }
template <class GeoPoint, template <class, class...> class Container> template <class GeoPoint, class Container1, class Container2>
void areaToEnu(const GeoPoint &origin, const Container<GeoPoint> &in, void areaToEnu(const GeoPoint &origin, const Container1 &in, Container2 &out) {
BoostPolygon &out) { for (auto &vertex : in) {
for (auto vertex : in) { typename Container2::value_type p;
toENU(origin, vertex, p);
out.push_back(p);
}
}
template <class GeoPoint, class Container>
void areaToEnu(const GeoPoint &origin, const Container &in, BoostPolygon &out) {
for (auto &vertex : in) {
BoostPoint p; BoostPoint p;
toENU(origin, vertex, p); toENU(origin, vertex, p);
out.outer().push_back(p); out.outer().push_back(p);
...@@ -133,11 +157,21 @@ void areaToEnu(const GeoPoint &origin, const Container<GeoPoint> &in, ...@@ -133,11 +157,21 @@ void areaToEnu(const GeoPoint &origin, const Container<GeoPoint> &in,
bg::correct(out); bg::correct(out);
} }
template <class GeoPoint, template <class, class...> class Container> template <class GeoPoint, class Container1, class Container2>
void areaFromEnu(const GeoPoint &origin, Container1 &in,
const Container2 &out) {
for (auto &vertex : in) {
typename Container2::value_type p;
fromENU(origin, vertex, p);
out.push_back(p);
}
}
template <class GeoPoint, class Container>
void areaFromEnu(const GeoPoint &origin, BoostPolygon &in, void areaFromEnu(const GeoPoint &origin, BoostPolygon &in,
const Container<GeoPoint> &out) { const Container &out) {
for (auto vertex : in.outer()) { for (auto &vertex : in.outer()) {
GeoPoint p; typename Container::value_type p;
fromENU(origin, vertex, p); fromENU(origin, vertex, p);
out.push_back(p); out.push_back(p);
} }
......
This diff is collapsed.
...@@ -6,12 +6,8 @@ ...@@ -6,12 +6,8 @@
#include "QGCMapPolygon.h" #include "QGCMapPolygon.h"
#include "QmlObjectListModel.h" #include "QmlObjectListModel.h"
//#include "Geometry/WimaArea.h"
//#include "Geometry/WimaCorridor.h"
#include "Geometry/WimaCorridorData.h" #include "Geometry/WimaCorridorData.h"
//#include "Geometry/WimaMeasurementArea.h"
#include "Geometry/WimaMeasurementAreaData.h" #include "Geometry/WimaMeasurementAreaData.h"
//#include "Geometry/WimaServiceArea.h"
#include "Geometry/WimaServiceAreaData.h" #include "Geometry/WimaServiceAreaData.h"
#include "WimaPlanData.h" #include "WimaPlanData.h"
...@@ -33,8 +29,6 @@ typedef std::unique_ptr<rapidjson::Document> JsonDocUPtr; ...@@ -33,8 +29,6 @@ typedef std::unique_ptr<rapidjson::Document> JsonDocUPtr;
class WimaController : public QObject { class WimaController : public QObject {
Q_OBJECT Q_OBJECT
enum FileType { WimaFile, PlanFile };
public: public:
WimaController(QObject *parent = nullptr); WimaController(QObject *parent = nullptr);
...@@ -213,7 +207,7 @@ private slots: ...@@ -213,7 +207,7 @@ private slots:
void _initSmartRTL(); void _initSmartRTL();
void _smartRTLCleanUp(bool flying); void _smartRTLCleanUp(bool flying);
// Snake. // Snake.
void _threadFinishedHandler(); void _storeRoute(RoutingThread::PtrRoutingData data);
void _switchWaypointManager(WaypointManager::ManagerBase &manager); void _switchWaypointManager(WaypointManager::ManagerBase &manager);
void _switchToSnakeWaypointManager(QVariant variant); void _switchToSnakeWaypointManager(QVariant variant);
void _progressChangedHandler(); void _progressChangedHandler();
...@@ -234,7 +228,7 @@ private: ...@@ -234,7 +228,7 @@ private:
WimaMeasurementAreaData _measurementArea; // measurement area WimaMeasurementAreaData _measurementArea; // measurement area
WimaServiceAreaData _serviceArea; // area for supplying WimaServiceAreaData _serviceArea; // area for supplying
WimaCorridorData _corridor; // corridor connecting opArea and serArea WimaCorridorData _corridor; // corridor connecting opArea and serArea
bool _localPlanDataValid; bool _planDataValid;
// Waypoint Managers. // Waypoint Managers.
WaypointManager::AreaInterface _areaInterface; WaypointManager::AreaInterface _areaInterface;
...@@ -283,6 +277,7 @@ private: ...@@ -283,6 +277,7 @@ private:
using StatusMap = std::map<int, QString>; using StatusMap = std::map<int, QString>;
static StatusMap _nemoStatusMap; static StatusMap _nemoStatusMap;
RoutingThread _routingThread; RoutingThread _routingThread;
QGeoCoordinate _origin;
// Periodic tasks. // Periodic tasks.
QTimer _eventTimer; QTimer _eventTimer;
......
...@@ -89,6 +89,10 @@ void WimaPlanData::append(const WimaMeasurementAreaData &areaData) { ...@@ -89,6 +89,10 @@ void WimaPlanData::append(const WimaMeasurementAreaData &areaData) {
} }
} }
void WimaPlanData::setTransects(const QList<QList<QGeoCoordinate>> &transects) {
_transects = transects;
}
void WimaPlanData::append(const QList<MissionItem *> &missionItems) { void WimaPlanData::append(const QList<MissionItem *> &missionItems) {
for (auto *item : missionItems) { for (auto *item : missionItems) {
item->setParent(this); item->setParent(this);
...@@ -110,6 +114,10 @@ const QList<const WimaAreaData *> &WimaPlanData::areaList() const { ...@@ -110,6 +114,10 @@ const QList<const WimaAreaData *> &WimaPlanData::areaList() const {
return _areaList; return _areaList;
} }
const QList<QList<QGeoCoordinate>> &WimaPlanData::transects() const {
return _transects;
}
const QList<MissionItem *> &WimaPlanData::missionItems() const { const QList<MissionItem *> &WimaPlanData::missionItems() const {
return _missionItems; return _missionItems;
} }
......
...@@ -668,9 +668,13 @@ void WimaPlaner::synchronize() { ...@@ -668,9 +668,13 @@ void WimaPlaner::synchronize() {
if (_wimaBridge != nullptr) { if (_wimaBridge != nullptr) {
if (readyForSynchronization()) { if (readyForSynchronization()) {
auto planData = toPlanData(); auto planData = toPlanData();
(void)_wimaBridge->setWimaPlanData(planData); if (planData) {
this->_synchronized = true; (void)_wimaBridge->setWimaPlanData(planData);
emit synchronizedChanged(); this->_synchronized = true;
emit synchronizedChanged();
} else {
qWarning("WimaPlaner::uploadToContainer(): error creating plan data.");
}
} }
} else { } else {
qWarning("WimaPlaner::uploadToContainer(): no container assigned."); qWarning("WimaPlaner::uploadToContainer(): no container assigned.");
...@@ -741,17 +745,18 @@ QSharedPointer<WimaPlanData> WimaPlaner::toPlanData() { ...@@ -741,17 +745,18 @@ QSharedPointer<WimaPlanData> WimaPlaner::toPlanData() {
planData->append(WimaJoinedAreaData(_joinedArea)); planData->append(WimaJoinedAreaData(_joinedArea));
// convert mission items to mavlink commands // convert mission items to mavlink commands
QList<MissionItem *> missionItems;
if (_missionController && _missionController->visualItems()) { if (_missionController && _missionController->visualItems()) {
int surveyIndex = int surveyIndex =
_missionController->visualItems()->indexOf(_TSComplexItem); _missionController->visualItems()->indexOf(_TSComplexItem);
if (surveyIndex > 0) { if (surveyIndex > 0) {
QList<MissionItem *> missionItems;
_TSComplexItem->appendMissionItems(missionItems, nullptr); _TSComplexItem->appendMissionItems(missionItems, nullptr);
planData->append(missionItems);
planData->setTransects(this->_TSComplexItem->rawTransects());
return planData;
} }
} }
// store mavlink commands return QSharedPointer<WimaPlanData>();
planData->append(missionItems);
return planData;
} }
#ifndef NDEBUG #ifndef NDEBUG
......
...@@ -5,8 +5,8 @@ import QtLocation 5.3 ...@@ -5,8 +5,8 @@ import QtLocation 5.3
MapQuickItem { MapQuickItem {
id: root id: root
width: 20 width: 15
height: 20 height: 15
anchorPoint.x: width/2 anchorPoint.x: width/2
anchorPoint.y: height/2 anchorPoint.y: height/2
...@@ -89,7 +89,7 @@ MapQuickItem { ...@@ -89,7 +89,7 @@ MapQuickItem {
// From 0 to angle // From 0 to angle
ctx.beginPath(); ctx.beginPath();
ctx.lineWidth = 3; ctx.lineWidth = 1;
ctx.strokeStyle = root.secondaryColor; ctx.strokeStyle = root.secondaryColor;
ctx.arc(root.centerWidth, ctx.arc(root.centerWidth,
root.centerHeight, root.centerHeight,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment