我想创建一个应用,其中要显示用户已经走了多少距离。
我尝试使用float distance = locationA.distanceTo(locationB);
,但是它只是从头到尾画一条简单的直线,然后计算距离。
我想根据行进路线计算行进距离。可以使用任何Google Maps API这样做吗?
答案 0 :(得分:1)
您只需要服务来不断观察用户更改其位置,然后可以使用这些功能计算距离。
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);
}
答案 1 :(得分:0)
假设您有很多纬度长点组成一条路线。您必须对所有点取从上一个点到下一个点的距离,并保持总计。换句话说,您在路线之间需要很多纬度数据,否则您将获得一条直线。
答案 2 :(得分:0)
您可以使用google maps api来获取距离
使用此link了解如何使用它。