|
- 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.
|