通過經緯度計算二點距離

package cn.com.cherish.demo.utils;

/**
 * 是否超出圓
 * @author 
 *
 */
public class CalulateTwoLanLon
{
    private static final double EARTH_RADIUS = 6378.137;//地球半徑,單位千米
    private static double rad(double d)
    {
        return d * Math.PI / 180.0;
    }
    
    /**
     * 
     * @param lat1 第一個緯度
     * @param lng1第一個經度
     * @param lat2第二個緯度
     * @param lng2第二個經度
     * @param radius 圓的半徑
     */
    public static Boolean getDistance(double lat1,double lng1,double lat2,double lng2,double radius)
    {
        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;//2個點之間的距離
    	if(radius<s){
    		return true;
    	}else{
    		return false;
    	}
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章