1#ifndef OSMSCOUT_CLIENT_QT_MAPWIDGET_H
2#define OSMSCOUT_CLIENT_QT_MAPWIDGET_H
24#include <QQuickPaintedItem>
28#include <osmscoutclient/DBThread.h>
102 InputHandler *inputHandler{
nullptr};
103 TapRecognizer tapRecognizer;
105 IconLookup *iconLookup{
nullptr};
106 IconAnimation iconAnimation;
108 bool preventMouseStealing{
false};
110 bool finished{
false};
112 struct CurrentLocation {
113 QDateTime lastUpdate{QDateTime::currentDateTime()};
115 osmscout::GeoCoord coord;
116 bool horizontalAccuracyValid{
false};
117 double horizontalAccuracy{0};
119 CurrentLocation currentPosition;
120 bool showCurrentPosition{
false};
124 QMap<int, osmscout::GeoCoord> marks;
128 VehiclePosition *position{
nullptr};
134 bool autoRotateMap{
true};
135 QElapsedTimer lastGesture;
137 QString standardIconFile{
"vehicle.svg"};
138 QString noGpsSignalIconFile{
"vehicle_not_fixed.svg"};
139 QString inTunnelIconFile{
"vehicle_tunnel.svg"};
142 QImage noGpsSignalIcon;
147 if (position==
nullptr){
150 switch(position->getState()){
151 case PositionAgent::PositionState::EstimateInTunnel:
152 return !inTunnelIcon.isNull() ? inTunnelIcon : standardIcon;
153 case PositionAgent::PositionState::NoGpsSignal:
154 return !noGpsSignalIcon.isNull() ? noGpsSignalIcon : standardIcon;
162 float vehicleScaleFactor{1.0};
176 void mouseMove(
const int screenX,
const int screenY,
const double lat,
const double lon,
const Qt::KeyboardModifiers modifiers);
177 void tap(
const int screenX,
const int screenY,
const double lat,
const double lon);
178 void doubleTap(
const int screenX,
const int screenY,
const double lat,
const double lon);
179 void longTap(
const int screenX,
const int screenY,
const double lat,
const double lon);
183 QString objectType, quint64 objectId,
int poiId, QString type,
184 QString name, QString altName, QString ref, QString operatorName, QString phone, QString website,
185 QString openingHours);
202 void zoom(
double zoomFactor,
const QPoint widgetPosition);
203 void zoomIn(
double zoomFactor,
const QPoint widgetPosition);
204 void zoomOut(
double zoomFactor,
const QPoint widgetPosition);
224 void showCoordinates(osmscout::GeoCoord coord, osmscout::Magnification magnification);
232 bool horizontalAccuracyValid =
false,
233 double horizontalAccuracy = 0,
234 const QDateTime &lastUpdate = QDateTime::currentDateTime());
279 Slot<double> mapDpiSlot{ std::bind(&MapWidget::onMapDPIChange,
this, std::placeholders::_1) };
281 Slot<> stylesheetFilenameChangedSlot{
283 emit stylesheetFilenameChanged();
287 Slot<> styleErrorsChangedSlot{
289 emit styleErrorsChanged();
293 Slot<osmscout::GeoBox> databaseLoadedSlot{
294 [
this](
const osmscout::GeoBox &geoBox){
295 emit databaseLoaded(geoBox);
301 virtual void onTap(
const QPoint p);
302 virtual void onDoubleTap(
const QPoint p);
303 virtual void onLongTap(
const QPoint p);
304 virtual void onTapLongTap(
const QPoint p);
305 virtual void onTapAndDrag(
const QPoint p);
307 void onMapDPIChange(
double dpi);
312 void setupInputHandler(InputHandler *newGesture);
314 void loadVehicleIcons();
320 osmscout::Magnification magnificationByDimension(
const Distance &dimension);
334 if (updated ==
nullptr){
335 qWarning() <<
"Failed to cast " << o <<
" to MapView*.";
339 bool changed = *
view != *updated;
350 return vehicle.position;
357 return vehicle.standardIconFile;
362 vehicle.standardIconFile = file;
369 return vehicle.noGpsSignalIconFile;
374 vehicle.noGpsSignalIconFile = file;
381 return vehicle.inTunnelIconFile;
386 vehicle.inTunnelIconFile = file;
392 return vehicle.iconSize;
397 vehicle.iconSize = value;
404 return iconLookup!=
nullptr;
411 return view->center.GetLat();
416 return view->center.GetLon();
421 return view->angle.AsRadians();
435 return view->magnification.GetLevel();
461 return inputHandler->isLockedToPosition();
468 return vehicle.follow;
475 return vehicle.autoRotateMap;
487 view->angle.AsRadians(),
508 void paint(QPainter *painter)
override;
535 static QImage
loadSVGIcon(
const QString &directory,
const QString fileName,
double iconPixelSize);
#define OSMSCOUT_CLIENT_QT_API
Definition ClientQtImportExport.h:45
Definition LocationEntry.h:47
Definition MapRenderer.h:85
Definition InputHandler.h:161
Definition MercatorProjection.h:40
bool Set(const GeoCoord &coord, const Magnification &magnification, size_t width, size_t height)
Definition MercatorProjection.h:86
Definition OverlayObject.h:169
Definition OverlayObject.h:211
Definition OverlayObject.h:190
Definition VehiclePosition.h:41
RenderingType
Definition OSMScoutQt.h:200
Vehicle
Definition OSMScoutTypes.h:55
Definition IconLookup.h:43