diff options
author | Gali Nelle <galinelle.mapbox@gmail.com> | 2020-03-25 17:35:44 +0200 |
---|---|---|
committer | galinelle <paolo.angelelli@mapbox.com> | 2020-04-08 14:00:26 +0300 |
commit | 9a55c282fecfdd76b1acdf64cef0ce2ed99472ef (patch) | |
tree | d2c412ef6ac4782d28cea66b761deeb5fff10cc3 /src/mbgl/layermanager | |
parent | 7f53cec17b047a1804952a8da543dc10321e1dae (diff) | |
download | qtlocation-mapboxgl-9a55c282fecfdd76b1acdf64cef0ce2ed99472ef.tar.gz |
Add LocationIndicatorLayer
New key is "G" in mbgl-glfw, cycling between no puck, centered
in the viewport and positioned in Tokyo.
Diffstat (limited to 'src/mbgl/layermanager')
-rw-r--r-- | src/mbgl/layermanager/layer_manager.cpp | 9 | ||||
-rw-r--r-- | src/mbgl/layermanager/location_indicator_layer_factory.cpp | 25 |
2 files changed, 31 insertions, 3 deletions
diff --git a/src/mbgl/layermanager/layer_manager.cpp b/src/mbgl/layermanager/layer_manager.cpp index 1e2074cd70..377d3acce4 100644 --- a/src/mbgl/layermanager/layer_manager.cpp +++ b/src/mbgl/layermanager/layer_manager.cpp @@ -14,14 +14,17 @@ namespace mbgl { std::unique_ptr<style::Layer> LayerManager::createLayer( const std::string& type, const std::string& id, const style::conversion::Convertible& value, style::conversion::Error& error) noexcept { - if (LayerFactory* factory = getFactory(type)) { + LayerFactory* factory = getFactory(type); + if (factory) { auto layer = factory->createLayer(id, value); if (!layer) { - error.message = "Error parsing a layer of type: " + type; + error.message = "Error parsing layer " + id + " of type: " + type; } return layer; + } else { + error.message = "Null factory for type: " + type; } - error.message = "Unsupported layer type: " + type; + error.message = "Unsupported layer type! " + error.message; return nullptr; } diff --git a/src/mbgl/layermanager/location_indicator_layer_factory.cpp b/src/mbgl/layermanager/location_indicator_layer_factory.cpp new file mode 100644 index 0000000000..67f7280e93 --- /dev/null +++ b/src/mbgl/layermanager/location_indicator_layer_factory.cpp @@ -0,0 +1,25 @@ +#include <mbgl/layermanager/location_indicator_layer_factory.hpp> + +#include <mbgl/renderer/layers/render_location_indicator_layer.hpp> +#include <mbgl/style/layers/location_indicator_layer.hpp> +#include <mbgl/style/layers/location_indicator_layer_impl.hpp> + +namespace mbgl { + +const style::LayerTypeInfo* LocationIndicatorLayerFactory::getTypeInfo() const noexcept { + return style::LocationIndicatorLayer::Impl::staticTypeInfo(); +} + +std::unique_ptr<style::Layer> LocationIndicatorLayerFactory::createLayer( + const std::string& id, const style::conversion::Convertible&) noexcept { + return std::unique_ptr<style::Layer>(new style::LocationIndicatorLayer(id)); +} + +std::unique_ptr<RenderLayer> LocationIndicatorLayerFactory::createRenderLayer( + Immutable<style::Layer::Impl> impl) noexcept { + assert(impl->getTypeInfo() == getTypeInfo()); + return std::make_unique<RenderLocationIndicatorLayer>( + staticImmutableCast<style::LocationIndicatorLayer::Impl>(impl)); +} + +} // namespace mbgl |