Skip to content

Commit 2e1abda

Browse files
committed
Added {q} for XYZ tile layers to support Bing maps
1 parent 75269d6 commit 2e1abda

File tree

1 file changed

+23
-0
lines changed

1 file changed

+23
-0
lines changed

src/providers/wms/qgswmsprovider.cpp

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1097,6 +1097,25 @@ void QgsWmsProvider::createTileRequestsWMTS( const QgsWmtsTileMatrix* tm, const
10971097
}
10981098

10991099

1100+
// support for Bing Maps tile system
1101+
// https://msdn.microsoft.com/en-us/library/bb259689.aspx
1102+
static QString _tile2quadkey( int tileX, int tileY, int z )
1103+
{
1104+
QString quadKey;
1105+
for ( int i = z; i > 0; i-- )
1106+
{
1107+
char digit = '0';
1108+
int mask = 1 << ( i - 1 );
1109+
if ( tileX & mask )
1110+
digit++;
1111+
if ( tileY & mask )
1112+
digit += 2;
1113+
quadKey.append( QChar( digit ) );
1114+
}
1115+
return quadKey;
1116+
}
1117+
1118+
11001119
void QgsWmsProvider::createTileRequestsXYZ( const QgsWmtsTileMatrix* tm, const QgsWmsProvider::TilePositions& tiles, QgsWmsProvider::TileRequests& requests )
11011120
{
11021121
int z = tm->identifier.toInt();
@@ -1106,6 +1125,10 @@ void QgsWmsProvider::createTileRequestsXYZ( const QgsWmtsTileMatrix* tm, const Q
11061125
{
11071126
++i;
11081127
QString turl( url );
1128+
1129+
if ( turl.contains( "{q}" ) ) // used in Bing maps
1130+
turl.replace( "{q}", _tile2quadkey( tile.col, tile.row, z ) );
1131+
11091132
turl.replace( "{x}", QString::number( tile.col ), Qt::CaseInsensitive );
11101133
turl.replace( "{y}", QString::number( tile.row ), Qt::CaseInsensitive );
11111134
turl.replace( "{z}", QString::number( z ), Qt::CaseInsensitive );

0 commit comments

Comments
 (0)