苦労したが、下の数式で計算できた。
static double latitudeToPixelY(double latitude, byte zoom) {
double sinLatitude = Math.sin(latitude * (Math.PI / 180));
return (0.5 - Math.log((1 + sinLatitude) / (1 - sinLatitude)) / (4 * Math.PI))
* 地図全体のPixel数);
}
static double pixelYToLatitude(double pixelY, byte zoom) {
double y = 0.5 - (pixelY / (地図全体のPixel数));
return 90 - 360 * Math.atan(Math.exp(-y * (2 * Math.PI))) / Math.PI;
}
0 件のコメント:
コメントを投稿