计算两个经度和纬度之间的道路距离

时间:2015-05-11 19:56:23

标签: php android google-maps

我正在尝试开发一个Android应用程序。我已经在我的后端(php MySQL)中列出了一些经度/纬度和其他描述的地方。我试图抓住用户当前的位置,并向他显示与列出的地方的道路距离及其描述。但我很难找到从当前位置到所有其他地方的道路距离。我想一种方法是使用Todd Motto's但是在这种情况下会有两个API调用,

  • 第一个从我的设备到我的后端。
  • 第二个是从后端到Google距离矩阵API

然后我的后端会向我的设备发送回复。为此目的调用两个API是一个好主意。还有其他方法可以轻松完成。我是新手,所以如果我错了,请原谅我。

谢谢。

1 个答案:

答案 0 :(得分:1)

public float distance(double lat1, double lng1, double lat2, double lng2) {
    double earthRadius = 6371; // kilometers
    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));
    float dist = (float) (earthRadius * c);

    return dist * 1000;
}

现在调用您的代码

float distanceInMeters= distance(oldLatitude, oldLongitude,newLatitude, newLongitude);