Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.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
Android 不一致的值_Android_Distance - Fatal编程技术网

Android 不一致的值

Android 不一致的值,android,distance,Android,Distance,我在计算用户当前位置和给定坐标之间的距离。但我得到的两个测试设备Galaxy S3和Galaxy S4的值不同 public static double getDistance(double lat1, double lon1, double lat2,double lon2,String unit) { double theta = lon1 - lon2; double dist = (Math.sin(deg2rad(lat1)) * Math.sin(deg2rad(la

我在计算用户当前位置和给定坐标之间的距离。但我得到的两个测试设备Galaxy S3和Galaxy S4的值不同

public static double getDistance(double lat1, double lon1, double lat2,double lon2,String 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 * 1000;
    }else if (unit=='N') {
        dist = dist * 0.8684;
    }

    DecimalFormat df = new DecimalFormat("#.0");

    double metres = (Double.valueOf(df.format(dist)));

    return metres;
}

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

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

可能的重复您能否解释更多关于我的2台测试设备Galaxy S3和Galaxy S4的不同值是什么意思?举个例子会很有用。您是否在S3和S4上获得了相同的当前位置latlng?如果没有,那么您的设备可能会返回您之前保存的最后一个已知位置。我正在读取latlng.Ex的相同文件。我目前的位置是lat 1.3316535 lon 103.8487563。Im计算当前位置到lat 1.3367406266337 lon 103.8505371999740的距离。在我的s3设备中,它显示600.5m,在我的s4设备中,它显示1.154667E7m