如果你确定想要设置为1英里乘1英里或任何类型的固定距离,我认为全球预定义聊天室(以一英里间隔)是更好的选择。这将更简单,因为添加新用户和避免人们移动位置时重叠会更加容易。如果您正在使用Firebase,并且正确扁平化数据,则拥有空房间不会对您造成太大损失。
唯一的原因可能是担心聊天室变得太满或太空。我不确定这是否是您的应用程序所关注的问题,但这肯定是具有预定义位置的缺点。即使这样,您也可以根据房间中的人数进行缩减(分割房间)或扩大规模(合并房间)。
希望这有所帮助。如果您需要更多指导,请告诉我们一些关于您的应用程序的信息?
更新:我明白你的意思。经过进一步的思考,我仍然认为预先确定区域是最好的方式。即使您突发创建新区域,也将存在一个需要分割房间(绘制房间之间的边界)的点,而在该线两侧的用户,即使他们彼此紧挨着,也将位于不同的房间中。
如果只基于纬度/经度和半径周围的用户,那么也可能会产生奇怪的结果。例如,如果B用户与A和C用户在一个房间中,但A和C用户相距太远,他们可能会看到一些非常奇怪的聊天消息。例如,如果该半径为1英里,UserA可以在Mile 0处,UserB可以在Mile 1处,而UserC可以在Mile 2处。因此对于UserA(只能看到UserA和UserC),聊天可能看起来像这样:
User A: Hello there! What is 2+2?
User B: 4
User A: Thank you!
User B: George Washington
User A: What?!?!
对于仅有权查看所有消息的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 B
和 User C
的 User C
用户,它可能会显示如下:
User B: 4
User C: Who was the first president of the United States?
User B: George Washington
User C: Thank you!
看起来这个问题可能会很快失控。尽管如此,我认为我的最初建议仍然是最好的,但我认为所有建议都会面临挑战。祝好运!