计算行进距离-Android

时间:2013-07-09 21:23:04

标签: java android

我在我的主要活动中有这个代码,它将在textviews中显示位置数据:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_live);
    startactivity();
    }

启动功能:

    private void startactivity() 
{

            GPSTracker gps = new GPSTracker(Live.this);

            if(gps.canGetLocation())
            {
                double latitude = gps.getLatitude();
                double longitude = gps.getLongitude();

                Toast.makeText(getApplicationContext(), "Your Location is: \nLat: " + latitude + "\nLong: " + longitude, Toast.LENGTH_LONG).show(); 
            }
            else
            {
                gps.showSettingsAlert();
            }

}

我创建了一个单独的GPSTracker.java类来查找位置。

canGetLocation()是一个检查是否有可用提供者的函数。 getLatitude()找到纬度,getLongitude()找到经度。

这些功能起作用,我得到'纬度'和'经度'变量中的值。

onTraocationChanged(位置位置)现在在GPSTracker类中为空。

我想计算这种方法的行进距离: What is the best way to calculate distance travelled over a period of time?

但我对如何使用old_location和new_location变量感到困惑。 这是如何工作的,我如何用我当前的函数/类实现它?

2 个答案:

答案 0 :(得分:2)

要获得行进的距离,您只需要将old_location和new_location之间的距离相加。 F.E. new_location是您实际从onLocationChanged收到的位置。如果收到新位置,它将成为old_location,依此类推。您可以使用Location.distanceBetween()方法获取这两点之间的距离。

请记住,GPS信号的准确度存在差异。

编辑:

由于此主题非常广泛,请尝试以下方法: 与位置API取得联系是一个很好的Tutorial。如果您想深入了解,请尝试Google Samples

答案 1 :(得分:0)

您可以将整个检查放在onLocationChanged()内,然后您可以检查阈值,因为即使在静止一段时间后您也会漂移。当差异大于前一个位置100米时,可能只会增加行进距离。

然后设置一个监听器,让具有onLocationChanged()的类通过监听器更新回您的活动。这可以用来随后更新像屏幕顶部显示距离的文本视图一样简单。

不确定是否存在从latitute-longitude到公制测量的内置转换,如果是这样,您可以使用它。否则,您可能需要查看可以在GPS坐标与行进距离之间进行快速制定的方法。