核心函数:
private double gps2m(double lat_a, double lng_a, double lat_b, double lng_b) {
double radLat1 = (lat_a * Math.PI / 180.0);
double radLat2 = (lat_b * Math.PI / 180.0);
double a = radLat1 - radLat2;
double b = (lng_a - lng_b) * Math.PI / 180.0;
double s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2)
+ Math.cos(radLat1) * Math.cos(radLat2)
* Math.pow(Math.sin(b / 2), 2)));
s = s * EARTH_RADIUS;
s = Math.round(s * 10000) / 10000;
return s;
}
其他常用函数
將米转换为千米:
public static String fromMeter2KM(double meters){
meters = Math.round(meters/100d)/10d;
String s = String.valueOf(meters);
if (s.equals("0.0")){
s = "0";
}
s += "km";
return s;
}
传入一个时间字符串,转换为过去式时间,如:XX分钟前
/**
* 将时间戳转为代表"距现在多久之前"的字符串
* @param timeStr 时间戳
* @return
*/
public static String getStandardDate(String timeStr) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date d;
long t = 0;
try{
d = sdf.parse(timeStr);
t = d.getTime();
}catch (ParseException ex){
ex.printStackTrace();
}
StringBuffer sb = new StringBuffer();
long tc = System.currentTimeMillis();
long time = tc - t;
long mill = (long) Math.floor(time /1000);//秒前
long minute = (long) Math.floor(time/60/1000.0f);// 分钟前
long hour = (long) Math.floor(time/60/60/1000.0f);// 小时
long day = (long) Math.floor(time/24/60/60/1000.0f);// 天前
if (day - 1 >= 0) {
sb.append(day + "天前");
return sb.toString();
}
if (hour - 1 >= 0) {
sb.append(hour + "小时前");
return sb.toString();
}
if (minute - 1 >= 0) {
sb.append(minute + "分钟前");
return sb.toString();
}
if (mill - 1 >= 0) {
sb.append(mill + "秒前");
return sb.toString();
}
return sb.toString();
}