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

Php 如何根据纬度和经度计算距离,php,android,ios,google-maps,Php,Android,Ios,Google Maps,我正在创建一个骑马应用程序,它是一个类似优步的应用程序。使用PHP for API与Android和ios设备进行通信。我的后端代码几乎与Android和ios应用程序一起完成。现在我在计算实时距离时遇到了问题。如果我使用谷歌距离矩阵api,谷歌返回的距离不是我的实时距离。我的意思是谷歌返回基于路线可用。若我遵循谷歌建议的路线,距离对我来说是可以的,但若我使用不同的路线,我如何计算距离?可以计算实时距离吗?如果可能的话,你能给我一个主意吗?用这个 Location locationA = new

我正在创建一个骑马应用程序,它是一个类似优步的应用程序。使用PHP for API与Android和ios设备进行通信。我的后端代码几乎与Android和ios应用程序一起完成。现在我在计算实时距离时遇到了问题。如果我使用谷歌距离矩阵api,谷歌返回的距离不是我的实时距离。我的意思是谷歌返回基于路线可用。若我遵循谷歌建议的路线,距离对我来说是可以的,但若我使用不同的路线,我如何计算距离?可以计算实时距离吗?如果可能的话,你能给我一个主意吗?

用这个

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) ;

//像这样试试,会对你有帮助的

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);

首先,您需要计算从纬度到经度的距离

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

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;
某些时间位置对象也提供速度。Use可以使用
Location.getSpeed()