Javaは、2つの緯度と経度の間の距離の計算を実装し、詳細についてはコメントを参照してください。
コードコピーは次のとおりです。
パッケージcom.jttx.poi.utils;
com.jttx.poi.entity.pointをインポートします。
/**
* 2014/9/2にルイによって作成されました。
*/
パブリッククラスのgeoutils {
/**
* 2つの緯度と経度の間の距離を計算します(単位:メートル)
* @param lng1経度
* @param lat1緯度
* @param lng2
* @param lat2
* @戻る
*/
public static double getdistance(double lng1、double lat1、double lng2、double lat2){
double radlat1 = math.toradians(lat1);
double radlat2 = math.toradians(lat2);
double a = radlat1 -radlat2;
ダブルB = Math.Toradians(LNG1)-Math.Toradians(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 * 6378137.0; // WGS84標準参照楕円(ユニット:m)の地球の長さの半径を取る
S = Math.Round(S * 10000) / 10000;
s;
}
/**
* TP値を計算します
* @param Curpoint Current Point
* @param関連ポイントオフセットポイント
* @param isgography地理的座標がfalseであるかどうかは2D座標であるか
* @return tp値
*/
public static double getDirangle(ポイントcurpoint、point関連ポイント、ブールイソグラフィー){
二重結果= 0;
if(isgeography){
double y2 = math.toradians(relatedpoint.getlat());
double y1 = math.toradians(curpoint.getlat());
double alpha = math.atan2(relatedpoint.getlat() - curpoint.getlat()、(relatedpoint.getlng() - curpoint.getlng()) * math.cos((y2 -y1)/ 2)); //緯度方向にcosを掛けた(y2-y1/2)
double delta = alpha <0?(2*math.pi+alpha):alpha;
result = math.todegrees(delta);
}それ以外 {
double alpha = math.atan2(relatedpoint.getlat() - curpoint.getlat()、relatedpoint.getlng() - curpoint.getlng());
double delta = alpha <0?(2*math.pi+alpha):alpha;
result = math.todegrees(delta);
}
返品結果;
}
public static void main(string [] args){
System.out.println(getDistance(121.446014、31.215937、121.446028464238、31.2158502442799));
}
}
上記はこの記事のすべてです。あなたがそれを気に入ってくれることを願っています。