diff options
Diffstat (limited to 'src/mbgl/annotation/annotation_manager.cpp')
-rw-r--r-- | src/mbgl/annotation/annotation_manager.cpp | 9 |
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); })); |