1

我的主要活动中有这段代码,它将在文本视图中显示位置数据:

@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() 查找经度。

这些函数有效,我得到了“纬度”和“经度”变量中的值。

GPSTracker 类中的 onLocationChanged(Location location) 目前为空。

我想计算通过这种方法行进的距离: 计算一段时间内行进距离的最佳方法是什么?

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

4

2 回答 2

2

要获得行驶距离,您只需将 old_location 和 new_location 之间的距离相加。FE new_location 是您从 onLocationChanged 实际收到的位置。如果接收到新位置,它就会变成 old_location 等等。您可以使用Location.distanceBetween()方法来获取这两点之间的距离。

请记住,GPS 信号具有精度差异。

编辑:

因为这个主题非常广泛,所以试试这个:这里有一个很好的教程来接触 Location API。如果您想深入了解,请尝试Google 示例

于 2013-07-09T21:39:15.117 回答
0

你可以把你的全部检查放在里面onLocationChanged(),然后你可以检查阈值,因为即使你静止不动一段时间也会漂移。当与先前位置的差异大于 100 米时,可能只会增加行驶距离。

然后设置一个侦听器并通过侦听器将类onLocationChanged()更新回您的活动。这可以用来更新一些简单的东西,比如屏幕顶部的文本视图,它显示行驶的距离。

不确定是否有从纬度经度到公制测量的内置转换,如果有,您可以使用它。否则,您可能需要查看可以执行哪些快速公式来将 GPS 坐标转换为行进距离。

于 2013-07-09T21:31:10.940 回答