diff --git a/src/providers/wms/qgswmscapabilities.cpp b/src/providers/wms/qgswmscapabilities.cpp index fc3e1a90381..c1f8aca01c6 100644 --- a/src/providers/wms/qgswmscapabilities.cpp +++ b/src/providers/wms/qgswmscapabilities.cpp @@ -2157,9 +2157,25 @@ const QgsWmtsTileMatrix *QgsWmtsTileMatrixSet::findOtherResolution( double tres, QMap::const_iterator it = tileMatrices.constFind( tres ); if ( it == tileMatrices.constEnd() ) return nullptr; - it += offset; - if ( it == tileMatrices.constEnd() ) - return nullptr; + while ( 1 ) + { + if ( offset > 0 ) + { + ++it; + --offset; + } + else if ( offset < 0 ) + { + if ( it == tileMatrices.constBegin() ) + return nullptr; + --it; + ++offset; + } + else + break; + if ( it == tileMatrices.constEnd() ) + return nullptr; + } return &it.value(); }