[core] Layer::setProperty() can set min/max zoom and filter
This commit is contained in:
@@ -148,6 +148,8 @@ protected:
|
||||
|
||||
private:
|
||||
optional<conversion::Error> setVisibility(const conversion::Convertible& value);
|
||||
optional<conversion::Error> setMinZoom(const conversion::Convertible& value);
|
||||
optional<conversion::Error> setMaxZoom(const conversion::Convertible& value);
|
||||
};
|
||||
|
||||
} // namespace style
|
||||
|
||||
@@ -144,10 +144,27 @@ void Layer::setObserver(LayerObserver* observer_) {
|
||||
}
|
||||
|
||||
optional<conversion::Error> Layer::setProperty(const std::string& name, const conversion::Convertible& value) {
|
||||
optional<conversion::Error> error = setPropertyInternal(name, value);
|
||||
using namespace conversion;
|
||||
optional<Error> error = setPropertyInternal(name, value);
|
||||
if (!error) return error; // Successfully set by the derived class implementation.
|
||||
if (name == "visibility") return setVisibility(value);
|
||||
return error; // Must be Error{"layer doesn't support this property"}.
|
||||
if (name == "minzoom") {
|
||||
if (auto zoom = convert<float>(value, *error)) {
|
||||
setMinZoom(*zoom);
|
||||
return nullopt;
|
||||
}
|
||||
} else if (name == "maxzoom") {
|
||||
if (auto zoom = convert<float>(value, *error)) {
|
||||
setMaxZoom(*zoom);
|
||||
return nullopt;
|
||||
}
|
||||
} else if (name == "filter") {
|
||||
if (auto filter = convert<Filter>(value, *error)) {
|
||||
setFilter(*filter);
|
||||
return nullopt;
|
||||
}
|
||||
}
|
||||
return error;
|
||||
}
|
||||
|
||||
optional<conversion::Error> Layer::setVisibility(const conversion::Convertible& value) {
|
||||
|
||||
Reference in New Issue
Block a user