【发布时间】:2020-01-14 12:09:08
【问题描述】:
鉴于现有的纬度/经度点、距离(英寸)和方位角(以度数转换为弧度),我正在尝试计算新的经度/经度。但结果有时是不准确的,因为我正在尝试为新的纬度/经度测量一个小区域。目前,我正在尝试获得下一英尺的纬度/经度,但有时它会出现 1 英寸的误差。我为此实现使用了以下算法。算法Get lat/long given current point, distance and bearing引用了这个线程。
public LatLng calculateLatLangFromDistance(double brng, double distance, LatLng latLng){
double lat1 = Math.toRadians(latLng.getLatitude());
double long1 = Math.toRadians(latLng.getLongitude());
double br = Math.toRadians(brng);
double lat2 = Math.asin(Math.sin(lat1)*Math.cos(distance/r) +
Math.cos(lat1)* Math.sin(distance/r)* Math.cos(br));
double long2 = long1 + Math.atan2(Math.sin(br)*Math.sin(distance/r)*Math.cos(lat1),
Math.cos(distance/r)-Math.sin(lat1)*Math.sin(lat2));
lat2 = Math.toDegrees(lat2);
long2 = Math.toDegrees(long2);
LatLng latLng1 = new LatLng();
latLng1.setLongitude(long2);
latLng1.setLatitude(lat2);
return latLng1;
}
r 定义为 250826771.6535433 // //地球的半径以英寸为单位
我正在使用上述实现为 mapbox 地图图层生成一个 1 英尺的网格,但生成的网格的某些线是 1 英寸不准确的。有什么方法可以改进这个实现以获得更好的结果,或者有没有其他方法可以为此获得准确的纬度/经度?
这是生成的网格,我画了一个线条来了解网格中某些线条的线条长度。
【问题讨论】:
-
这个世界上还有人用英寸计算吗?
-
你应该给出一个精确的计算例子。给出三个输入值。然后告诉你计算出的新点。并说出你的预期。目前还不清楚你为什么要使用网格。
-
@blackapps 是的,在我们国家,有些客户以英寸为单位计算距离..无论如何感谢您的回复,我设法减少了错误
标签: java android google-maps mapbox