Черновой вариант, использую в Windows. На сколько адаптировано к Android не знаю, не компилил
procedure TMap.FullScreen(Image:TImage;Tile:TOSMTile);
var
I: Byte;
j: Integer;
BMPTile, BMPImage:TBitmap;
rctIn, rctOut:TRectF;
S:String;
begin
rctOUT:= TRectF.Create(0,0,255,255);
BMPImage := TBitmap.Create;
BMPImage.Width := Round(Image.Width);
BMPImage.Height := Round(Image.Height);
BMPTile := TBitmap.Create;
if not DirectoryExists(FPathTile+IntToStr(Tile.Zoom)) then
ForceDirectories(FPathTile+IntToStr(Tile.Zoom));
for I := 1 to FTileWidth do
for j := 1 to FTileHeight do
begin
S:= FPathTile+format('%d\%d\%d.png',[Tile.Zoom,Tile.TileX+i-1,Tile.TileY+j-1]);
while Assigned(FHTTP) and not FileExists(S) do
begin
if not DirectoryExists(FPathTile+IntToStr(Tile.Zoom)+'\'+IntToStr(Tile.TileX+i-1)) then
ForceDirectories(FPathTile+IntToStr(Tile.Zoom)+'\'+IntToStr(Tile.TileX+i-1));
LoadURLToFile(S, 'http://b.tile.openstreetmap.org/'+format('%d/%d/%d.png',[Tile.Zoom,Tile.TileX+i-1,Tile.TileY+j-1]), FHTTP);
end;
if FileExists(S) then
begin
rctIn := TRectF.Create(256*(i-1),256*(j-1),256*(i),256*(j));
BMPTile.LoadFromFile(S);
BMPImage.Canvas.BeginScene();
BMPImage.Canvas.DrawBitmap(BMPTile,rctOut,rctIn,100,True);
// BMPImage.Canvas.Fill.Kind := TBrushKind.None;
// BMPImage.Canvas.DrawRect(TRectF.Create(0,0,FScreenWidth, FScreenHeight),0, 0, AllCorners, 100);
BMPImage.Canvas.EndScene;
end
end;
Image.Bitmap:= TBitmap.Create;
Image.Bitmap.Clear($FFFFFFFF);
Image.Bitmap.Assign(BMPImage);
end;