-
-
Save KrotovRoman/ab3af50335503f50893b8b96ba43625f to your computer and use it in GitHub Desktop.
Посчитать расстояние между двумя точками в координатах
координаты
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /* | |
| * Посчитать расстояние между двумя точками в координатах | |
| * @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; | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment