Android 两个Lat和Long之间的行程距离

Android 两个Lat和Long之间的行程距离,android,google-api,latitude-longitude,google-directions-api,Android,Google Api,Latitude Longitude,Google Directions Api,我希望计算并给出两组横向和纵向在道路上行驶的距离 我已经看过谷歌的方向和距离矩阵API。还做了很多其他的问题 但我无法找出最好的方法,您需要计算每次到大约20-25个位置的距离 我们正在开发一款旅行应用程序,该应用程序需要用户在Android设备上提供这些信息。在询问之前,您可能需要搜索更多信息 无论如何,使用哈弗森公式 rad = function(x) {return x*Math.PI/180;} distHaversine = function(p1, p2) { var R =

我希望计算并给出两组横向和纵向在道路上行驶的距离

我已经看过谷歌的方向和距离矩阵API。还做了很多其他的问题

但我无法找出最好的方法,您需要计算每次到大约20-25个位置的距离


我们正在开发一款旅行应用程序,该应用程序需要用户在Android设备上提供这些信息。

在询问之前,您可能需要搜索更多信息

无论如何,使用哈弗森公式

rad = function(x) {return x*Math.PI/180;}

distHaversine = function(p1, p2) {
  var R = 6371; // earth's mean radius in km
  var dLat  = rad(p2.lat() - p1.lat());
  var dLong = rad(p2.lng() - p1.lng());

  var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
          Math.cos(rad(p1.lat())) * Math.cos(rad(p2.lat())) * Math.sin(dLong/2) * Math.sin(dLong/2);
  var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
  var dist = R * c;

  return dist.toFixed(3);
}

它给出两个位置之间的距离。

首先,您需要获得源的纬度、经度和目的地的纬度、经度。用这个方法传递这些信息

这会让你回想起他们之间的距离

public float distanceFrom(float lat1, float lng1, float lat2, float lng2) {
    double earthRadius = 3958.75;
    double dLat = Math.toRadians(lat2-lat1);
    double dLng = Math.toRadians(lng2-lng1);
    double a = Math.sin(dLat/2) * Math.sin(dLat/2) + Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2)) * Math.sin(dLng/2) * Math.sin(dLng/2);
    double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
    double dist = earthRadius * c;
    int meterConversion = 1609;
    return new Float(dist * meterConversion).floatValue();
}

如果您正在寻找驾驶距离而不是最短距离,则可以尝试使用URL调用API服务,如:

http://maps.googleapis.com/maps/api/distancematrix/json?origins=54.406505,18.67708&destinations=54.446251,18.570993&mode=driving&language=en-EN&sensor=false
这将导致JSON如下所示:

{
   "destination_addresses" : [ "Powstańców Warszawy 8, Sopot, Polska" ],
   "origin_addresses" : [ "majora Henryka Sucharskiego 69, Gdańsk, Polska" ],
   "rows" : [
      {
         "elements" : [
            {
               "distance" : {
                  "text" : "24,7 km",
                  "value" : 24653
               },
               "duration" : {
                  "text" : "34 min",
                  "value" : 2062
               },
               "status" : "OK"
            }
         ]
      }
   ],
   "status" : "OK"
}
结果距离是两个位置之间的实际道路距离


您可以在

中找到更多详细信息。这是否有api限制?是的,它确实有api限制。我在回答中提供的文档中描述了这一切。