Check for matching source when parsing tiles (fixes #1698)
This commit is contained in:
@@ -20,9 +20,10 @@ LiveTileData::LiveTileData(const TileID& id_,
|
||||
: TileData(id_),
|
||||
worker(style_.workers),
|
||||
tileWorker(id_,
|
||||
source_.source_id,
|
||||
source_.max_zoom,
|
||||
style_,
|
||||
style_.layers,
|
||||
source_.max_zoom,
|
||||
state,
|
||||
std::make_unique<CollisionTile>(id_.z, 4096,
|
||||
source_.tile_size * id.overscaling,
|
||||
|
||||
@@ -11,16 +11,18 @@
|
||||
|
||||
using namespace mbgl;
|
||||
|
||||
TileWorker::TileWorker(const TileID& id_,
|
||||
TileWorker::TileWorker(TileID id_,
|
||||
std::string sourceID_,
|
||||
const uint16_t maxZoom_,
|
||||
Style& style_,
|
||||
std::vector<util::ptr<StyleLayer>> layers_,
|
||||
const uint16_t maxZoom_,
|
||||
const std::atomic<TileData::State>& state_,
|
||||
std::unique_ptr<CollisionTile> collision_)
|
||||
: layers(std::move(layers_)),
|
||||
style(style_),
|
||||
id(id_),
|
||||
sourceID(sourceID_),
|
||||
maxZoom(maxZoom_),
|
||||
style(style_),
|
||||
state(state_),
|
||||
collision(std::move(collision_)) {
|
||||
assert(style.sprite);
|
||||
@@ -121,6 +123,8 @@ void TileWorker::parseLayer(const StyleLayer& layer, const GeometryTile& geometr
|
||||
const StyleBucket& styleBucket = *layer.bucket;
|
||||
|
||||
// Skip this bucket if we are to not render this
|
||||
if (styleBucket.source != sourceID)
|
||||
return;
|
||||
if (id.z < std::floor(styleBucket.min_zoom) && std::floor(styleBucket.min_zoom) < maxZoom)
|
||||
return;
|
||||
if (id.z >= std::ceil(styleBucket.max_zoom))
|
||||
|
||||
@@ -31,10 +31,11 @@ using TileParseResult = mapbox::util::variant<
|
||||
|
||||
class TileWorker : public util::noncopyable {
|
||||
public:
|
||||
TileWorker(const TileID&,
|
||||
TileWorker(TileID,
|
||||
std::string sourceID,
|
||||
uint16_t maxZoom,
|
||||
Style&,
|
||||
std::vector<util::ptr<StyleLayer>>,
|
||||
const uint16_t maxZoom,
|
||||
const std::atomic<TileData::State>&,
|
||||
std::unique_ptr<CollisionTile>);
|
||||
~TileWorker();
|
||||
@@ -57,10 +58,11 @@ private:
|
||||
template <class Bucket>
|
||||
void addBucketGeometries(Bucket&, const GeometryTileLayer&, const FilterExpression&);
|
||||
|
||||
Style& style;
|
||||
|
||||
const TileID id;
|
||||
const std::string sourceID;
|
||||
const uint16_t maxZoom;
|
||||
|
||||
Style& style;
|
||||
const std::atomic<TileData::State>& state;
|
||||
|
||||
bool partialParse = false;
|
||||
|
||||
@@ -20,9 +20,10 @@ VectorTileData::VectorTileData(const TileID& id_,
|
||||
: TileData(id_),
|
||||
worker(style_.workers),
|
||||
tileWorker(id_,
|
||||
source_.source_id,
|
||||
source_.max_zoom,
|
||||
style_,
|
||||
style_.layers,
|
||||
source_.max_zoom,
|
||||
state,
|
||||
std::make_unique<CollisionTile>(id_.z, 4096,
|
||||
source_.tile_size * id.overscaling,
|
||||
|
||||
Reference in New Issue
Block a user