@@ -904,21 +904,13 @@ QString QgsVectorTileLayer::sourcePath() const
904
904
QByteArray QgsVectorTileLayer::getRawTile ( QgsTileXYZ tileID )
905
905
{
906
906
QGIS_PROTECT_QOBJECT_THREAD_ACCESS
907
+
907
908
QgsVectorTileDataProvider *vtProvider = qobject_cast< QgsVectorTileDataProvider * >( mDataProvider .get () );
908
909
if ( !vtProvider )
909
910
return QByteArray ();
910
911
911
912
const QgsTileMatrix tileMatrix = mMatrixSet .tileMatrix ( tileID.zoomLevel () );
912
- const QgsTileRange tileRange ( tileID.column (), tileID.column (), tileID.row (), tileID.row () );
913
-
914
- QgsDataSourceUri dsUri;
915
- dsUri.setEncodedUri ( mDataSource );
916
- const QString authcfg = dsUri.authConfigId ();
917
-
918
- QList<QgsVectorTileRawData> rawTiles = QgsVectorTileLoader::blockingFetchTileRawData ( mSourceType , vtProvider->sourcePath (), tileMatrix, QPointF (), tileRange, authcfg, dsUri.httpHeaders () );
919
- if ( rawTiles.isEmpty () )
920
- return QByteArray ();
921
- return rawTiles.first ().data ;
913
+ return vtProvider->readTile ( tileMatrix, tileID );
922
914
}
923
915
924
916
void QgsVectorTileLayer::setRenderer ( QgsVectorTileRenderer *r )
@@ -1404,6 +1396,26 @@ QgsCoordinateReferenceSystem QgsXyzVectorTileDataProvider::crs() const
1404
1396
return QgsCoordinateReferenceSystem ( QStringLiteral ( " EPSG:3857" ) );
1405
1397
}
1406
1398
1399
+ QByteArray QgsXyzVectorTileDataProvider::readTile ( const QgsTileMatrix &tileMatrix, const QgsTileXYZ &id ) const
1400
+ {
1401
+ QgsDataSourceUri dsUri;
1402
+ dsUri.setEncodedUri ( dataSourceUri () );
1403
+ const QString authcfg = dsUri.authConfigId ();
1404
+
1405
+ const QgsTileRange tileRange ( id.column (), id.column (), id.row (), id.row () );
1406
+
1407
+ QList<QgsVectorTileRawData> rawTiles = QgsVectorTileLoader::blockingFetchTileRawData ( QStringLiteral ( " xyz" ),
1408
+ dsUri.param ( QStringLiteral ( " url" ) ),
1409
+ tileMatrix,
1410
+ QPointF (),
1411
+ tileRange,
1412
+ authcfg,
1413
+ dsUri.httpHeaders () );
1414
+ if ( rawTiles.isEmpty () )
1415
+ return QByteArray ();
1416
+ return rawTiles.first ().data ;
1417
+ }
1418
+
1407
1419
//
1408
1420
// QgsMbTilesVectorTileDataProvider
1409
1421
//
@@ -1446,6 +1458,26 @@ QgsCoordinateReferenceSystem QgsMbTilesVectorTileDataProvider::crs() const
1446
1458
return QgsCoordinateReferenceSystem ( QStringLiteral ( " EPSG:3857" ) );
1447
1459
}
1448
1460
1461
+ QByteArray QgsMbTilesVectorTileDataProvider::readTile ( const QgsTileMatrix &tileMatrix, const QgsTileXYZ &id ) const
1462
+ {
1463
+ QgsDataSourceUri dsUri;
1464
+ dsUri.setEncodedUri ( dataSourceUri () );
1465
+ const QString authcfg = dsUri.authConfigId ();
1466
+
1467
+ const QgsTileRange tileRange ( id.column (), id.column (), id.row (), id.row () );
1468
+
1469
+ QList<QgsVectorTileRawData> rawTiles = QgsVectorTileLoader::blockingFetchTileRawData ( QStringLiteral ( " mbtiles" ),
1470
+ dsUri.param ( QStringLiteral ( " url" ) ),
1471
+ tileMatrix,
1472
+ QPointF (),
1473
+ tileRange,
1474
+ authcfg,
1475
+ dsUri.httpHeaders () );
1476
+ if ( rawTiles.isEmpty () )
1477
+ return QByteArray ();
1478
+ return rawTiles.first ().data ;
1479
+ }
1480
+
1449
1481
//
1450
1482
// QgsVtpkVectorTileDataProvider
1451
1483
//
@@ -1488,6 +1520,26 @@ QgsCoordinateReferenceSystem QgsVtpkVectorTileDataProvider::crs() const
1488
1520
return QgsCoordinateReferenceSystem ( QStringLiteral ( " EPSG:3857" ) );
1489
1521
}
1490
1522
1523
+ QByteArray QgsVtpkVectorTileDataProvider::readTile ( const QgsTileMatrix &tileMatrix, const QgsTileXYZ &id ) const
1524
+ {
1525
+ QgsDataSourceUri dsUri;
1526
+ dsUri.setEncodedUri ( dataSourceUri () );
1527
+ const QString authcfg = dsUri.authConfigId ();
1528
+
1529
+ const QgsTileRange tileRange ( id.column (), id.column (), id.row (), id.row () );
1530
+
1531
+ QList<QgsVectorTileRawData> rawTiles = QgsVectorTileLoader::blockingFetchTileRawData ( QStringLiteral ( " vtpk" ),
1532
+ dsUri.param ( QStringLiteral ( " url" ) ),
1533
+ tileMatrix,
1534
+ QPointF (),
1535
+ tileRange,
1536
+ authcfg,
1537
+ dsUri.httpHeaders () );
1538
+ if ( rawTiles.isEmpty () )
1539
+ return QByteArray ();
1540
+ return rawTiles.first ().data ;
1541
+ }
1542
+
1491
1543
//
1492
1544
// QgsArcGisVectorTileServiceDataProvider
1493
1545
//
@@ -1529,6 +1581,26 @@ QgsCoordinateReferenceSystem QgsArcGisVectorTileServiceDataProvider::crs() const
1529
1581
return QgsCoordinateReferenceSystem ( QStringLiteral ( " EPSG:3857" ) );
1530
1582
}
1531
1583
1584
+ QByteArray QgsArcGisVectorTileServiceDataProvider::readTile ( const QgsTileMatrix &tileMatrix, const QgsTileXYZ &id ) const
1585
+ {
1586
+ QgsDataSourceUri dsUri;
1587
+ dsUri.setEncodedUri ( dataSourceUri () );
1588
+ const QString authcfg = dsUri.authConfigId ();
1589
+
1590
+ const QgsTileRange tileRange ( id.column (), id.column (), id.row (), id.row () );
1591
+
1592
+ QList<QgsVectorTileRawData> rawTiles = QgsVectorTileLoader::blockingFetchTileRawData ( QStringLiteral ( " xyz" ),
1593
+ mSourcePath ,
1594
+ tileMatrix,
1595
+ QPointF (),
1596
+ tileRange,
1597
+ authcfg,
1598
+ dsUri.httpHeaders () );
1599
+ if ( rawTiles.isEmpty () )
1600
+ return QByteArray ();
1601
+ return rawTiles.first ().data ;
1602
+ }
1603
+
1532
1604
// /@endcond
1533
1605
1534
1606
0 commit comments