Java編程獲取經(jīng)緯度之間距離的方法
更新時(shí)間:2015年11月05日 14:44:38 作者:awj3584
這篇文章主要介紹了Java編程獲取經(jīng)緯度之間距離的方法,涉及Java數(shù)學(xué)運(yùn)算的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
本文實(shí)例講述了Java編程獲取經(jīng)緯度之間距離的方法。分享給大家供大家參考,具體如下:
public class GeoUtil {
/**
* 根據(jù)經(jīng)緯度和距離返回一個(gè)矩形范圍
*
* @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時(shí)的計(jì)算公式
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 };
}
}
/**
* 得到兩點(diǎn)間的距離 米
*
* @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程序設(shè)計(jì)有所幫助。
您可能感興趣的文章:
- Java根據(jù)坐標(biāo)經(jīng)緯度計(jì)算兩點(diǎn)距離5種方法及校驗(yàn)經(jīng)緯度是否在圓/多邊形區(qū)域內(nèi)的算法推薦
- Java正則表達(dá)式實(shí)現(xiàn)經(jīng)緯度的合法性操作
- Java通過經(jīng)緯度坐標(biāo)獲取兩個(gè)點(diǎn)之間的直線距離的示例
- javaweb實(shí)現(xiàn)百度GPS定位接口(經(jīng)緯度)
- java 根據(jù)經(jīng)緯度獲取地址實(shí)現(xiàn)代碼
- Java將GeoHash轉(zhuǎn)化為對應(yīng)的經(jīng)緯度坐標(biāo)實(shí)例代碼
- 地址到經(jīng)緯度坐標(biāo)轉(zhuǎn)化的JAVA代碼
- 基于Java的度分秒坐標(biāo)轉(zhuǎn)純經(jīng)緯度坐標(biāo)的漂亮國基地信息管理的方法
相關(guān)文章
解決Spring Boot 多模塊注入訪問不到j(luò)ar包中的Bean問題
這篇文章主要介紹了解決Spring Boot 多模塊注入訪問不到j(luò)ar包中的Bean問題。具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09
java可變參數(shù)當(dāng)做數(shù)組處理的方法示例
這篇文章主要介紹了java可變參數(shù)當(dāng)做數(shù)組處理的方法,結(jié)合實(shí)例形式分析了java可變參數(shù)當(dāng)做數(shù)組處理相關(guān)原理、步驟與操作注意事項(xiàng),需要的朋友可以參考下2019-09-09
Java16 JDK安裝并設(shè)置環(huán)境變量的方法步驟
突然想起自己大學(xué)剛接觸java的時(shí)候,要下載JDK和配置環(huán)境變量,那時(shí)候我上網(wǎng)找了很多教學(xué),本文就詳細(xì)的介紹一下Java16 JDK安裝并設(shè)置環(huán)境變量,感興趣的可以了解一下2021-09-09
SpringBoot安全策略開發(fā)之集成數(shù)據(jù)傳輸加密
這篇文章主要介紹了SpringBoot集成數(shù)據(jù)傳輸加密,近期在對開發(fā)框架安全策略方面進(jìn)行升級優(yōu)化,提供一些通用場景的解決方案,本文針對前后端數(shù)據(jù)傳輸加密進(jìn)行簡單的分享2023-01-01

