我正在计算用户当前位置与给定坐标之间的距离。但我的2个测试设备(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);
}