当当前位置和上一个位置相差x米时,Android地图会将位置更新到服务器

当当前位置和上一个位置相差x米时,Android地图会将位置更新到服务器,android,android-maps-v2,android-maps,Android,Android Maps V2,Android Maps,当当前位置和以前的位置相差x米时,我想用当前位置的latlong更新服务器 我有一个应用程序,我想跟踪车辆的运动,因此,当驾驶室的当前位置与以前存储的位置相差x米时,在车内使用该应用程序的驾驶员将自动更新其当前位置。所以其他用户将能够找到这个驱动程序的确切位置。(所以在这种情况下,我应该运行一个线程来自动请求更新当前位置或其他东西) 如何确定两个latlong点之间的距离,以便我可以确定当前位置和以前存储的位置之间的差异是否为X米 如果我使用requestLocationUpdates(字符串提

当当前位置和以前的位置相差x米时,我想用当前位置的latlong更新服务器

我有一个应用程序,我想跟踪车辆的运动,因此,当驾驶室的当前位置与以前存储的位置相差x米时,在车内使用该应用程序的驾驶员将自动更新其当前位置。所以其他用户将能够找到这个驱动程序的确切位置。(所以在这种情况下,我应该运行一个线程来自动请求更新当前位置或其他东西)

如何确定两个latlong点之间的距离,以便我可以确定当前位置和以前存储的位置之间的差异是否为X米

如果我使用
requestLocationUpdates(字符串提供程序、long-minTime、float-minDistance、LocationListener)
功能,我将能够以X米的形式提供minDistance,它可以完成任务,但不能向服务器提供准确的更新

我已经讨论过这个问题,但由于我是一个初学者,所以没有明确的想法。
因此,如果有人能帮助我实现这一点,我将不胜感激。

您可以将以前的位置存储在首选项变量中,然后每当位置发生变化时,您都可以计算当前位置和以前位置之间的距离,因此您可以在LocationListener中使用distanceBetween函数:

@Override
    public void onLocationChanged(Location loc) {
....
final float[] results = new float[1];
Location.distanceBetween(previous.lat, previous.lng, loc.lat, loc.lng, results);
...
}
现在,以米为单位的距离存储在结果[0]中,您可以随意使用它。

您可以使用。阅读有关如何接收位置更新的文档

创建时,您可以使用指定接收更新的频率和或使用指定更新之间的最小距离

当您收到更新时,可以将纬度和经度存储在共享首选项中,并在下次收到更新时使用这些值

如果要检查两个位置之间的距离是否大于指定的最小距离,可以使用

有关如何在共享首选项中保存位置数据的信息,请参阅