summaryrefslogtreecommitdiff
path: root/src/mbgl/tile/vector_tile_data.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mbgl/tile/vector_tile_data.cpp')
-rw-r--r--src/mbgl/tile/vector_tile_data.cpp15
1 files changed, 8 insertions, 7 deletions
diff --git a/src/mbgl/tile/vector_tile_data.cpp b/src/mbgl/tile/vector_tile_data.cpp
index 2d47515e0f..926e596080 100644
--- a/src/mbgl/tile/vector_tile_data.cpp
+++ b/src/mbgl/tile/vector_tile_data.cpp
@@ -34,14 +34,15 @@ FeatureIdentifier VectorTileFeature::getID() const {
return feature.getID();
}
-GeometryCollection VectorTileFeature::getGeometries() const {
- const float scale = float(util::EXTENT) / feature.getExtent();
- auto lines = feature.getGeometries<GeometryCollection>(scale);
- if (feature.getVersion() >= 2 || feature.getType() != mapbox::vector_tile::GeomType::POLYGON) {
- return lines;
- } else {
- return fixupPolygons(lines);
+const GeometryCollection& VectorTileFeature::getGeometries() const {
+ if (!lines) {
+ const float scale = float(util::EXTENT) / feature.getExtent();
+ lines = feature.getGeometries<GeometryCollection>(scale);
+ if (feature.getVersion() < 2 && feature.getType() == mapbox::vector_tile::GeomType::POLYGON) {
+ lines = fixupPolygons(*lines);
+ }
}
+ return *lines;
}
VectorTileLayer::VectorTileLayer(std::shared_ptr<const std::string> data_,