java 代码改写成 delphi解决方法
java 代码改写成 delphi
------解决方案--------------------
public static double lngToPixel(double lng, int zoom) {
return (lng + 180) * (256L<<zoom) / 360;
}
public static double latToPixel(double lat, int zoom) {
double siny = Math.sin(lat * Math.PI / 180);
double y = Math.log((1 + siny) / (1-siny));
return (128 << zoom) * (1-y / (2 * Math.PI));
}
public static double pixelToLat(double pixelY, int zoom) {
double y = 2 * Math.PI * (1-pixelY / (128 << zoom));
double z = Math.pow(Math.E, y);
double siny = (z-1) / (z + 1);
return Math.asin(siny) * 180 / Math.PI;
}
------解决方案--------------------
Uses math;
function lngToPixel(lng: double; zoom: integer): double;
begin
Result := (lng + 180) * ($100 shl zoom) / 360;
end;
function latToPixel(lat: double; zoom: integer): double;
var siny, y: double;
begin
siny := sin(lat * PI / 180);
y := ln((1 + siny) / (1-siny));
Result := (128 shl zoom) * (1-y / (2 * PI));
end;
function pixelToLat(pixelY: double; zoom: integer): double;
var y, z, siny: double;
begin
y := 2 * PI * (1-pixelY / (128 shl zoom));
z := exp(y);
siny := (z-1) / (z + 1);
Result := arcsin(siny) * 180 / PI;
end;