diff options
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; } |