如何通过公交获得覆盖距离
How to get covered distance by transit
我想创建一个应用程序,我想在其中显示用户走了多远。
我试过使用float distance = locationA.distanceTo(locationB);
,但它只是从头到尾画一条简单的直线,然后计算距离。
我想根据行驶路线计算行驶距离。是否可以使用任何 Google 地图 API?
假设您有一堆经纬度点组成一条路线。您必须为所有点计算从上一个点到下一个点的距离,并保留总和。换句话说,您需要路线之间的大量经纬度数据,否则您只会得到一条直线。
您可以使用 google 地图 api 来获取距离
使用这个 link 了解如何使用它。
你只需要服务来持续观察用户改变它的位置然后你可以使用这些函数来计算距离。
public double GetDistanceInKm(double lat1, double lon1, double lat2, double lon2)
{
final int R = 6371;
// Radius of the earth in km
double dLat = deg2rad(lat2 - lat1);
// deg2rad below
double dLon = deg2rad(lon2 - lon1);
double a = Math.sin(dLat / 2) * Math.sin(dLat / 2) + Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(lat2)) * Math.sin(dLon / 2) * Math.sin(dLon / 2);
double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
double d = R * c;
// Distance in km
return d;
}
private double deg2rad(double deg)
{
return deg * (Math.PI / 180);
}
我想创建一个应用程序,我想在其中显示用户走了多远。
我试过使用float distance = locationA.distanceTo(locationB);
,但它只是从头到尾画一条简单的直线,然后计算距离。
我想根据行驶路线计算行驶距离。是否可以使用任何 Google 地图 API?
假设您有一堆经纬度点组成一条路线。您必须为所有点计算从上一个点到下一个点的距离,并保留总和。换句话说,您需要路线之间的大量经纬度数据,否则您只会得到一条直线。
您可以使用 google 地图 api 来获取距离
使用这个 link 了解如何使用它。
你只需要服务来持续观察用户改变它的位置然后你可以使用这些函数来计算距离。
public double GetDistanceInKm(double lat1, double lon1, double lat2, double lon2)
{
final int R = 6371;
// Radius of the earth in km
double dLat = deg2rad(lat2 - lat1);
// deg2rad below
double dLon = deg2rad(lon2 - lon1);
double a = Math.sin(dLat / 2) * Math.sin(dLat / 2) + Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(lat2)) * Math.sin(dLon / 2) * Math.sin(dLon / 2);
double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
double d = R * c;
// Distance in km
return d;
}
private double deg2rad(double deg)
{
return deg * (Math.PI / 180);
}