summaryrefslogtreecommitdiff
path: root/src/mbgl/style/conversion/source.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mbgl/style/conversion/source.cpp')
-rw-r--r--src/mbgl/style/conversion/source.cpp21
1 files changed, 19 insertions, 2 deletions
diff --git a/src/mbgl/style/conversion/source.cpp b/src/mbgl/style/conversion/source.cpp
index 5ecbd3b474..de41adc89f 100644
--- a/src/mbgl/style/conversion/source.cpp
+++ b/src/mbgl/style/conversion/source.cpp
@@ -86,8 +86,25 @@ static optional<std::unique_ptr<Source>> convertVectorSource(const std::string&
if (!urlOrTileset) {
return nullopt;
}
-
- return { std::make_unique<VectorSource>(id, std::move(*urlOrTileset)) };
+ auto maxzoomValue = objectMember(value, "maxzoom");
+ optional<float> maxzoom;
+ if (maxzoomValue) {
+ maxzoom = toNumber(*maxzoomValue);
+ if (!maxzoom || *maxzoom < 0 || *maxzoom > std::numeric_limits<uint8_t>::max()) {
+ error.message = "invalid maxzoom";
+ return nullopt;
+ }
+ }
+ auto minzoomValue = objectMember(value, "minzoom");
+ optional<float> minzoom;
+ if (minzoomValue) {
+ minzoom = toNumber(*minzoomValue);
+ if (!minzoom || *minzoom < 0 || *minzoom > std::numeric_limits<uint8_t>::max()) {
+ error.message = "invalid minzoom";
+ return nullopt;
+ }
+ }
+ return {std::make_unique<VectorSource>(id, std::move(*urlOrTileset), std::move(maxzoom), std::move(minzoom))};
}
static optional<std::unique_ptr<Source>> convertGeoJSONSource(const std::string& id,