diff options
Diffstat (limited to 'include/mbgl/map')
-rw-r--r-- | include/mbgl/map/map.hpp | 19 | ||||
-rw-r--r-- | include/mbgl/map/transform.hpp | 12 | ||||
-rw-r--r-- | include/mbgl/map/transform_state.hpp | 12 |
3 files changed, 32 insertions, 11 deletions
diff --git a/include/mbgl/map/map.hpp b/include/mbgl/map/map.hpp index ae0228544e..844970bb8f 100644 --- a/include/mbgl/map/map.hpp +++ b/include/mbgl/map/map.hpp @@ -2,9 +2,12 @@ #define MBGL_MAP_MAP #include <mbgl/map/transform.hpp> +#include <mbgl/util/geo.hpp> +#include <mbgl/util/projection.hpp> #include <mbgl/util/noncopyable.hpp> #include <mbgl/util/uv.hpp> #include <mbgl/util/ptr.hpp> +#include <mbgl/util/vec.hpp> #include <cstdint> #include <atomic> @@ -94,8 +97,8 @@ public: // Position void moveBy(double dx, double dy, std::chrono::steady_clock::duration duration = std::chrono::steady_clock::duration::zero()); - void setLonLat(double lon, double lat, std::chrono::steady_clock::duration duration = std::chrono::steady_clock::duration::zero()); - void getLonLat(double &lon, double &lat) const; + void setLatLng(LatLng latLng, std::chrono::steady_clock::duration duration = std::chrono::steady_clock::duration::zero()); + inline const LatLng getLatLng() const { return state.getLatLng(); } void startPanning(); void stopPanning(); void resetPosition(); @@ -106,8 +109,7 @@ public: double getScale() const; void setZoom(double zoom, std::chrono::steady_clock::duration duration = std::chrono::steady_clock::duration::zero()); double getZoom() const; - void setLonLatZoom(double lon, double lat, double zoom, std::chrono::steady_clock::duration duration = std::chrono::steady_clock::duration::zero()); - void getLonLatZoom(double &lon, double &lat, double &zoom) const; + void setLatLngZoom(LatLng latLng, double zoom, std::chrono::steady_clock::duration duration = std::chrono::steady_clock::duration::zero()); void resetZoom(); void startScaling(); void stopScaling(); @@ -127,6 +129,15 @@ public: void setAccessToken(const std::string &token); const std::string &getAccessToken() const; + // Projection + inline void getWorldBoundsMeters(ProjectedMeters &sw, ProjectedMeters &ne) const { Projection::getWorldBoundsMeters(sw, ne); } + inline void getWorldBoundsLatLng(LatLng &sw, LatLng &ne) const { Projection::getWorldBoundsLatLng(sw, ne); } + inline double getMetersPerPixelAtLatitude(const double lat, const double zoom) const { return Projection::getMetersPerPixelAtLatitude(lat, zoom); } + inline const ProjectedMeters projectedMetersForLatLng(const LatLng latLng) const { return Projection::projectedMetersForLatLng(latLng); } + inline const LatLng latLngForProjectedMeters(const ProjectedMeters projectedMeters) const { return Projection::latLngForProjectedMeters(projectedMeters); } + inline const vec2<double> pixelForLatLng(const LatLng latLng) const { return state.pixelForLatLng(latLng); } + inline const LatLng latLngForPixel(const vec2<double> pixel) const { return state.latLngForPixel(pixel); } + // Debug void setDebug(bool value); void toggleDebug(); diff --git a/include/mbgl/map/transform.hpp b/include/mbgl/map/transform.hpp index 246270da13..94bea11a45 100644 --- a/include/mbgl/map/transform.hpp +++ b/include/mbgl/map/transform.hpp @@ -2,7 +2,9 @@ #define MBGL_MAP_TRANSFORM #include <mbgl/map/transform_state.hpp> +#include <mbgl/util/geo.hpp> #include <mbgl/util/noncopyable.hpp> +#include <mbgl/util/vec.hpp> #include <cstdint> #include <cmath> @@ -26,10 +28,9 @@ public: // Position void moveBy(double dx, double dy, std::chrono::steady_clock::duration duration = std::chrono::steady_clock::duration::zero()); - void setLonLat(double lon, double lat, std::chrono::steady_clock::duration duration = std::chrono::steady_clock::duration::zero()); - void setLonLatZoom(double lon, double lat, double zoom, std::chrono::steady_clock::duration duration = std::chrono::steady_clock::duration::zero()); - void getLonLat(double& lon, double& lat) const; - void getLonLatZoom(double& lon, double& lat, double& zoom) const; + void setLatLng(LatLng latLng, std::chrono::steady_clock::duration duration = std::chrono::steady_clock::duration::zero()); + void setLatLngZoom(LatLng latLng, double zoom, std::chrono::steady_clock::duration duration = std::chrono::steady_clock::duration::zero()); + inline const LatLng getLatLng() const { return current.getLatLng(); } void startPanning(); void stopPanning(); @@ -91,9 +92,6 @@ private: const double min_scale = std::pow(2, 0); const double max_scale = std::pow(2, 18); - // cache values for spherical mercator math - double Bc, Cc; - std::forward_list<util::ptr<util::transition>> transitions; util::ptr<util::transition> scale_timeout; util::ptr<util::transition> rotate_timeout; diff --git a/include/mbgl/map/transform_state.hpp b/include/mbgl/map/transform_state.hpp index 6dc34bd873..5f2dfa49e4 100644 --- a/include/mbgl/map/transform_state.hpp +++ b/include/mbgl/map/transform_state.hpp @@ -4,6 +4,8 @@ #include <mbgl/map/tile.hpp> #include <mbgl/util/mat4.hpp> +#include <mbgl/util/geo.hpp> +#include <mbgl/util/vec.hpp> #include <cstdint> #include <array> @@ -34,6 +36,9 @@ public: std::array<float, 2> locationCoordinate(float lon, float lat) const; void getLonLat(double &lon, double &lat) const; + // Position + const LatLng getLatLng() const; + // Zoom float getNormalizedZoom() const; double getZoom() const; @@ -44,6 +49,10 @@ public: // Rotation float getAngle() const; + // Projection + const vec2<double> pixelForLatLng(const LatLng latLng) const; + const LatLng latLngForPixel(const vec2<double> pixel) const; + // Changing bool isChanging() const; @@ -61,6 +70,9 @@ private: // map scale factor float pixelRatio = 0; + // cache values for spherical mercator math + double Bc, Cc; + // animation state bool rotating = false; bool scaling = false; |