Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 计算两个经纬度之间的道路距离_Php_Android_Google Maps - Fatal编程技术网

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

Php 计算两个经纬度之间的道路距离,php,android,google-maps,Php,Android,Google Maps,我正在尝试开发一个android应用程序。我在我的后端(php MySQL)中列出了一些地方及其经度/纬度和其他描述。我试图抓住用户的当前位置,并向他展示到那些列出的地方的道路距离以及他们的描述。但我很难找到从当前位置到所有其他地方的道路距离。我想一种方法是使用,但在这种情况下,将有两个API调用 从我的设备到后端的第一个 第二个是从后端到谷歌距离矩阵API 之后,我的后端将向我的设备发送响应。为此,调用两个API是一个好主意。还有没有其他方法可以轻松做到这一点。我是新手,如果我错了,请原谅

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

  • 从我的设备到后端的第一个
  • 第二个是从后端到谷歌距离矩阵API
之后,我的后端将向我的设备发送响应。为此,调用两个API是一个好主意。还有没有其他方法可以轻松做到这一点。我是新手,如果我错了,请原谅我

多谢各位

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

除非您拥有每条道路的gps坐标,并且能够追踪通过这些道路的最佳路径以获得距离,否则您将不得不执行两个api调用。除非有办法直接从你的应用程序中调用google。我不太了解那个api,但你不能直接从设备中调用它吗?即使我直接调用google api,我也必须首先从我的服务器中获取位置列表及其详细信息。同样,两个API调用都是为了一个目的。这是道路距离还是两个经纬度之间的正常距离?对不起。这是纬度。但它也适用于路线。为此,只需使用以下值调用此函数​​返回路线,谢谢。但我不知道什么是“返回路线”。你能解释一下吗。