[core] fix querying circles across tile boundaries
This commit is contained in:
committed by
Ansis Brammanis
parent
0767bf0686
commit
f7d20a5871
@@ -201,6 +201,17 @@ Bucket* GeometryTile::getBucket(const Layer::Impl& layer) const {
|
||||
return it->second.get();
|
||||
}
|
||||
|
||||
float GeometryTile::getQueryPadding(const std::vector<const RenderLayer*>& layers) {
|
||||
float queryPadding = 0;
|
||||
for (const RenderLayer* layer : layers) {
|
||||
auto bucket = getBucket(*layer->baseImpl);
|
||||
if (bucket) {
|
||||
queryPadding = std::max(queryPadding, bucket->getQueryRadius(*layer));
|
||||
}
|
||||
}
|
||||
return queryPadding;
|
||||
}
|
||||
|
||||
void GeometryTile::queryRenderedFeatures(
|
||||
std::unordered_map<std::string, std::vector<Feature>>& result,
|
||||
const GeometryCoordinates& queryGeometry,
|
||||
@@ -210,14 +221,7 @@ void GeometryTile::queryRenderedFeatures(
|
||||
|
||||
if (!getData()) return;
|
||||
|
||||
// Determine the additional radius needed factoring in property functions
|
||||
float additionalRadius = 0;
|
||||
for (const RenderLayer* layer : layers) {
|
||||
auto bucket = getBucket(*layer->baseImpl);
|
||||
if (bucket) {
|
||||
additionalRadius = std::max(additionalRadius, bucket->getQueryRadius(*layer));
|
||||
}
|
||||
}
|
||||
const float queryPadding = getQueryPadding(layers);
|
||||
|
||||
latestFeatureIndex->query(result,
|
||||
queryGeometry,
|
||||
@@ -227,7 +231,7 @@ void GeometryTile::queryRenderedFeatures(
|
||||
options,
|
||||
id.toUnwrapped(),
|
||||
layers,
|
||||
additionalRadius);
|
||||
queryPadding);
|
||||
}
|
||||
|
||||
void GeometryTile::querySourceFeatures(
|
||||
|
||||
Reference in New Issue
Block a user