与えられた緯度/経度ポイントから東に x インチ、南に y インチの緯度/経度を求めたいと思います。この目的のために、次のリンクの情報と式を使用しました: http://www.appelsiini.net/2008/11/introduction-to-marker-clustering-with-google-maps 基本的に私のメソッドは次のことを行います:
public static double adjustLongitudeByPixels(double longitude, long pixelsY) {
int zoom = 21; // use zoom level 21
double scaledPixels = (pixelsY << (21 - zoom)) / GOOGLE_SCALING_AT_ZOOM_21;
return xToLongitude(longitudeToX(longitude) + scaledPixels);
}
public static double adjustLatitudeByPixels(int overviewScale, double latitude, long pixelsX) {
int zoom = 21; // use zoom level 21
double scaledPixels = (pixelsX << (21 - zoom)) / GOOGLE_SCALING_AT_ZOOM_21;
return yToLatitude(latitudeToY(latitude) + scaledPixels);
}
...ここで、経度/緯度は開始点からのもので、ピクセルは開始点から東または南にあるピクセルの数です。実際の x/y インチ距離に 96 (1 インチあたりのピクセル数) を掛けて、pixelsX と pixelY を取得します。したがって、基本的にはスケーリング 1:1 でピクセルを取得します。latitudeToY と longitudeToX はズーム レベル 21 で単位ピクセルを使用するため、ズーム レベル 21 でのスケーリングで割ります。間違っていなければ、このスケーリングは 1:282.124305 です。
ただし、この方法では期待どおりの結果が得られません。結果として得られる緯度/経度は、予想とは少し異なります。
私の論理に欠陥がある場合はお知らせください...よろしくお願いします!