Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/227.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
使用tomtom location api和android获取用户之间的距离_Android_Location_Tomtom_Tomtom Android Sdk - Fatal编程技术网

使用tomtom location api和android获取用户之间的距离

使用tomtom location api和android获取用户之间的距离,android,location,tomtom,tomtom-android-sdk,Android,Location,Tomtom,Tomtom Android Sdk,我正在开发一个android应用程序,用户可以在其中知道他和其他用户之间的距离。我正在为此使用tomtom定位api。我只是想知道,当我拥有当前用户和其他用户的纬度和经度时,如何获得他们之间的距离 提前感谢如果您已经拥有两个用户的坐标,则可以使用下面的函数进行计算。答案来自于这样的线索 我假设你只需要计算两点之间的大圆距离。 下面隐藏着数学解释: 检查TomTom类:com.TomTom.online.sdk.common.util.DistanceCalculator 方法: distanc

我正在开发一个android应用程序,用户可以在其中知道他和其他用户之间的距离。我正在为此使用tomtom定位api。我只是想知道,当我拥有当前用户和其他用户的纬度和经度时,如何获得他们之间的距离


提前感谢

如果您已经拥有两个用户的坐标,则可以使用下面的函数进行计算。答案来自于这样的线索


我假设你只需要计算两点之间的大圆距离。 下面隐藏着数学解释:

检查TomTom类:
com.TomTom.online.sdk.common.util.DistanceCalculator
方法:

  • distance calculator#大循环距离(LatLng-LatLng,LatLng-reflatling)
  • distance calculator#calcdistinkilometer(LatLng destination,LatLng origin)

如果您需要精确计算路线距离,请使用routing sdk:

您要的是直线距离还是步行/汽车距离?
private double distance(double lat1, double lon1, double lat2, double lon2) {
    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;
    return (dist);
}

private double deg2rad(double deg) {
    return (deg * Math.PI / 180.0);
}

private double rad2deg(double rad) {
    return (rad * 180.0 / Math.PI);
}