summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/mbgl/map/map.hpp4
-rw-r--r--include/mbgl/util/geo.hpp14
-rw-r--r--include/mbgl/util/projection.hpp20
-rw-r--r--src/mbgl/map/map.cpp8
4 files changed, 24 insertions, 22 deletions
diff --git a/include/mbgl/map/map.hpp b/include/mbgl/map/map.hpp
index ea4073f4bf..823fcd4f21 100644
--- a/include/mbgl/map/map.hpp
+++ b/include/mbgl/map/map.hpp
@@ -135,8 +135,8 @@ public:
uint16_t getHeight() const;
// Projection
- void getWorldBoundsMeters(ProjectedMeters& sw, ProjectedMeters& ne) const;
- void getWorldBoundsLatLng(LatLng& sw, LatLng& ne) const;
+ MetersBounds getWorldBoundsMeters() const;
+ LatLngBounds getWorldBoundsLatLng() const;
double getMetersPerPixelAtLatitude(double lat, double zoom) const;
ProjectedMeters projectedMetersForLatLng(const LatLng&) const;
diff --git a/include/mbgl/util/geo.hpp b/include/mbgl/util/geo.hpp
index 7e2ad998b9..dd2b1567fc 100644
--- a/include/mbgl/util/geo.hpp
+++ b/include/mbgl/util/geo.hpp
@@ -54,7 +54,7 @@ struct LatLngBounds {
LatLng sw = {90, 180};
LatLng ne = {-90, -180};
- inline LatLngBounds(LatLng sw_ = {90, 180}, LatLng ne_ = {-90, -180})
+ inline LatLngBounds(const LatLng& sw_ = {90, 180}, const LatLng& ne_ = {-90, -180})
: sw(sw_), ne(ne_) {}
inline bool isValid() const {
@@ -91,6 +91,18 @@ struct LatLngBounds {
}
};
+struct MetersBounds {
+ ProjectedMeters sw;
+ ProjectedMeters ne;
+
+ inline MetersBounds(const ProjectedMeters& sw_, const ProjectedMeters& ne_)
+ : sw(sw_), ne(ne_) {}
+
+ inline bool isValid() const {
+ return sw.isValid() && ne.isValid();
+ }
+};
+
}
#endif
diff --git a/include/mbgl/util/projection.hpp b/include/mbgl/util/projection.hpp
index 9563900851..391e37dd34 100644
--- a/include/mbgl/util/projection.hpp
+++ b/include/mbgl/util/projection.hpp
@@ -11,24 +11,14 @@ namespace mbgl {
class Projection {
public:
- static inline void getWorldBoundsMeters(ProjectedMeters &sw, ProjectedMeters &ne) {
+ static inline MetersBounds getWorldBoundsMeters() {
const double d = util::EARTH_RADIUS_M * M_PI;
-
- sw.easting = -d;
- sw.northing = -d;
-
- ne.easting = d;
- ne.northing = d;
+ return { { -d, -d }, { d, d } };
}
- static inline void getWorldBoundsLatLng(LatLng &sw, LatLng &ne) {
- ProjectedMeters projectedMetersSW = ProjectedMeters();
- ProjectedMeters projectedMetersNE = ProjectedMeters();
-
- getWorldBoundsMeters(projectedMetersSW, projectedMetersNE);
-
- sw = latLngForProjectedMeters(projectedMetersSW);
- ne = latLngForProjectedMeters(projectedMetersNE);
+ static inline LatLngBounds getWorldBoundsLatLng() {
+ MetersBounds bounds = getWorldBoundsMeters();
+ return { latLngForProjectedMeters(bounds.sw), latLngForProjectedMeters(bounds.ne) };
}
static inline double getMetersPerPixelAtLatitude(const double lat, const double zoom) {
diff --git a/src/mbgl/map/map.cpp b/src/mbgl/map/map.cpp
index c83eb2e0e7..9845c89ae1 100644
--- a/src/mbgl/map/map.cpp
+++ b/src/mbgl/map/map.cpp
@@ -335,12 +335,12 @@ double Map::getPitch() const {
#pragma mark - Projection
-void Map::getWorldBoundsMeters(ProjectedMeters& sw, ProjectedMeters& ne) const {
- Projection::getWorldBoundsMeters(sw, ne);
+MetersBounds Map::getWorldBoundsMeters() const {
+ return Projection::getWorldBoundsMeters();
}
-void Map::getWorldBoundsLatLng(LatLng& sw, LatLng& ne) const {
- Projection::getWorldBoundsLatLng(sw, ne);
+LatLngBounds Map::getWorldBoundsLatLng() const {
+ return Projection::getWorldBoundsLatLng();
}
double Map::getMetersPerPixelAtLatitude(double lat, double zoom) const {