【问题标题】:How to calculate the distance between two gio points( lat and lng )?如何计算两个 gio 点(lat 和 lng)之间的距离?
【发布时间】:2014-12-10 02:13:32
【问题描述】:

我正在研究 ITS(智能交通系统)。所以我必须计算公交车在公交车站的 EAT(预计到达时间)。现在我有两个点(lat,lng),目前车辆的停止和位置。所以我必须计算距离。接下来我会得到速度,所以我可以计算公共汽车站的到达时间。我的问题是,我正在使用这种方法来计算两点之间的距离,

private double distance(double lat1, double lon1, double lat2, double lon2, char unit) {

      double theta = lon1 - lon2;
      double dist = Math.sin(deg2rad(lat1)) * Math.sin(deg2rad(lat2)) + Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(lat2)) * Math.cos(deg2rad(theta));
      dist = Math.acos(dist);
      dist = rad2deg(dist);
      dist = dist * 60 * 1.1515;
      if (unit == 'K') {
        dist = dist * 1.609344;
      } else if (unit == 'N') {
        dist = dist * 0.8684;
        }
      return (dist);

    }

我在想的是,它计算两点之间的直线距离。它不会实时发生。因为车辆在公路上行驶。那么有没有更好的解决方案或算法来找出两个地方之间的距离。请任何人帮助我。

【问题讨论】:

标签: java google-maps distance


【解决方案1】:

你是对的,计算两个地理位置的直接距离是不够的,因为路线往往不是笔直的。在这种情况下,谷歌地图 api 可以为您提供帮助。

您可以使用谷歌地图Direction Service。查看以下公交模式:

https://developers.google.com/maps/documentation/javascript/directions#TravelModes

当然,您必须考虑巴士的停车时间和平均速度。由于公共汽车的速度并不总是相同,因此您需要计算平均速度,并考虑红绿灯和其他相关因素(甚至可能是交通拥堵?)。如果您的预估时间也能显示可能的延误并实时更新(当公交车堵车时,可以添加等待时间和延误时间)。

【讨论】:

    【解决方案2】:

    距离取决于公交路线。

    如果您的智能交通系统知道公交路线,那么您可以使用该信息。

    谷歌地图有这些公交路线吗?您可以使用 Google Maps API 向其询问从起点到终点的交通路线,但您必须确定哪些选择是正确的(如果有的话)。

    如果您的实际目标是确定 ETA,那么您需要的是运输时间表,而不是距离。 (乘客需要等待公共汽车到达,公共汽车可能会在某些站点等待与其他线路会合,等等。)只要知道相关的公交线路,Google Maps API 就可以帮助解决这个问题。

    【讨论】:

    • 其实我是个新人..,可以在google map中表示或存储root吗?
    • 到目前为止,我们只是将 rout_no 和该路线中的停靠点存储在 DB 中。
    • 是的,你说得对。 . ,任何在线材料。?以及如何表示公交线路。
    • 最好的情况下,一辆公共汽车准时到达。它甚至可能不会每天运行。因此,您需要查找公共汽车下一次到达起点的时间以及下一次到达目的地的时间。因此,将路线计划添加到数据库中。它需要列出沿途的每个定时停靠点,以及全时信息(例如每周时间表)。
    【解决方案3】:

    您可以使用下面的LatLangTool方法

      public static Double getDistanceToLocation(SourceCordinate from, SourceCordinate to) {
            LatLng busDeparturePoint = new LatLng(from.latitude, from.longitude);
            LatLng busDestinationPoint = new LatLng(to.latitude, to.longitude);
    
    
            return LatLngTool.distance(busDeparturePoint, busDestinationPoint, LengthUnit.KILOMETER);
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-05
      • 2018-05-20
      • 2014-04-04
      • 1970-01-01
      • 2010-10-30
      相关资源
      最近更新 更多