1#pragma once
2
3#include <mbgl/util/optional.hpp>
4#include <mbgl/util/chrono.hpp>
5#include <mbgl/map/map_observer.hpp>
6#include <mbgl/map/mode.hpp>
7#include <mbgl/util/noncopyable.hpp>
8#include <mbgl/util/size.hpp>
9#include <mbgl/annotation/annotation.hpp>
10#include <mbgl/map/camera.hpp>
11#include <mbgl/util/geometry.hpp>
12
13#include <cstdint>
14#include <string>
15#include <functional>
16#include <vector>
17#include <memory>
18
19namespace mbgl {
20
21class FileSource;
22class Scheduler;
23class RendererFrontend;
24
25namespace style {
26class Image;
27class Style;
28} // namespace style
29
30class Map : private util::noncopyable {
31public:
32 explicit Map(RendererFrontend&,
33 MapObserver&,
34 Size size,
35 float pixelRatio,
36 FileSource&,
37 Scheduler&,
38 MapMode mapMode = MapMode::Continuous,
39 ConstrainMode constrainMode = ConstrainMode::HeightOnly,
40 ViewportMode viewportMode = ViewportMode::Default);
41 ~Map();
42
43 // Register a callback that will get called (on the render thread) when all resources have
44 // been loaded and a complete render occurs.
45 using StillImageCallback = std::function<void (std::exception_ptr)>;
46 void renderStill(StillImageCallback);
47 void renderStill(const CameraOptions&, MapDebugOptions, StillImageCallback);
48
49 // Triggers a repaint.
50 void triggerRepaint();
51
52 style::Style& getStyle();
53 const style::Style& getStyle() const;
54
55 void setStyle(std::unique_ptr<style::Style>);
56
57 // Transition
58 void cancelTransitions();
59 void setGestureInProgress(bool);
60 bool isGestureInProgress() const;
61 bool isRotating() const;
62 bool isScaling() const;
63 bool isPanning() const;
64
65 // Camera
66 CameraOptions getCameraOptions(const EdgeInsets&) const;
67 void jumpTo(const CameraOptions&);
68 void easeTo(const CameraOptions&, const AnimationOptions&);
69 void flyTo(const CameraOptions&, const AnimationOptions&);
70 CameraOptions cameraForLatLngBounds(const LatLngBounds&, const EdgeInsets&, optional<double> bearing = {}, optional<double> pitch = {}) const;
71 CameraOptions cameraForLatLngs(const std::vector<LatLng>&, const EdgeInsets&, optional<double> bearing = {}, optional<double> pitch = {}) const;
72 CameraOptions cameraForGeometry(const Geometry<double>&, const EdgeInsets&, optional<double> bearing = {}, optional<double> pitch = {}) const;
73 LatLngBounds latLngBoundsForCamera(const CameraOptions&) const;
74
75 // Position
76 void moveBy(const ScreenCoordinate&, const AnimationOptions& = {});
77 void setLatLng(const LatLng&, optional<ScreenCoordinate>, const AnimationOptions& = {});
78 void setLatLng(const LatLng&, const EdgeInsets&, const AnimationOptions& = {});
79 void setLatLng(const LatLng&, const AnimationOptions& = {});
80 LatLng getLatLng(const EdgeInsets& = {}) const;
81 void resetPosition(const EdgeInsets& = {});
82
83 // Zoom
84 void setZoom(double zoom, const AnimationOptions& = {});
85 void setZoom(double zoom, optional<ScreenCoordinate>, const AnimationOptions& = {});
86 void setZoom(double zoom, const EdgeInsets&, const AnimationOptions& = {});
87 double getZoom() const;
88 void setLatLngZoom(const LatLng&, double zoom, const AnimationOptions& = {});
89 void setLatLngZoom(const LatLng&, double zoom, const EdgeInsets&, const AnimationOptions& = {});
90 void resetZoom();
91
92 // Bounds
93 void setLatLngBounds(optional<LatLngBounds>);
94 optional<LatLngBounds> getLatLngBounds() const;
95 void setMinZoom(double);
96 double getMinZoom() const;
97 void setMaxZoom(double);
98 double getMaxZoom() const;
99 void setMinPitch(double);
100 double getMinPitch() const;
101 void setMaxPitch(double);
102 double getMaxPitch() const;
103
104 // Rotation
105 void rotateBy(const ScreenCoordinate& first, const ScreenCoordinate& second, const AnimationOptions& = {});
106 void setBearing(double degrees, const AnimationOptions& = {});
107 void setBearing(double degrees, optional<ScreenCoordinate>, const AnimationOptions& = {});
108 void setBearing(double degrees, const EdgeInsets&, const AnimationOptions& = {});
109 double getBearing() const;
110 void resetNorth(const AnimationOptions& = {{mbgl::Milliseconds(500)}});
111 void resetNorth(const EdgeInsets&, const AnimationOptions& = {{mbgl::Milliseconds(500)}});
112
113 // Pitch
114 void setPitch(double pitch, const AnimationOptions& = {});
115 void setPitch(double pitch, optional<ScreenCoordinate>, const AnimationOptions& = {});
116 double getPitch() const;
117
118 // North Orientation
119 void setNorthOrientation(NorthOrientation);
120 NorthOrientation getNorthOrientation() const;
121
122 // Constrain mode
123 void setConstrainMode(ConstrainMode);
124 ConstrainMode getConstrainMode() const;
125
126 // Viewport mode
127 void setViewportMode(ViewportMode);
128 ViewportMode getViewportMode() const;
129
130 // Projection mode
131 void setAxonometric(bool);
132 bool getAxonometric() const;
133 void setXSkew(double ySkew);
134 double getXSkew() const;
135 void setYSkew(double ySkew);
136 double getYSkew() const;
137
138 // Size
139 void setSize(Size);
140 Size getSize() const;
141
142 // Projection
143 ScreenCoordinate pixelForLatLng(const LatLng&) const;
144 LatLng latLngForPixel(const ScreenCoordinate&) const;
145
146 // Annotations
147 void addAnnotationImage(std::unique_ptr<style::Image>);
148 void removeAnnotationImage(const std::string&);
149 double getTopOffsetPixelsForAnnotationImage(const std::string&);
150
151 AnnotationID addAnnotation(const Annotation&);
152 void updateAnnotation(AnnotationID, const Annotation&);
153 void removeAnnotation(AnnotationID);
154
155 // Tile prefetching
156 //
157 // When loading a map, if `PrefetchZoomDelta` is set to any number greater than 0, the map will
158 // first request a tile for `zoom = getZoom() - delta` in a attempt to display a full map at
159 // lower resolution as quick as possible. It will get clamped at the tile source minimum zoom.
160 // The default `delta` is 4.
161 void setPrefetchZoomDelta(uint8_t delta);
162 uint8_t getPrefetchZoomDelta() const;
163
164 // Debug
165 void setDebug(MapDebugOptions);
166 void cycleDebugOptions();
167 MapDebugOptions getDebug() const;
168
169 bool isFullyLoaded() const;
170 void dumpDebugLogs() const;
171
172private:
173 class Impl;
174 const std::unique_ptr<Impl> impl;
175};
176
177} // namespace mbgl
178

source code of qtlocation/src/3rdparty/mapbox-gl-native/include/mbgl/map/map.hpp