EmptyMapAdapter::EmptyMapAdapter(int tileSize, int minZoom, int maxZoom) :MapAdapter("", "", 256, minZoom, maxZoom) { PI = acos(-1.0); numberOfTiles = tilesonzoomlevel(minZoom); }
void MapDownloader::downloadLayer(int layerDepth) { QSize windowSize=frameSize(); QPoint screenmiddle(windowSize.width()/2 * tilesonzoomlevel(layerDepth),windowSize.height()/2 * tilesonzoomlevel(layerDepth)); int zoom = mapadapter->currentZoom()+layerDepth; QPoint mapmiddle_px = mapadapter->coordinateToDisplay( mc->currentCoordinate() ); mapmiddle_px.setX( mapmiddle_px.x() * tilesonzoomlevel(layerDepth) ); mapmiddle_px.setY( mapmiddle_px.y() * tilesonzoomlevel(layerDepth) ); int tilesize = mapadapter->tilesize(); int cross_x = int(mapmiddle_px.x() )%tilesize; // position on middle tile int cross_y = int(mapmiddle_px.y() )%tilesize; int space_left = screenmiddle.x() - cross_x; int tiles_left = space_left/tilesize; if (space_left>0) tiles_left+=1; int space_above = screenmiddle.y() - cross_y; int tiles_above = space_above/tilesize; if (space_above>0) tiles_above+=1; int space_right = screenmiddle.x() - (tilesize-cross_x); int tiles_right = space_right/tilesize; if (space_right>0) tiles_right+=1; int space_bottom = screenmiddle.y() - (tilesize-cross_y); int tiles_bottom = space_bottom/tilesize; if (space_bottom>0) tiles_bottom+=1; int mapmiddle_tile_x = mapmiddle_px.x()/tilesize; int mapmiddle_tile_y = mapmiddle_px.y()/tilesize; for (int i=-tiles_left+mapmiddle_tile_x; i<=tiles_right+mapmiddle_tile_x; i++) { for (int j=-tiles_above+mapmiddle_tile_y; j<=tiles_bottom+mapmiddle_tile_y; j++) { downloadTile(i,j,zoom); } } downloadProgress->setMaximum(tilesDownloadCount); }
void EmptyMapAdapter::zoom_out() { if (current_zoom > min_zoom) { current_zoom = current_zoom - 1; } numberOfTiles = tilesonzoomlevel(current_zoom); }
void EmptyMapAdapter::zoom_in() { if (current_zoom < max_zoom) { current_zoom = current_zoom + 1; } numberOfTiles = tilesonzoomlevel(current_zoom); }
void TileMapAdapter::zoom_out() { if (min_zoom > max_zoom) current_zoom = current_zoom+1; else if (min_zoom < max_zoom) current_zoom = current_zoom-1; int zoom = max_zoom < min_zoom ? min_zoom - current_zoom : current_zoom; numberOfTiles = tilesonzoomlevel(zoom);//pow(2, zoom); }
TileMapAdapter::TileMapAdapter(const QString& host, const QString& serverPath, int tilesize, int minZoom, int maxZoom) :MapAdapter(host, serverPath, tilesize, minZoom, maxZoom) { PI = acos(-1.0); // qDebug() << "creating adapter: min, max, current: " << minZoom << ", " << maxZoom << ", " << current_zoom << ", " << (min_zoom < max_zoom); /* Initialize the "substring replace engine". First the string replacement in getQuery was made by QString().arg() but this was very slow. So this splits the servers path into substrings and when calling getQuery the substrings get merged with the parameters of the URL. Pretty complicated, but fast. */ param1 = serverPath.indexOf("%1"); param2 = serverPath.indexOf("%2"); param3 = serverPath.indexOf("%3"); int min = param1 < param2 ? param1 : param2; min = param3 < min ? param3 : min; int max = param1 > param2 ? param1 : param2; max = param3 > max ? param3 : max; int middle = param1+param2+param3-min-max; order[0][0] = min; if (min == param1) order[0][1] = 0; else if (min == param2) order[0][1] = 1; else order[0][1] = 2; order[1][0] = middle; if (middle == param1) order[1][1] = 0; else if (middle == param2) order[1][1] = 1; else order[1][1] = 2; order[2][0] = max; if (max == param1) order[2][1] = 0; else if(max == param2) order[2][1] = 1; else order[2][1] = 2; int zoom = max_zoom < min_zoom ? min_zoom - current_zoom : current_zoom; numberOfTiles = tilesonzoomlevel(zoom); loc.setNumberOptions(QLocale::OmitGroupSeparator); }
void TileMapAdapter::zoom_out() { if (min_zoom > max_zoom) { //current_zoom = current_zoom+1; current_zoom = current_zoom < min_zoom ? current_zoom+1 : min_zoom; } else if (min_zoom < max_zoom) { //current_zoom = current_zoom-1; current_zoom = current_zoom > min_zoom ? current_zoom-1 : min_zoom; } int zoom = max_zoom < min_zoom ? min_zoom - current_zoom : current_zoom; numberOfTiles = tilesonzoomlevel(zoom); }
void TileMapAdapter::zoom_out() { if (mMin_zoom > mMax_zoom) { //mCurrent_zoom = mCurrent_zoom+1; mCurrent_zoom = mCurrent_zoom < mMin_zoom ? mCurrent_zoom+1 : mMin_zoom; } else if (mMin_zoom < mMax_zoom) { //mCurrent_zoom = mCurrent_zoom-1; mCurrent_zoom = mCurrent_zoom > mMin_zoom ? mCurrent_zoom-1 : mMin_zoom; } int zoom = mMax_zoom < mMin_zoom ? mMin_zoom - mCurrent_zoom : mCurrent_zoom; mNumberOfTiles = tilesonzoomlevel(zoom); }