读书人

java 代码改写成 delphi解决方法

发布时间: 2013-01-11 11:57:35 作者: rapoo

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;

读书人网 >.NET

热点推荐