0、相關資料
1、正文
該工具類主要用於根據經緯度計算距離,其中需要注意的是 在第二個方法中的 Math.toRadians(latitude) 尤爲關鍵,因爲這是把緯度轉爲度數的。
例如:cos(10) = -0.839071529076452是一個負數 爲什麼? 10大概是3.18π,此處的10不是10度角
所以進行正餘弦計算的時候一定要轉換成角度。
唉,這些數據知識都給忘了,慚愧啊!
/**
* Created by songzi522 on 2019/12/5.
* 描述:根據經緯度計算距離
*/
public class DistanceUtil {
/**
* 沿經線(南北方向),經度不變,緯度變化約 1/111 度,這個要加減在緯度上
* <p>
* 經度上 1 千米 = 1 / 111 = 0.009009度
*/
public static double oneKM2Lon = 0.009009;
/**
* 沿緯線(東西方向),緯度爲a,緯度不變,經度變化約 1/(111*COSa)度,這個要加減在經度上
* <p>
* 緯度上1千米 = 1 / 111*cos(緯度)
*
* @param latitude 緯度
* @return double值
*/
public static double oneKM2Lat(double latitude) {
// 緯度上1千米 = 1 / 111*cos(緯度)
// 22.479265463306174 小數位太多需要保留六位小數
double oneKM2Lat = 1 / (111 * Math.cos(Math.toRadians(latitude)));
LogUtils.e("oneKM2Lat:" + oneKM2Lat);
BigDecimal bg = new BigDecimal(oneKM2Lat);
LogUtils.e("222:" + bg.setScale(6, BigDecimal.ROUND_HALF_UP).doubleValue());
return bg.setScale(6, BigDecimal.ROUND_HALF_UP).doubleValue();
}
}