diff options
author | Mikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com> | 2020-03-24 15:35:41 +0200 |
---|---|---|
committer | Mikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com> | 2020-03-24 20:53:55 +0200 |
commit | 7234cb3968621f90b0afdf9dd50966923b5fa7ba (patch) | |
tree | ae648ec2edefddf955c3033604106608dea79b2b /src/mbgl/style | |
parent | 5f1847d9a2c928633f17243d66dee63af3793a4b (diff) | |
download | qtlocation-mapboxgl-7234cb3968621f90b0afdf9dd50966923b5fa7ba.tar.gz |
[core] Ability to set source-layer setProperty method
Diffstat (limited to 'src/mbgl/style')
-rw-r--r-- | src/mbgl/style/conversion/layer.cpp | 3 | ||||
-rw-r--r-- | src/mbgl/style/layer.cpp | 13 |
2 files changed, 16 insertions, 0 deletions
diff --git a/src/mbgl/style/conversion/layer.cpp b/src/mbgl/style/conversion/layer.cpp index 05689d29b1..8f29665957 100644 --- a/src/mbgl/style/conversion/layer.cpp +++ b/src/mbgl/style/conversion/layer.cpp @@ -68,6 +68,9 @@ optional<std::unique_ptr<Layer>> Converter<std::unique_ptr<Layer>>::operator()(c if (!setObjectMember(layer, value, "minzoom", error)) return nullopt; if (!setObjectMember(layer, value, "maxzoom", error)) return nullopt; if (!setObjectMember(layer, value, "filter", error)) return nullopt; + if (layer->getTypeInfo()->source == LayerTypeInfo::Source::Required) { + if (!setObjectMember(layer, value, "source-layer", error)) return nullopt; + } auto layoutValue = objectMember(value, "layout"); if (layoutValue) { diff --git a/src/mbgl/style/layer.cpp b/src/mbgl/style/layer.cpp index 748f52c109..5f682873b6 100644 --- a/src/mbgl/style/layer.cpp +++ b/src/mbgl/style/layer.cpp @@ -7,6 +7,7 @@ #include <mbgl/tile/tile.hpp> #include <mbgl/renderer/render_layer.hpp> +#include <mbgl/util/logging.hpp> namespace mbgl { namespace style { @@ -163,6 +164,18 @@ optional<conversion::Error> Layer::setProperty(const std::string& name, const co setFilter(*filter); return nullopt; } + } else if (name == "source-layer") { + if (auto sourceLayer = convert<std::string>(value, *error)) { + if (getTypeInfo()->source != LayerTypeInfo::Source::Required) { + Log::Warning(mbgl::Event::General, + "source-layer property cannot be applied to" + "the layer %s", + baseImpl->id.c_str()); + return nullopt; + } + setSourceLayer(*sourceLayer); + return nullopt; + } } return error; } |