Java編程獲取經(jīng)緯度之間距離的方法
更新時間:2015年11月05日 14:44:38 作者:awj3584
這篇文章主要介紹了Java編程獲取經(jīng)緯度之間距離的方法,涉及Java數(shù)學運算的相關技巧,具有一定參考借鑒價值,需要的朋友可以參考下
本文實例講述了Java編程獲取經(jīng)緯度之間距離的方法。分享給大家供大家參考,具體如下:
public class GeoUtil {
/**
* 根據(jù)經(jīng)緯度和距離返回一個矩形范圍
*
* @param lng
* 經(jīng)度
* @param lat
* 緯度
* @param distance
* 距離(單位為米)
* @return [lng1,lat1, lng2,lat2] 矩形的左下角(lng1,lat1)和右上角(lng2,lat2)
*/
public static double[] getRectangle(double lng, double lat, long distance) {
float delta = 111000;
if (lng != 0 && lat != 0) {
double lng1 = lng - distance
/ Math.abs(Math.cos(Math.toRadians(lat)) * delta);
double lng2 = lng + distance
/ Math.abs(Math.cos(Math.toRadians(lat)) * delta);
double lat1 = lat - (distance / delta);
double lat2 = lat + (distance / delta);
return new double[] { lng1, lat1, lng2, lat2 };
} else {
// TODO ZHCH 等于0時的計算公式
double lng1 = lng - distance / delta;
double lng2 = lng + distance / delta;
double lat1 = lat - (distance / delta);
double lat2 = lat + (distance / delta);
return new double[] { lng1, lat1, lng2, lat2 };
}
}
/**
* 得到兩點間的距離 米
*
* @param lat1
* @param lng1
* @param lat2
* @param lng2
* @return
*/
public static double getDistanceOfMeter(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) / 10;
return s;
}
private static double rad(double d) {
return d * Math.PI / 180.0;
}
/**
* 地球半徑:6378.137KM
*/
private static double EARTH_RADIUS = 6378.137;
}
希望本文所述對大家Java程序設計有所幫助。
您可能感興趣的文章:
相關文章
解決Spring Boot 多模塊注入訪問不到jar包中的Bean問題
這篇文章主要介紹了解決Spring Boot 多模塊注入訪問不到jar包中的Bean問題。具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09
Java16 JDK安裝并設置環(huán)境變量的方法步驟
突然想起自己大學剛接觸java的時候,要下載JDK和配置環(huán)境變量,那時候我上網(wǎng)找了很多教學,本文就詳細的介紹一下Java16 JDK安裝并設置環(huán)境變量,感興趣的可以了解一下2021-09-09
SpringBoot安全策略開發(fā)之集成數(shù)據(jù)傳輸加密
這篇文章主要介紹了SpringBoot集成數(shù)據(jù)傳輸加密,近期在對開發(fā)框架安全策略方面進行升級優(yōu)化,提供一些通用場景的解決方案,本文針對前后端數(shù)據(jù)傳輸加密進行簡單的分享2023-01-01

