function Exp(X: extended): extended;
var m, n: integer; 
    r, fac, pow: extended;
begin
  m:=Round(Abs(X/10));
  if m >= 2 then X:=X/m;
  Result:=1+X;
  fac:=1;
  pow:=X;
  n:=2;
  while r<>Result do
   begin
    fac:=fac*n;
    pow:=pow*X;
    n:=n+1;
    r:=Result;
    Result:=Result+pow/fac;
   end;
  if m >= 2 then
   begin
    pow:=Result;
    for n:=2 to m do
      Result:=Result*pow;
   end;
end;

function ArcTan(x: Extended): Extended;
var i: Integer;
begin
 if x>1.0 
  then Result := Pi / 2 - ArcTan(1 / x)
  else for i := 0 to 200 do
	Result:=Result+((intpower((-1),i)*intpower(x,(2*i+1)))/(2*i+1));
 while Result>360 do 
  Result:=Result-360;
 while Result<0 do 
  result:=result+360;
end;

function y2lat(y:integer):extended;
var TilesAtZoom : Integer;
begin
 TilesAtZoom := 1 shl (GetZ+7);
 result:=(y-TilesAtZoom/2)/-(TilesAtZoom/(2*PI));
 result:=(2*arctan(exp(result))-PI/2)*180/PI;
end;

begin 
  ResultURL:=GetURLBase+RoundEx(GetLLon,13)+','+RoundEx(y2lat((GetY*256)+298),13)+','+
                        RoundEx(GetRLon,13)+','+RoundEx(GetTLat,13); 
end.