我有一些商场的图像,我需要将它们用作我正在制作的应用程序的地图。我有地图底角的 GPS 纬度/经度,我计算出从底部 GPS 坐标到地图图像顶部的距离。但是这些不是直线上下的线性地图,这意味着我不能只绘制我的纬度和经度都很好而且整洁。
我尝试过使用各种公式,而且我非常接近,但我无法绘制地图左上角和右上角的顶部纬度和经度。到目前为止,这就是我所拥有的:
double distanceFromLeftToRightGPS = bottomLeft.distanceTo(bottomRight);
double bearingleftToRight= bottomLeft.bearingTo(bottomRight);
double distmapFromLeftToRightImg = map.getWidth();
double distmapFromTopToBottomImg = map.getHeight();
double percentageValueOfTopToBottomImg = (distmapFromTopToBottomImg * 100)
/ distmapFromLeftToRightImg;
double distanceFromTopToBottomGPS = (percentageValueOfTopToBottomImg * 0.01)
* distanceFromLeftToRightGPS;
double bearingToTopFromBottom = -90;
double lat1 = Math.toRadians(bottomLeft.getLatitude());
double lon1 = Math.toRadians(bottomLeft.getLongitude());
double dist = (distanceFromTopToBottomGPS/1000f)/6371.0f;
double lat2 = Math.asin(Math.sin(lat1) * Math.cos(dist)
+ Math.cos(lat1) * Math.sin(dist) * Math.cos(bearingToTopFromBottom));
double a = Math.atan2(Math.sin(bearingToTopFromBottom) * Math.sin(dist)
* Math.cos(lat1), Math.cos(dist) - Math.sin(lat1) * Math.sin(lat2));
System.out.println("a = " + a);
double lon2 = lon1 + a;
lon2 = (lon2 + 3 * Math.PI) % (2 * Math.PI) - Math.PI;
System.out.println("Latitude = " + Math.toDegrees(lat2) + "\nLongitude = "
+ Math.toDegrees(lon2));
这让我非常接近,但最终位置偏离了它真正应该在的位置。我也不确定应该使用什么方位来查看地图底部的内容。如果其他人有一些关于如何让它工作的信息,那就太棒了。