Android使用Location对象获取距离

时间:2011-03-15 16:46:43

标签: android geolocation gps location

我想拍摄一系列由GPS返回的坐标样本并计算它们之间的(直线)距离,以便我可以通过Excel绘制距离图。我看到distanceBetween类的方法distanceToLocation,但我担心这些方法不会返回直线距离。

是否有人知道这些方法返回的距离,或者是否有任何方法可以根据Location类返回的纬度/经度值计算直线距离?

4 个答案:

答案 0 :(得分:2)

如果您想以某种方式希望自己进行此计算,Google搜索将提供解决方案。例如,Haversine方法:

var R = 6371; // km
var dLat = (lat2-lat1).toRad();
var dLon = (lon2-lon1).toRad(); 
var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
        Math.cos(lat1.toRad()) * Math.cos(lat2.toRad()) * 
        Math.sin(dLon/2) * Math.sin(dLon/2); 
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); 
var d = R * c;

报告here。请注意,这是直线,并不考虑高程的不规则等。

答案 1 :(得分:1)

答案 2 :(得分:0)

这是我的代码

float[] result=new float[1];
        if(cordenatalar.size()>1)
        {

            LatLong add_kor=(LatLong)cordenatalar.get(cordenatalar.size()-1);
            Location.distanceBetween(add_kor.getLat(), add_kor.getLongg(), location.getLatitude(), location.getLongitude(), result);
            kilometr+=result[0];
            //KMTextView.setText(String.valueOf(kilometr));
        }
        KMTextView.setText("sss: "+String.valueOf(cordenatalar.size()+"  res: "+kilometr+" metr"));
        cordenatalar.add(new LatLong(location.getLatitude(), location.getLongitude()));

答案 3 :(得分:-1)

source =起始位置;

目的地=当前位置;

/ *此方法将获取两个地理点之间的距离。 * /

source.distanceTo(目的地);