fix MapView, so tile provider can be accessible
add MapViewTileProviderBase::maximumLevel()
This commit is contained in:
@@ -104,6 +104,7 @@ void MapView::setTileObsoleteTime(int secs) {
|
||||
|
||||
|
||||
void MapView::setTileProvider(MapViewTileProviderBase * p) {
|
||||
if (p) max_level = p->maximumLevel();
|
||||
cache->clearCache();
|
||||
downloader->setTileProvider(p);
|
||||
drawBackground();
|
||||
@@ -116,8 +117,8 @@ MapViewTileProviderBase * MapView::tileProvider() const {
|
||||
|
||||
|
||||
void collectDownloadIndeces(MapViewTileCache * cache,
|
||||
QQueue<OSM::TileIndex> & indeces,
|
||||
OSM::TileIndex index,
|
||||
QQueue<MapViewTypes::TileIndex> & indeces,
|
||||
MapViewTypes::TileIndex index,
|
||||
int target_zoom_level,
|
||||
bool only_new) {
|
||||
if (only_new) {
|
||||
@@ -130,7 +131,7 @@ void collectDownloadIndeces(MapViewTileCache * cache,
|
||||
int y = index.y * 2;
|
||||
for (int i = 0; i < 2; ++i) {
|
||||
for (int j = 0; j < 2; ++j) {
|
||||
collectDownloadIndeces(cache, indeces, (OSM::TileIndex){z, x + i, y + j}, target_zoom_level, only_new);
|
||||
collectDownloadIndeces(cache, indeces, (MapViewTypes::TileIndex){z, x + i, y + j}, target_zoom_level, only_new);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -142,10 +143,10 @@ void MapView::downloadCurrentView(int target_zoom_level, bool only_new, int para
|
||||
int ex = qMin(tiles_side, (int)ceil(view_rect.right() * tiles_side));
|
||||
int ey = qMin(tiles_side, (int)ceil(view_rect.bottom() * tiles_side));
|
||||
target_zoom_level = qMin(target_zoom_level, max_level);
|
||||
QQueue<OSM::TileIndex> indeces;
|
||||
QQueue<MapViewTypes::TileIndex> indeces;
|
||||
for (int ix = sx; ix < ex; ++ix) {
|
||||
for (int iy = sy; iy < ey; ++iy) {
|
||||
collectDownloadIndeces(cache, indeces, (OSM::TileIndex){zoom_level, ix, iy}, target_zoom_level, only_new);
|
||||
collectDownloadIndeces(cache, indeces, (MapViewTypes::TileIndex){zoom_level, ix, iy}, target_zoom_level, only_new);
|
||||
}
|
||||
}
|
||||
if (indeces.size() < 4) return;
|
||||
@@ -291,7 +292,7 @@ void MapView::drawBackground() {
|
||||
QRectF r((ix)*ts, (iy)*ts, ts, ts);
|
||||
r.translate(-offset);
|
||||
QRectF px_rct(QPointF(), tile_size /*QSizeF(tileSize, tileSize)*/);
|
||||
auto tile = cache->getTile((OSM::TileIndex){zoom_level, ix, iy}, px_rct);
|
||||
auto tile = cache->getTile((MapViewTypes::TileIndex){zoom_level, ix, iy}, px_rct);
|
||||
if (!tile.isEmpty()) {
|
||||
p.drawPixmap(r, tile.pixmap, px_rct);
|
||||
} else {
|
||||
@@ -360,7 +361,7 @@ void MapView::zoomLevelChanged(int new_level) {
|
||||
tiles_side = 1 << zoom_level;
|
||||
// for (int x = 0; x < tiles_side; ++x)
|
||||
// for (int y = 0; y < tiles_side; ++y)
|
||||
// downloader->queueTile(OSM::TileIndex{zoom_level, x, y});
|
||||
// downloader->queueTile(MapViewTypes::TileIndex{zoom_level, x, y});
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user