Я делаю небольшой раздел приложения (телефон и веб-сайт), в котором можно найти ближайшие магазины (хранящиеся в моей базе данных). Я использую PHP, поэтому собираюсь использовать идею веб-сервиса и отправлять запросы AJAX на страницу PHP. Я нашел следующую информацию от snipplr.com:Создание приложения локатора магазина с использованием расстояния между двумя координатами
function distance($lat1, $lng1, $lat2, $lng2, $miles = true)
{
$pi80 = M_PI/180;
$lat1 *= $pi80;
$lng1 *= $pi80;
$lat2 *= $pi80;
$lng2 *= $pi80;
$r = 6372.797; // mean radius of Earth in km
$dlat = $lat2 - $lat1;
$dlng = $lng2 - $lng1;
$a = sin($dlat/2) * sin($dlat/2) + cos($lat1) * cos($lat2) * sin($dlng/2) * sin($dlng/2);
$c = 2 * atan2(sqrt($a), sqrt(1 - $a));
$km = $r * $c;
return ($miles ? ($km * 0.621371192) : $km);
}
который все хорошо, но у меня есть база данных около 300 мест. Мне просто нужно немного помочь начать с этого.
Моя идея состояла в том, чтобы выполнить запрос к БД и получить все длинные/латы в массиве и пропустить через массив, каждый раз используя эту вышеописанную функцию. Затем отсортируйте запросы по расстоянию и сделайте!
Но я просто задавался вопросом, лучший ли способ? Я относительно новичок в разработке PHP, поэтому вам нужно получить представление о лучших практиках и т. Д.
Спасибо за помощь!
Почему вы не используете геопространственные индексы, предоставляемые во многих БД, таких как SQL и MongoDB? – Sammaye