#include #include #include #include #include namespace mbgl { using namespace style; RenderAnnotationSource::RenderAnnotationSource(Immutable impl_) : RenderSource(impl_) { assert(LayerManager::annotationsEnabled); tilePyramid.setObserver(this); } const AnnotationSource::Impl& RenderAnnotationSource::impl() const { return static_cast(*baseImpl); } bool RenderAnnotationSource::isLoaded() const { return tilePyramid.isLoaded(); } void RenderAnnotationSource::update(Immutable baseImpl_, const std::vector>& layers, const bool needsRendering, const bool needsRelayout, const TileParameters& parameters) { std::swap(baseImpl, baseImpl_); enabled = needsRendering; tilePyramid.update(layers, needsRendering, needsRelayout, parameters, SourceType::Annotations, util::tileSize, // Zoom level 16 is typically sufficient for annotations. // See https://github.com/mapbox/mapbox-gl-native/issues/10197 { 0, 16 }, optional {}, [&] (const OverscaledTileID& tileID) { return std::make_unique(tileID, parameters); }); } void RenderAnnotationSource::startRender(PaintParameters& parameters) { tilePyramid.startRender(parameters); } void RenderAnnotationSource::finishRender(PaintParameters& parameters) { tilePyramid.finishRender(parameters); } std::vector> RenderAnnotationSource::getRenderTiles() { return tilePyramid.getRenderTiles(); } std::unordered_map> RenderAnnotationSource::queryRenderedFeatures(const ScreenLineString& geometry, const TransformState& transformState, const std::vector& layers, const RenderedQueryOptions& options, const mat4& projMatrix) const { return tilePyramid.queryRenderedFeatures(geometry, transformState, layers, options, projMatrix); } std::vector RenderAnnotationSource::querySourceFeatures(const SourceQueryOptions&) const { return {}; } void RenderAnnotationSource::reduceMemoryUse() { tilePyramid.reduceMemoryUse(); } void RenderAnnotationSource::dumpDebugLogs() const { tilePyramid.dumpDebugLogs(); } } // namespace mbgl