[core] Do annotation longitude wrapping together with latitude clamping
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -91,8 +91,9 @@ void ShapeAnnotationImpl::updateTile(const CanonicalTileID& tileID, AnnotationTi
|
||||
for (auto& segment : shape.segments) {
|
||||
std::vector<geojsonvt::LonLat> 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 &&
|
||||
|
||||
Reference in New Issue
Block a user