summaryrefslogtreecommitdiff
path: root/src/mbgl/annotation/annotation_manager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mbgl/annotation/annotation_manager.cpp')
-rw-r--r--src/mbgl/annotation/annotation_manager.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/mbgl/annotation/annotation_manager.cpp b/src/mbgl/annotation/annotation_manager.cpp
index ada580eb84..41b82ba3bb 100644
--- a/src/mbgl/annotation/annotation_manager.cpp
+++ b/src/mbgl/annotation/annotation_manager.cpp
@@ -159,7 +159,14 @@ std::unique_ptr<AnnotationTileData> AnnotationManager::getTileData(const Canonic
AnnotationTileLayer& pointLayer = tileData->layers.emplace(PointLayerID, PointLayerID).first->second;
- symbolTree.query(bgi::intersects(LatLngBounds { tileID }),
+ // Simulate tile buffer by augmenting the bounds for each tile on a
+ // constant ratio i.e. 1/8:
+ static const double ratio = 1.0 / 8.0;
+ auto bounds = LatLngBounds { tileID };
+ auto offset = LatLng { (bounds.north() - bounds.south()) * ratio, (bounds.east() - bounds.west()) * ratio };
+ bounds.extend(LatLng { bounds.south() - offset.latitude, bounds.west() - offset.longitude });
+ bounds.extend(LatLng { bounds.north() + offset.latitude, bounds.east() + offset.longitude });
+ symbolTree.query(bgi::intersects(bounds),
boost::make_function_output_iterator([&](const auto& val){
val->updateLayer(tileID, pointLayer, state);
}));