Ответ 1
Если вы уверены, что хотите, чтобы это было 1 миля на 1 милю или любое заданное расстояние, я думаю, что предопределенные чаты во всем мире с шагом в милю - лучший вариант. Это будет намного проще, если добавлять новых пользователей и избегать совпадений, когда люди перемещают места. Если вы используете firebase, и вы правильно сглаживаете свои данные, вы не будете слишком сильно болеть, если будете иметь пустые комнаты.
Единственная причина, по которой я не могу этого сделать, - это беспокоиться о том, что чаты становятся слишком полными или слишком пустыми. Я не уверен, что это проблема для вашего приложения, но это, безусловно, было бы недостатком в предопределенных местах. Даже тогда вы могли бы использовать предопределенные местоположения и масштабировать назад (разделяя комнаты) или увеличивать масштаб (объединяя комнаты вместе) в зависимости от количества людей в комнатах.
Надеюсь, это поможет. Если вы ищете больше направлений, не могли бы вы рассказать нам немного больше о вашем заявлении?
ОБНОВЛЕНИЕ: Я понимаю, о чем вы говорите. После дальнейших размышлений, я все еще думаю, что предопределенные области были бы лучшим способом. Даже если вы создадите новые области спонтанно, по-прежнему будет точка, где вам нужно будет разбить комнаты (провести границы между комнатами) и пользователей по обе стороны от этой линии, даже если они находятся рядом друг с другом, будет в разных комнатах.
Если он основан только на lat/lng и радиусе вокруг этих пользователей, это может привести к нечетным результатам. Например, если пользователь B находится в комнате с пользователями A и C, но пользователи A и C слишком далеки друг от друга, они могут видеть некоторые очень странные сообщения чата. Например, если этот радиус равен 1 мили, User A
может быть в Mile 0
, User B
может быть в Mile 1
, а User C
может быть в Mile 2
. Итак, чтобы User A
(кто может видеть только User A
и User C
), чат может выглядеть так:
User A: Hello there! What is 2+2?
User B: 4
User A: Thank you!
User B: George Washington
User A: What?!?!
To User B
(кто будет единственным, кто увидит все сообщения), он может выглядеть так:
User A: Hello there! What is 2+2?
User B: 4
User A: Thank you!
User C: Who was the first president of the United States?
User B: George Washington
User C: Thank you!
User A: What?!?!
В User C
(кто может видеть только User B
и User C
), он может выглядеть так:
User B: 4
User C: Who was the first president of the United States?
User B: George Washington
User C: Thank you!
Кажется, что это довольно быстро вышло из-под контроля. После всего этого, я думаю, мое первоначальное предложение по-прежнему остается лучшим, но я думаю, что у всех из них будут проблемы. Удачи!