【问题标题】:Get accurate lat/long given current point, distance and bearing获取准确的纬度/经度给定的当前点、距离和方位
【发布时间】: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


【解决方案1】:

您可以使用 Google Maps SDK for Android 实用程序库的 spherical geometry utilities

您可以使用的具体方法是 computeOffset 方法。当您在此 link 中搜索 SphericalUtil 时,您可以看到它。

ComputeOffset 返回从指定航向中的原点移动一段距离所产生的 La​​tLng(从北顺时针以度数表示)。以下是您需要指定的参数:

from - 开始的 LatLng。 距离 - 旅行的距离。 heading - 从北方顺时针方向的方向。

要使用它,请将实用程序库添加到您的依赖项中:

implementation 'com.google.maps.android:android-maps-utils:0.5'

这是我使用的一行代码示例:

LatLng newCoordinates = SphericalUtil.computeOffset(new LatLng(-25.363, 131.044),30000, 90);

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 2011-11-05
    • 2015-07-12
    • 1970-01-01
    • 1970-01-01
    • 2011-08-28
    • 2012-06-22
    • 2014-05-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多