Я считаю, что ваша главная проблема в том, что вы путаете широту с долготой.Вы не показали нам неправильный код, но имейте в виду, что в ваших массивах сначала вам понадобится долгота, а затем широта, чтобы ваша функция работала.В приведенном вами примере вы сначала указали широту, а затем долготу.
Ваш код определенно определит расстояние между этими двумя точками, как записано в 576 (в единицах, которые я упомянучерез минуту), но на самом деле это не то место, о котором вы думаете :) Попробуйте изменить свою функцию следующим образом:
$lat1 = $decA[0]; //This would be equal to point A's *latitude*, and so on..
$lon1 = $decA[1];
$lat2 = $decB[0];
$lon2 = $decB[1];
... или просто передайте значения в ожидаемом порядке.
Кроме того, я не узнаю ваш множитель расстояния, но, похоже, вы рассчитываете результат в милях, а не в километрах.Для километров попробуйте:
$distance = sin(deg2rad($lat1)) * sin(deg2rad($lat2)) + cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($lon2-$lon1));
$distance = acos($distance);
$distance = $distance * 6372.8;
$distance = round($distance, 4);
(конвертируется только в градусы и множитель изменяется, базовая формула остается прежней.)
Учитывая указанные выше изменения, ваше расстояниеработает около 2 008 километров.Это примерно так?Боюсь, я никогда не бывал в Монреале, Орландо или где-то еще ...