实时查看地图视图中的其他人

时间:2017-09-17 13:37:19

标签: ios sql mapkit

我对我的应用程序的一部分有一个想法,但我不确定在逻辑上做到最好的方法。所以基本的想法是我有3个人正在使用该应用程序出现在他们的每个屏幕上。所以他们打开应用程序,会出现一个地图视图,如果他们在半径5公里范围内,他们的3个朋友会实时在地图上移动。

更好的解释方法是想象一所学校,每个孩子都打开了应用程序,老师可以看到每个孩子实时在哪里,因为他们都在5公里半径范围内。

我的第一直觉是获取每个用户的当前位置,并在数据库中更新用户lat和long。然后每隔3秒左右,每个设备都会从他们的数据库中获得用户,并在地图上显示他们的lat和long标记。我的主要问题是,如果数据库中的每10k用户每秒更新一次,它可能会崩溃并且对它有很大的压力。此外,如果它只显示彼此5公里半径范围内的用户,那么最好的方法是像SQL查询一样吗?所以像get all users from user table where lat is +-5km of device location and same for long这将是一个正方形,而不是半径,但这是我唯一能想到的。

我对iOS开发很新,我听说最好的数据库是Firebase?我不确定使用SQL是否更好

如果有人能帮我解决背后的逻辑,我们将不胜感激

谢谢你:)

1 个答案:

答案 0 :(得分:0)

对于这种带有多个子句的查询,我确实建议您使用SQL,因为即使Firebase是一个很棒的后端,它也不允许进行多次查询,并且最终会导致更多的数据消耗用例。

如果你决定使用Firebase,你仍然可以在客户端处理过滤(仅显示半径小于5公里的用户)。 但这需要您先拉出所有用户,然后过滤它们(在客户端上),以便只保留距离不到5公里的用户。这最终会不可避免地花费你所需的数据,但这是可能的。

要限制返回的用户数,您仍然可以使用以下方法进行过滤:

yourDatabaseRef.orderBy("X").equalTo("Y")

对于问题的其他部分(计算半径5公里范围内的所有点),您可以在这个有趣的thread找到许多答案。 :)