diff --git a/src/mbgl/layout/symbol_projection.cpp b/src/mbgl/layout/symbol_projection.cpp index 745c1c1d77f..4a48af3046f 100644 --- a/src/mbgl/layout/symbol_projection.cpp +++ b/src/mbgl/layout/symbol_projection.cpp @@ -410,8 +410,16 @@ namespace mbgl { const float pitchScaledFontSize = pitchWithMap ? fontSize * perspectiveRatio : fontSize / perspectiveRatio; - - const Point anchorPoint = project(placedSymbol.anchorPoint, labelPlaneMatrix).first; + + const auto transformedTileAnchor = project(placedSymbol.anchorPoint, labelPlaneMatrix); + + // Skip labels behind the camera + if (transformedTileAnchor.second <= 0.0) { + hideGlyphs(placedSymbol.glyphOffsets.size(), dynamicVertexArray); + continue; + } + + const Point anchorPoint = transformedTileAnchor.first; PlacementResult placeUnflipped = placeGlyphsAlongLine(placedSymbol, pitchScaledFontSize, false /*unflipped*/, keepUpright, posMatrix, labelPlaneMatrix, glCoordMatrix, dynamicVertexArray, anchorPoint, state.getSize().aspectRatio());