簡體   English   中英

如何計算兩個gio點(lat和lng)之間的距離?

[英]How to calculate the distance between two gio points( lat and lng )?

我正在研究ITS(智能運輸系統)。 因此,我必須計算公交車站的EAT(預計到達時間)。 現在,我現在有車輛的停止位置和位置兩個點(緯度,經度)。 所以我必須計算距離。 接下來,我將提高速度,這樣我就可以計算公交車站的到站時間。 我的問題是,我正在使用這種方法來計算兩點之間的距離,

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);

    }

我在想的是,它計算兩點之間的直線距離。 它不會實時發生。 因為車輛是公路行駛。 因此,有沒有更好的解決方案或算法來找出兩個地方之間的距離。 請任何人在這方面幫助我。

距離取決於公交路線。

如果您的智能運輸系統知道公交路線,則可以使用該信息。

Google地圖有這些公交路線嗎? 您可以使用Google Maps API向其詢問從起點到目的地的公交路線,但是您必須確定哪個選擇正確(如果有)。

如果您的實際目標是確定ETA,那么您需要的是運輸時間表,而不是距離。 (乘客需要等待公共汽車的到來,公共汽車可能會在某些車站等待與其他線路的接駁,依此類推。)只要知道相關的公共汽車線路,Google Maps API就可以提供幫助。

沒錯,計算兩個地理位置的直接距離是不夠的,因為路線通常不是直線。 在這種情況下,Google Map API可以為您提供幫助。

您可以使用谷歌地圖方向服務 簽出以下運輸方式:

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

偏離路線時,您必須考慮公共汽車的停車時間和平均速度。 由於公交車的行駛速度不一定總是相同的,因此您需要計算平均速度,並考慮交通信號燈和其他相關事項(甚至可能會堵車)。 最好是,如果您的估計時間還顯示可能的延遲並實時更新(當公共汽車將出現交通擁堵時,可以在等待時間中加上延遲時間)。

您可以在下面使用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);
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM