如何根据纬度和经度计算距离

时间:2016-05-26 05:24:31

标签: php android ios google-maps

我正在创建一个骑行应用程序,它是一个优步的应用程序。使用PHP for API来交流Android和ios设备。我的后端代码几乎与Android和ios应用程序一起完成。现在我有计算实时距离的问题。如果我使用谷歌距离矩阵api,谷歌返回我的距离不是我的实时距离。我的意思是谷歌返回基于可用的路线。如果我按照谷歌距离建议的路线对我来说没问题,但如果我使用不同的路线我怎么能计算距离?有可能计算实时距离吗?如果可能的话,请你给我一个想法吗?

3 个答案:

答案 0 :(得分:0)

使用此

Location locationA = new Location("point A");     
locationA.setLatitude(latA); 
locationA.setLongitude(lngA);
Location locationB = new Location("point B");
locationB.setLatitude(latB); 
LocationB.setLongitude(lngB);
distance = locationA.distanceTo(locationB) ;

答案 1 :(得分:0)

//尝试这样,它会帮助你

CLLocation * Location1 = [[CLLocation alloc] initWithLatitude:latitude1 longitude:langitude1];
CLLocation * Location2 = [[CLLocation alloc] initWithLatitude:latitude2 longitude:langitude2];;


CLLocationDistance distance = [Location1 distanceFromLocation:Location2];
double distance1 = (distance/1000);

答案 2 :(得分:0)

首先,你需要计算纬度和经度的距离。

计算距离使用以下代码: -

private double getDistance(Context context, Location location, Loation PerviousLocation) {
        if (location != null && PerviousLocation != null) {

            double lat = PerviousLocation.getLatitude();
            double longe = PerviousLocation.getLongitude(); ;

            float[] distance = new float[1];
            Location.distanceBetween(lat, longe, location.getLatitude(), location.getLongitude(), distance);
            return distance[0];
        }
        return 0;
    } 

现在找到时间间隔

  private double getDifferenceInTime(Context context, long currentTime, long previousTime) { 
    long diff = currentTime - previousTime;
    return diff / 1000;
}

现在使用速度公式: -

Speed:- distance/time;

某些时间位置对象也提供速度。使用可以使用Location.getSpeed();