【问题标题】:Calculate distance travelled -Android计算行驶距离-Android
【发布时间】:2013-07-09 21:23:04
【问题描述】:

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

@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) 暂时为空。

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

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

【问题讨论】:

    标签: java android


    【解决方案1】:

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

    请注意,GPS 信号的准确性存在差异。

    编辑:

    因为这个主题非常广泛,试试这个: 这是一个很好的Tutorial 与 Location API 取得联系。如果您想深入了解,请尝试Google Samples

    【讨论】:

    • 是的,我理解这个概念,但我无法通过编码部分。我必须在哪里声明和初始化这些位置。哪个方法返回新位置?我必须在哪里做新到旧的事情?在 onLocationChanged() 或 startactivity() 中。如果 onLocationChanged 在不同的类中,它仍然可以工作吗?因为我们不必调用它。
    【解决方案2】:

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

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

    不确定是否有从纬度经度到公制测量的内置转换,如果有,您可以使用它。否则,您可能需要了解如何快速制定将 GPS 坐标转换为行进距离的方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-11
      • 1970-01-01
      • 2015-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-09
      • 1970-01-01
      相关资源
      最近更新 更多