diff --git a/include/llmr/style/style_bucket.hpp b/include/llmr/style/style_bucket.hpp index c8529fdd2..0f3824211 100644 --- a/include/llmr/style/style_bucket.hpp +++ b/include/llmr/style/style_bucket.hpp @@ -12,6 +12,8 @@ namespace llmr { +class Source; + class StyleBucketFill { public: WindingType winding = WindingType::Default; @@ -74,6 +76,7 @@ public: std::string name; std::shared_ptr style_source; + std::shared_ptr source; std::string source_layer; FilterExpression filter; StyleBucketRender render = std::false_type(); diff --git a/src/map/map.cpp b/src/map/map.cpp index db81700c4..3443cf78e 100644 --- a/src/map/map.cpp +++ b/src/map/map.cpp @@ -183,7 +183,7 @@ std::string Map::getStyleJSON() const { return styleJSON; } -void Map::setAccessToken( std::string access_token) { +void Map::setAccessToken(std::string access_token) { accessToken.swap(access_token); } @@ -426,7 +426,8 @@ void Map::updateSources(const std::shared_ptr &group) { if (!layer) continue; if (layer->bucket) { if (layer->bucket->style_source) { - activeSources.emplace(std::make_shared(*layer->bucket->style_source, this->getAccessToken())); + auto ret = activeSources.emplace(std::make_shared(*layer->bucket->style_source, this->getAccessToken())); + layer->bucket->source = *ret.first; } } else if (layer->layers) { updateSources(layer->layers); @@ -659,8 +660,6 @@ void Map::renderLayer(std::shared_ptr layer_desc, RenderPass pass) { << layer_desc->type << ")" << std::endl; } - // TODO: THIS IS BAD, FIXME - Source source(*layer_desc->bucket->style_source, this->getAccessToken()); - source.render(painter, layer_desc); + layer_desc->bucket->source->render(painter, layer_desc); } }