У меня есть база данных с текущими координатами каждого онлайн-пользователя. Нажатием кнопки пользователь может обновить свои координаты, чтобы обновить свое текущее местоположение (которые затем отправляются на сервер). Приложение позволит вам установить радиус круга (где пользователь находится в центре), в котором вы можете видеть других пользователей на карте. Пользователи вне круга отбрасываются.
Какой оптимальный способ найти пользователей вокруг вас?
1) Самое простое решение - найти расстояние между вами и каждым пользователем, а затем посмотреть, меньше ли оно радиуса. Это может привести к чрезмерной нагрузке на сервер, так как необходимо проводить сравнение с каждым пользователем в мире. Кроме того, как можно справиться с изменениями в локациях?
2) Улучшенный способ - вычислять и сравнивать только расстояние с другими пользователями, имеющими одинаковую широту и долготу. Опять же, чтобы быть эффективным, если радиус уменьшается, приложение должно ориентироваться только на пользователей с еще более близкими координатами. Это не так просто, как кажется. Если бы человек шел вокруг Северного полюса, скажем, с радиусом 10 метров, то каждый шаг по окружности равнялся бы изменению долготы на 9 градусов. Каждый шаг по экватору будет маргинальным. Тем не менее, даже будучи очень грубым и предполагая, что пользователей, посещающих поляков, не так много, я могу в некоторой степени сузить его.
Будем весьма благодарны за любые идеи, касающиеся нахождения пользователей поблизости и того, как их поддерживать в курсе событий! :)
Andres