From aa1a54c577a95082824f2a5a6bdf4948506fcaa9 Mon Sep 17 00:00:00 2001 From: John Firebaugh Date: Thu, 26 May 2016 15:59:23 -0700 Subject: [PATCH] [core] Do annotation longitude wrapping together with latitude clamping --- include/mbgl/annotation/shape_annotation.hpp | 16 +--------------- src/mbgl/annotation/shape_annotation_impl.cpp | 5 +++-- 2 files changed, 4 insertions(+), 17 deletions(-) diff --git a/include/mbgl/annotation/shape_annotation.hpp b/include/mbgl/annotation/shape_annotation.hpp index 6e3fe95dd..c5d4c42d8 100644 --- a/include/mbgl/annotation/shape_annotation.hpp +++ b/include/mbgl/annotation/shape_annotation.hpp @@ -31,24 +31,10 @@ public: std::string>; // creates an annotation whose type and properties are sourced from a style layer ShapeAnnotation(const AnnotationSegments& segments_, const Properties& properties_) - : segments(wrapCoordinates(segments_)), properties(properties_) {} + : segments(segments_), properties(properties_) {} const AnnotationSegments segments; const Properties properties; - -private: - AnnotationSegments wrapCoordinates(const AnnotationSegments& segments_) { - AnnotationSegments wrappedSegments; - // Wrap all segments coordinates. - for (const auto& segment_ : segments_) { - AnnotationSegment wrappedSegment; - for (const auto& latLng_ : segment_) { - wrappedSegment.push_back(latLng_.wrapped()); - } - wrappedSegments.push_back(wrappedSegment); - } - return wrappedSegments; - } }; } // namespace mbgl diff --git a/src/mbgl/annotation/shape_annotation_impl.cpp b/src/mbgl/annotation/shape_annotation_impl.cpp index 1da2e4ea9..76a237bfc 100644 --- a/src/mbgl/annotation/shape_annotation_impl.cpp +++ b/src/mbgl/annotation/shape_annotation_impl.cpp @@ -91,8 +91,9 @@ void ShapeAnnotationImpl::updateTile(const CanonicalTileID& tileID, AnnotationTi for (auto& segment : shape.segments) { std::vector points; for (auto& latLng : segment) { - const double constrainedLatitude = util::clamp(latLng.latitude, -util::LATITUDE_MAX, util::LATITUDE_MAX); - points.push_back(geojsonvt::LonLat(latLng.longitude, constrainedLatitude)); + const double wrappedLongitude = util::wrap(latLng.longitude, -util::LONGITUDE_MAX, util::LONGITUDE_MAX); + const double clampedLatitude = util::clamp(latLng.latitude, -util::LATITUDE_MAX, util::LATITUDE_MAX); + points.push_back(geojsonvt::LonLat(wrappedLongitude, clampedLatitude)); } if (type == geojsonvt::ProjectedFeatureType::Polygon &&