我想从给定的纬度/经度点推导出位于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(每英寸像素数)来获得pixelsX和pixelsY。所以我基本上以1:1的比例获得像素。 由于latitudeToY和longitudeToX使用缩放级别21的单位像素,因此除以缩放级别21的缩放。 如果我没有错,这个缩放是1:282.124305。
但是,此方法不会产生预期的结果。产生的纬度/经度与我预期的略有不同。
如果我的逻辑存在缺陷,请告诉我...... 提前谢谢!