ВЫБРАТЬ почтовый индекс, лат, lng,
усечение (
(градусы (экос
(Sin (радианы (lat
))
*
грех (радианы ('. $ широта.'))
+
Cos (радианы (lat
))
*
cos (радианы ('. $ latitude.'))
*
cos (радианы (lng
- ('. $ долгота.')))
)
)
* 69,172), 2)
как расстояние
ОТ myData
Этот запрос рассчитывает расстояние (в милях). Но когда я проверяю расстояние для того же широты и долготы на картах Google, мой результат не совпадает. Если расстояние составляет около 10 миль, то мой результат немного точный, но из-за этого он ошибается (например, мой результат показал 13 миль, а Google показал 22 мили для тех же значений почтового индекса)
Я получил этот запрос от http://forums.mysql.com/read.php?23,3868,3868#msg-3868
Как я могу получить это точно? Есть идеи?
Спасибо за помощь.
UPDATE
Я попробовал @Blixt код в PHP. Подобрал 2 образца почтовых индексов и их латы длинных
//B28 9ET
$lat1 = 52.418819;
$long1 = -1.8481053;
//CV5 8BX
$lat2 = 52.4125573;
$long2 = -1.5407743;
$dtr = M_PI / 180;
$latA = $lat1 * $dtr;
$lonA = $long1 * $dtr;
$latB = $lat2 * $dtr;
$lonB = $long2 * $dtr;
$EarthRadius = 3958.76; //miles
echo $distance = $EarthRadius * acos(cos($latA) * cos($latB) * cos($lonB - $lonA) + sin($latA) * sin($latB));
Результаты:
Мое приложение - 12,95 миль
Google - 17,8 миль
Есть идеи, как сделать это правильно?