QGeoView  1.0
QGeoView documentation
QGVMap.h
1 /***************************************************************************
2  * QGeoView is a Qt / C ++ widget for visualizing geographic data.
3  * Copyright (C) 2018-2025 Andrey Yaroshenko.
4  *
5  * This program is free software: you can redistribute it and/or modify
6  * it under the terms of the GNU Lesser General Public License as published by
7  * the Free Software Foundation, either version 3 of the License, or
8  * (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public License
16  * along with this program; if not, see https://www.gnu.org/licenses.
17  ****************************************************************************/
18 
19 #pragma once
20 
21 #include <QMimeData>
22 #include <QWidget>
23 
24 #include "QGVCamera.h"
25 #include "QGVGlobal.h"
26 #include "QGVProjection.h"
27 
28 class QGVItem;
29 class QGVDrawItem;
30 class QGVWidget;
31 class QGVMapQGScene;
32 class QGVMapQGView;
33 
34 class QGV_LIB_DECL QGVMap : public QWidget
35 {
36  Q_OBJECT
37 
38 public:
39  explicit QGVMap(QWidget* parent = 0);
40  ~QGVMap();
41 
42  const QGVCameraState getCamera() const;
43  void cameraTo(const QGVCameraActions& actions, bool animation = false);
44  void flyTo(const QGVCameraActions& actions);
45 
46  void setProjection(QGV::Projection id);
47  void setProjection(QGVProjection* projection);
48  QGVProjection* getProjection() const;
49 
50  void setMouseActions(QGV::MouseActions actions);
51  void setMouseAction(QGV::MouseAction action, bool enabled = true);
52  QGV::MouseActions getMouseActions() const;
53  bool isMouseAction(QGV::MouseAction action) const;
54 
55  QGVItem* rootItem() const;
56  QGVMapQGView* geoView() const;
57 
58  void addItem(QGVItem* item);
59  void removeItem(QGVItem* item);
60  void deleteItems();
61  int countItems() const;
62  QGVItem* getItem(int index) const;
63 
64  void addWidget(QGVWidget* widget);
65  void removeWidget(QGVWidget* widget);
66  void deleteWidgets();
67  int countWidgets() const;
68  QGVWidget* getWigdet(int index) const;
69 
70  void select(QGVItem* item);
71  void unselect(QGVItem* item);
72  void unselectAll();
73  QSet<QGVItem*> getSelections() const;
74 
75  QList<QGVDrawItem*> search(const QPointF& projPos, Qt::ItemSelectionMode mode = Qt::ContainsItemShape) const;
76  QList<QGVDrawItem*> search(const QRectF& projRect, Qt::ItemSelectionMode mode = Qt::ContainsItemShape) const;
77  QList<QGVDrawItem*> search(const QPolygonF& projPolygon, Qt::ItemSelectionMode mode = Qt::ContainsItemShape) const;
78 
79  QPixmap grabMapView(bool includeWidgets = true) const;
80 
81  QPointF mapToProj(QPoint pos);
82  QPoint mapFromProj(QPointF projPos);
83 
84  void refreshMap();
85  void refreshProjection();
86  void anchoreWidgets();
87 
88  virtual void onMapState(QGV::MapState state);
89  virtual void onMapCamera(const QGVCameraState& oldState, const QGVCameraState& newState);
90 
91 protected:
92  void mouseMoveEvent(QMouseEvent* event) override;
93  void mousePressEvent(QMouseEvent* event) override;
94  void mouseDoubleClickEvent(QMouseEvent* event) override;
95 
96 Q_SIGNALS:
97  void projectionChanged();
98  void scaleChanged();
99  void azimuthChanged();
100  void areaChanged();
101  void itemsChanged(QGVItem* parent);
102  void stateChanged(QGV::MapState state);
103  void itemClicked(QGVItem* item, QPointF projPos);
104  void itemDoubleClicked(QGVItem* item, QPointF projPos);
105  void mapMouseMove(QPointF projPos);
106  void mapMousePress(QPointF projPos);
107  void mapMouseDoubleClicked(QPointF projPos);
108  void dropOnMap(QGV::GeoPos pos, const QMimeData* data);
109 
110 private:
111  QScopedPointer<QGVProjection> mProjection;
112  QScopedPointer<QGVMapQGView> mQGView;
113  QScopedPointer<QGVItem> mRootItem;
114  QList<QGVWidget*> mWidgets;
115  QSet<QGVItem*> mSelections;
116  void handleDropDataOnQGVMapQGView(QPointF position, const QMimeData* dropData);
117 };
Definition: QGVCamera.h:59
Definition: QGVCamera.h:30
Definition: QGVDrawItem.h:27
Definition: QGVItem.h:25
Definition: QGVMapQGView.h:37
Definition: QGVMap.h:35
Definition: QGVProjection.h:24
Definition: QGVWidget.h:28
Definition: QGVGlobal.h:105