You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							205 lines
						
					
					
						
							6.7 KiB
						
					
					
				
			
		
		
	
	
							205 lines
						
					
					
						
							6.7 KiB
						
					
					
				| // Copyright (C) 2023 MapLibre contributors
 | |
| // Copyright (C) 2019 Mapbox, Inc.
 | |
| 
 | |
| // SPDX-License-Identifier: BSD-2-Clause
 | |
| 
 | |
| #ifndef QMAPLIBRE_MAP_H
 | |
| #define QMAPLIBRE_MAP_H
 | |
| 
 | |
| #include <QMapLibre/Export>
 | |
| #include <QMapLibre/Settings>
 | |
| #include <QMapLibre/Types>
 | |
| 
 | |
| #include <QtCore/QMargins>
 | |
| #include <QtCore/QObject>
 | |
| #include <QtCore/QPointF>
 | |
| #include <QtCore/QSize>
 | |
| #include <QtCore/QString>
 | |
| #include <QtCore/QStringList>
 | |
| #include <QtGui/QImage>
 | |
| 
 | |
| #include <functional>
 | |
| #include <memory>
 | |
| 
 | |
| namespace QMapLibre {
 | |
| 
 | |
| class MapPrivate;
 | |
| 
 | |
| class Q_MAPLIBRE_CORE_EXPORT Map : public QObject {
 | |
|     Q_OBJECT
 | |
|     Q_PROPERTY(double latitude READ latitude WRITE setLatitude)
 | |
|     Q_PROPERTY(double longitude READ longitude WRITE setLongitude)
 | |
|     Q_PROPERTY(double zoom READ zoom WRITE setZoom)
 | |
|     Q_PROPERTY(double bearing READ bearing WRITE setBearing)
 | |
|     Q_PROPERTY(double pitch READ pitch WRITE setPitch)
 | |
|     Q_PROPERTY(QString styleJson READ styleJson WRITE setStyleJson)
 | |
|     Q_PROPERTY(QString styleUrl READ styleUrl WRITE setStyleUrl)
 | |
|     Q_PROPERTY(double scale READ scale WRITE setScale)
 | |
|     Q_PROPERTY(QMapLibre::Coordinate coordinate READ coordinate WRITE setCoordinate)
 | |
|     Q_PROPERTY(QMargins margins READ margins WRITE setMargins)
 | |
| 
 | |
| public:
 | |
|     enum MapChange {
 | |
|         MapChangeRegionWillChange = 0,
 | |
|         MapChangeRegionWillChangeAnimated,
 | |
|         MapChangeRegionIsChanging,
 | |
|         MapChangeRegionDidChange,
 | |
|         MapChangeRegionDidChangeAnimated,
 | |
|         MapChangeWillStartLoadingMap,
 | |
|         MapChangeDidFinishLoadingMap,
 | |
|         MapChangeDidFailLoadingMap,
 | |
|         MapChangeWillStartRenderingFrame,
 | |
|         MapChangeDidFinishRenderingFrame,
 | |
|         MapChangeDidFinishRenderingFrameFullyRendered,
 | |
|         MapChangeWillStartRenderingMap,
 | |
|         MapChangeDidFinishRenderingMap,
 | |
|         MapChangeDidFinishRenderingMapFullyRendered,
 | |
|         MapChangeDidFinishLoadingStyle,
 | |
|         MapChangeSourceDidChange
 | |
|     };
 | |
| 
 | |
|     enum MapLoadingFailure {
 | |
|         StyleParseFailure,
 | |
|         StyleLoadFailure,
 | |
|         NotFoundFailure,
 | |
|         UnknownFailure
 | |
|     };
 | |
| 
 | |
|     // Determines the orientation of the map.
 | |
|     enum NorthOrientation {
 | |
|         NorthUpwards, // Default
 | |
|         NorthRightwards,
 | |
|         NorthDownwards,
 | |
|         NorthLeftwards,
 | |
|     };
 | |
| 
 | |
|     explicit Map(QObject *parent = nullptr,
 | |
|                  const Settings &settings = Settings(),
 | |
|                  const QSize &size = QSize(),
 | |
|                  qreal pixelRatio = 1);
 | |
|     ~Map() override;
 | |
| 
 | |
|     [[nodiscard]] QString styleJson() const;
 | |
|     [[nodiscard]] QString styleUrl() const;
 | |
| 
 | |
|     void setStyleJson(const QString &);
 | |
|     void setStyleUrl(const QString &);
 | |
| 
 | |
|     [[nodiscard]] double latitude() const;
 | |
|     void setLatitude(double latitude);
 | |
| 
 | |
|     [[nodiscard]] double longitude() const;
 | |
|     void setLongitude(double longitude);
 | |
| 
 | |
|     [[nodiscard]] double scale() const;
 | |
|     void setScale(double scale, const QPointF ¢er = QPointF());
 | |
| 
 | |
|     [[nodiscard]] double zoom() const;
 | |
|     void setZoom(double zoom);
 | |
| 
 | |
|     [[nodiscard]] double minimumZoom() const;
 | |
|     [[nodiscard]] double maximumZoom() const;
 | |
| 
 | |
|     [[nodiscard]] double bearing() const;
 | |
|     void setBearing(double degrees);
 | |
|     void setBearing(double degrees, const QPointF ¢er);
 | |
| 
 | |
|     [[nodiscard]] double pitch() const;
 | |
|     void setPitch(double pitch);
 | |
|     void pitchBy(double pitch);
 | |
| 
 | |
|     [[nodiscard]] NorthOrientation northOrientation() const;
 | |
|     void setNorthOrientation(NorthOrientation);
 | |
| 
 | |
|     [[nodiscard]] Coordinate coordinate() const;
 | |
|     void setCoordinate(const Coordinate &coordinate);
 | |
|     void setCoordinateZoom(const Coordinate &coordinate, double zoom);
 | |
| 
 | |
|     void jumpTo(const CameraOptions &);
 | |
| 
 | |
|     void setGestureInProgress(bool inProgress);
 | |
| 
 | |
|     void setTransitionOptions(qint64 duration, qint64 delay = 0);
 | |
| 
 | |
|     void addAnnotationIcon(const QString &name, const QImage &sprite);
 | |
| 
 | |
|     AnnotationID addAnnotation(const Annotation &annotation);
 | |
|     void updateAnnotation(AnnotationID id, const Annotation &annotation);
 | |
|     void removeAnnotation(AnnotationID id);
 | |
| 
 | |
|     bool setLayoutProperty(const QString &layerId, const QString &propertyName, const QVariant &value);
 | |
|     bool setPaintProperty(const QString &layerId, const QString &propertyName, const QVariant &value);
 | |
| 
 | |
|     [[nodiscard]] bool isFullyLoaded() const;
 | |
| 
 | |
|     void moveBy(const QPointF &offset);
 | |
|     void scaleBy(double scale, const QPointF ¢er = QPointF());
 | |
|     void rotateBy(const QPointF &first, const QPointF &second);
 | |
| 
 | |
|     void resize(const QSize &size);
 | |
| 
 | |
|     [[nodiscard]] QPointF pixelForCoordinate(const Coordinate &coordinate) const;
 | |
|     [[nodiscard]] Coordinate coordinateForPixel(const QPointF &pixel) const;
 | |
| 
 | |
|     [[nodiscard]] CoordinateZoom coordinateZoomForBounds(const Coordinate &sw, const Coordinate &ne) const;
 | |
|     [[nodiscard]] CoordinateZoom coordinateZoomForBounds(const Coordinate &sw,
 | |
|                                                          const Coordinate &ne,
 | |
|                                                          double bearing,
 | |
|                                                          double pitch);
 | |
| 
 | |
|     void setMargins(const QMargins &margins);
 | |
|     [[nodiscard]] QMargins margins() const;
 | |
| 
 | |
|     void addSource(const QString &id, const QVariantMap ¶ms);
 | |
|     bool sourceExists(const QString &id);
 | |
|     void updateSource(const QString &id, const QVariantMap ¶ms);
 | |
|     void removeSource(const QString &id);
 | |
| 
 | |
|     void addImage(const QString &id, const QImage &sprite);
 | |
|     void removeImage(const QString &id);
 | |
| 
 | |
|     void addCustomLayer(const QString &id,
 | |
|                         std::unique_ptr<CustomLayerHostInterface> host,
 | |
|                         const QString &before = QString());
 | |
|     void addLayer(const QString &id, const QVariantMap ¶ms, const QString &before = QString());
 | |
|     bool layerExists(const QString &id);
 | |
|     void removeLayer(const QString &id);
 | |
| 
 | |
|     [[nodiscard]] QVector<QString> layerIds() const;
 | |
| 
 | |
|     void setFilter(const QString &layerId, const QVariant &filter);
 | |
|     [[nodiscard]] QVariant getFilter(const QString &layerId) const;
 | |
|     // When rendering on a different thread,
 | |
|     // should be called on the render thread.
 | |
|     void createRenderer();
 | |
|     void destroyRenderer();
 | |
|     void setFramebufferObject(quint32 fbo, const QSize &size);
 | |
| 
 | |
| public slots:
 | |
|     void render();
 | |
|     void setConnectionEstablished();
 | |
| 
 | |
|     // Commit changes, load all the resources
 | |
|     // and renders the map when completed.
 | |
|     void startStaticRender();
 | |
| 
 | |
| signals:
 | |
|     void needsRendering();
 | |
|     void mapChanged(Map::MapChange);
 | |
|     void mapLoadingFailed(Map::MapLoadingFailure, const QString &reason);
 | |
|     void copyrightsChanged(const QString ©rightsHtml);
 | |
| 
 | |
|     void staticRenderFinished(const QString &error);
 | |
| 
 | |
| private:
 | |
|     Q_DISABLE_COPY(Map)
 | |
| 
 | |
|     std::unique_ptr<MapPrivate> d_ptr;
 | |
| };
 | |
| 
 | |
| } // namespace QMapLibre
 | |
| 
 | |
| Q_DECLARE_METATYPE(QMapLibre::Map::MapChange);
 | |
| Q_DECLARE_METATYPE(QMapLibre::Map::MapLoadingFailure);
 | |
| 
 | |
| #endif // QMAPLIBRE_MAP_H
 | |
| 
 |