diff options
Diffstat (limited to 'src/mbgl/style/layers/symbol_layer.cpp')
-rw-r--r-- | src/mbgl/style/layers/symbol_layer.cpp | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/src/mbgl/style/layers/symbol_layer.cpp b/src/mbgl/style/layers/symbol_layer.cpp index 4ea138a7f5..c116d5b7e9 100644 --- a/src/mbgl/style/layers/symbol_layer.cpp +++ b/src/mbgl/style/layers/symbol_layer.cpp @@ -149,6 +149,22 @@ void SymbolLayer::setSymbolAvoidEdges(PropertyValue<bool> value) { baseImpl = std::move(impl_); observer->onLayerChanged(*this); } +PropertyValue<SymbolZOrderType> SymbolLayer::getDefaultSymbolZOrder() { + return SymbolZOrder::defaultValue(); +} + +PropertyValue<SymbolZOrderType> SymbolLayer::getSymbolZOrder() const { + return impl().layout.get<SymbolZOrder>(); +} + +void SymbolLayer::setSymbolZOrder(PropertyValue<SymbolZOrderType> value) { + if (value == getSymbolZOrder()) + return; + auto impl_ = mutableImpl(); + impl_->layout.get<SymbolZOrder>() = value; + baseImpl = std::move(impl_); + observer->onLayerChanged(*this); +} PropertyValue<bool> SymbolLayer::getDefaultIconAllowOverlap() { return IconAllowOverlap::defaultValue(); } @@ -1440,6 +1456,7 @@ optional<Error> SymbolLayer::setLayoutProperty(const std::string& name, const Co SymbolPlacement, SymbolSpacing, SymbolAvoidEdges, + SymbolZOrder, IconAllowOverlap, IconIgnorePlacement, IconOptional, @@ -1496,6 +1513,12 @@ optional<Error> SymbolLayer::setLayoutProperty(const std::string& name, const Co } break; + case util::hashFNV1a("symbol-z-order"): + if (name == "symbol-z-order") { + property = Property::SymbolZOrder; + } + break; + case util::hashFNV1a("icon-allow-overlap"): if (name == "icon-allow-overlap") { property = Property::IconAllowOverlap; @@ -1801,6 +1824,18 @@ optional<Error> SymbolLayer::setLayoutProperty(const std::string& name, const Co } + if (property == Property::SymbolZOrder) { + Error error; + optional<PropertyValue<SymbolZOrderType>> typedValue = convert<PropertyValue<SymbolZOrderType>>(value, error, false, false); + if (!typedValue) { + return error; + } + + setSymbolZOrder(*typedValue); + return nullopt; + + } + if (property == Property::IconRotationAlignment || property == Property::IconPitchAlignment || property == Property::TextPitchAlignment || property == Property::TextRotationAlignment) { Error error; optional<PropertyValue<AlignmentType>> typedValue = convert<PropertyValue<AlignmentType>>(value, error, false, false); |