По X все просто, делаю так подставляю в формулу зум: Result.X := Apoint.X * 360 /a(это 1 shl zum) - 180;
По Y не могу понять как сделать.
Как подставить в эту функцию зум?!
- Код: Выделить всё
function TProjectionTypeMercatorOnEllipsoid.Relative2LonLatInternal(
const APoint: TDoublePoint
): TDoublePoint;
var
Zu, Zum1, yy: extended;
VSin: Extended;
e_y: Extended;
begin
Result.X := (APoint.x - 0.5) * 360;
if (APoint.y > 0.5) then begin
yy := (APoint.y - 0.5);
end else begin
yy := (0.5 - APoint.y);
end;
yy := yy * (2 * PI);
Zu := 2 * ArcTan(exp(yy)) - PI / 2;
e_y := Exp(2 * yy);
Result.Y := Zu * (180 / Pi);
repeat
Zum1 := Zu;
VSin := Sin(Zum1);
Zu := ArcSin(1 - (1 + VSin) * Power((1 - FExct * VSin) / (1 + FExct * VSin), FExct) / e_y);
until (abs(Zum1 - Zu) < MerkElipsK) or (IsNan(Zu));
if not (IsNan(Zu)) then begin
if APoint.y > 0.5 then begin
Result.Y := -Zu * 180 / Pi;
end else begin
Result.Y := Zu * 180 / Pi;
end;
end;
end;