Java編程獲得經緯度之間間隔的辦法。本站提示廣大學習愛好者:(Java編程獲得經緯度之間間隔的辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是Java編程獲得經緯度之間間隔的辦法正文
本文實例講述了Java編程獲得經緯度之間間隔的辦法。分享給年夜家供年夜家參考,詳細以下:
public class GeoUtil {
/**
* 依據經緯度和間隔前往一個矩形規模
*
* @param lng
* 經度
* @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法式設計有所贊助。