version 2.13.0

add Map library (MapView with OSM maps and items) and mapviewer util
This commit is contained in:
2023-01-20 09:16:42 +03:00
parent 10212e2ebd
commit 958c81fb1d
46 changed files with 2383 additions and 1 deletions

95
libs/map/mapitembase.cpp Normal file
View File

@@ -0,0 +1,95 @@
#include "mapitembase.h"
#include "mapview.h"
#include "osm_math_p.h"
MapItemBase::MapItemBase() {}
MapItemBase::~MapItemBase() {
if (!parent) return;
parent->removeItem(this);
}
void MapItemBase::setInteracive(bool newInteracive) {
m_interacive = newInteracive;
updateParent();
}
void MapItemBase::setVisible(bool newVisible) {
m_visible = newVisible;
updateParent();
}
void MapItemBase::setRotation(double deg) {
m_rotation = deg;
updateParent();
}
void MapItemBase::rotate(double deg) {
m_rotation += deg;
while (deg < 0)
deg += 360.;
while (deg > 360.)
deg -= 360.;
updateParent();
}
void MapItemBase::scale(QPointF s) {
m_scale = {m_scale.x() * s.x(), m_scale.y() * s.y()};
updateParent();
}
void MapItemBase::setScale(QPointF s) {
m_scale = s;
updateParent();
}
void MapItemBase::setPosition(QPointF geo) {
m_position = geo;
updatePosition();
updateParent();
}
void MapItemBase::setCursor(const QCursor & newCursor) {
m_cursor = newCursor;
updateParent();
}
QPointF MapItemBase::mapToView(QPointF norm) const {
if (!parent) return norm;
return parent->mapFromNorm(norm);
}
double MapItemBase::scalePx2M(QPointF norm) const {
if (!parent) return 1.;
return parent->scalePx2M(norm);
}
void MapItemBase::updatePosition() {
norm_pos = OSM::geo2xy(m_position);
potitionChanged();
zoomChanged();
}
void MapItemBase::updateParent() {
if (parent) parent->update();
}
void MapItemBase::setBoundingRect(QRectF b) {
m_bounding = b;
}