我用這個代碼,但它不工作:我如何計算Java中兩個gps點之間的距離?
需要兩個GPS座標之間的距離就像41.1212,11.2323千米(Java)的
double d2r = (180/Math.PI);
double distance = 0;
try{
double dlong = (endpoint.getLon() - startpoint.getLon()) * d2r;
double dlat = (endpoint.getLat() - startpoint.getLat()) * d2r;
double a =
Math.pow(Math.sin(dlat/2.0), 2)
+ Math.cos(startpoint.getLat() * d2r)
* Math.cos(endpoint.getLat() * d2r)
* Math.pow(Math.sin(dlong/2.0), 2);
double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
double d = 6367 * c;
return d;
} catch(Exception e){
e.printStackTrace();
}
如果地球是一個完美的球體,那麼你的三角函數方法將非常有效。然而,它實際上是一個橢球體,所以從地表到地球核心的半徑根據你在地球上的位置而變化。要獲得準確的距離測量,您需要獲得一個可以解釋這一點的座標系統庫。假設一個球體可能足夠接近你做的任何事情,但如果你需要它非常準確,你需要找到一個好的圖書館。 – 2011-01-06 04:58:50
從重複的:[http://stackoverflow.com/questions/3694380/calculating-distance-between-two-points-using-latitude-longitude-what-am-i-doi][1] [1]:http://stackoverflow.com/questions/3694380/calculating-distance-between-two-points-using-latitude-longitude-what-am-i-doi – gonella 2015-07-19 12:29:02