summaryrefslogtreecommitdiff
path: root/src/mbgl/style
diff options
context:
space:
mode:
authorMikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com>2020-03-24 15:35:41 +0200
committerMikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com>2020-03-24 20:53:55 +0200
commit7234cb3968621f90b0afdf9dd50966923b5fa7ba (patch)
treeae648ec2edefddf955c3033604106608dea79b2b /src/mbgl/style
parent5f1847d9a2c928633f17243d66dee63af3793a4b (diff)
downloadqtlocation-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.cpp3
-rw-r--r--src/mbgl/style/layer.cpp13
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;
}