EmptyMapAdapter::EmptyMapAdapter(int tileSize, int minZoom, int maxZoom)
	:MapAdapter("", "", 256, minZoom, maxZoom)
    {
        PI = acos(-1.0);

	numberOfTiles = tilesonzoomlevel(minZoom);
    }
Exemplo n.º 2
0
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);
    }
Exemplo n.º 5
0
	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);
	
	}
Exemplo n.º 6
0
	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);
	}
Exemplo n.º 7
0
    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);
    }
Exemplo n.º 8
0
    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);
    }