#pragma once #include #include #include #include "layer.hpp" #include #include #include namespace mbgl { namespace android { /** * @brief A singleton class forwarding calls to the corresponding \c JavaLayerPeerFactory instance. */ class LayerManagerAndroid final : public mbgl::LayerManager { public: ~LayerManagerAndroid() final; static LayerManagerAndroid* get() noexcept; jni::Local> createJavaLayerPeer(jni::JNIEnv&, mbgl::Map&, mbgl::style::Layer&); jni::Local> createJavaLayerPeer(jni::JNIEnv& env, mbgl::Map& map, std::unique_ptr); void registerNative(jni::JNIEnv&); private: LayerManagerAndroid(); void addLayerType(std::unique_ptr); JavaLayerPeerFactory* getPeerFactory(const mbgl::style::LayerTypeInfo*); // mbgl::LayerManager overrides. LayerFactory* getFactory(const std::string& type) noexcept final; LayerFactory* getFactory(const mbgl::style::LayerTypeInfo* info) noexcept final; std::vector> factories; std::map typeToFactory; }; } // namespace android } // namespace mbgl