KrotovRoman
3/14/2018 - 4:36 PM

расстояние между двумя точками

Посчитать расстояние между двумя точками в координатах координаты

/*
     * Посчитать расстояние между двумя точками в координатах
     * @src http://dmitry.im/mysql-dist/
     * @example 
     * $lat1 = 55.130974;
        $lon1 = 61.420328;
        
        $lat2 = 55.130682;
        $lon2 = 61.421776;
        $res = $this->getDistance($lat1, $lon1, $lat2, $lon2);
        var_dump($res);
     */
    public static function getDistance($lat1, $lon1, $lat2, $lon2) {
        $lat1 *= M_PI / 180;
        $lat2 *= M_PI / 180;
        $lon1 *= M_PI / 180;
        $lon2 *= M_PI / 180;

        $d_lon = $lon1 - $lon2;

        $slat1 = sin($lat1);
        $slat2 = sin($lat2);
        $clat1 = cos($lat1);
        $clat2 = cos($lat2);
        $sdelt = sin($d_lon);
        $cdelt = cos($d_lon);

        $y = pow($clat2 * $sdelt, 2) + pow($clat1 * $slat2 - $slat1 * $clat2 * $cdelt, 2);
        $x = $slat1 * $slat2 + $clat1 * $clat2 * $cdelt;

        return atan2(sqrt($y), $x) * 6372795;
    }