Android-приложение на основе местоположения, которое должно работать с расчетом радиуса
Я строю приложение на основе местоположения.
Допустим, у меня есть пользователь A, и у меня есть значения широты и долготы его текущего местоположения.
Я получил пользователя B,C,D и их местоположения. Например: пользователь B + D находится в радиусе 5 км от пользователя A, а пользователь C находится в радиусе 12 км от пользователя A, и я хочу знать, как я могу создайте функцию, которая сообщит мне, что рядом со мной на 4/5/6/7км и т. д. Если я пользователь А хочет, чтобы пользователи находились на расстоянии 8,5 км от него, то в результате я получу пользователя B + D и их расстояние от пользователя А.
Теперь... я знаю, что могу использовать класс Location и использовать функцию distance для вычисления расстояния между двумя пользователями. Но проблема в том, что если я хочу вычислить это для радиуса, мне нужно получить весь список пользователей из моей базы данных и отправить его клиенту, чтобы начать вычислять расстояния между ним и теми, кого я выбрал с сервера. Теперь я не хочу делать это с курса, если есть лучший и более эффективный способ..
Во-первых, я размышлял, используя http-запрос или некоторые математические функции, чтобы вычислить расстояние между моими пользователями на стороне сервера, но клиент (Android) предлагает очень хорошие инструменты для этого, поэтому из-за этого я теряю знание, что это лучший вещь которую нужно сделать.
Спасибо, голова вверх:)
1 ответ
Эй, разве вы не думаете, что всегда отправка местоположений пользователей n-1 одному, запрашивающему с сервера, неэффективна и потребляет ненужную полосу пропускания, чем отправка только немногим в радиусе радиуса? Сервер может легко сделать это вычисление. Подумайте о сценарии, в котором растет и растет база пользователей вашего приложения? Тогда что? Такое вычисление всегда выполняется на сервере.
Также почти всегда сервер обладает гораздо большей вычислительной мощностью, чем клиент. Поэтому, несмотря на то, что инструменты для Android выглядят прибыльными, не используйте их в таком сценарии.
С точки зрения инструментов, на стороне сервера тоже есть подобные. функция haversine. Также некоторые базы данных, такие как Mongo, также имеют встроенные фильтры местоположения. Так что это действительно стоит проверить.