方法一:
1.创建一个工具类:
public class Distance {
private static final double EARTH_RADIUS = 6378.137*1000;//地球半径(米)private static double rad(double d)
{
return d * Math.PI / 180.0;
}
public static double getDistance(double lat1, double lng1, double lat2, double lng2)
{
double radLat1 = rad(lat1);
double radLat2 = rad(lat2);
double a = radLat1 - radLat2;
double b = rad(lng1) - rad(lng2);
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 double getDistance(LatLng ll1,LatLng ll2){
return getDistance(ll1.latitude, ll1.longitude,ll2.latitude,ll2.longitude);
}
}
2.然后再MainActivity中:
double distance = Distance.getDistance(myLocation, new LatLng(lat, lng));
//myLocation是我所在的位置(LayLng myLocation = new LayLng(lat,lng));
//纬度lat
//经度lng
DecimalFormat df = new DecimalFormat("###0.00");//格式化输出,保留小数点后两位
tvlength.setText("距离:"+df.format(distance)+"米");
方法二:
直接使用系统的计算距离的工具类:
double distance = DistanceUtil.getDistance(myLocation, new LatLng(lat, lng));
//myLocation是我所在的位置(LayLng myLocation = new LayLng(lat,lng));
//纬度lat
//经度lng
DecimalFormat df = new DecimalFormat("###0.00");//格式化输出,保留小数点后两位
tvlength.setText("距离:"+df.format(distance)+"米");