我想根据许多用户的位置制作移动应用。用户想要快速找到他周围距离(例如:10km)的所有其他用户,距离不需要太精确(可能从9km到11km而不是10km),服务器将处理这个过程。如果我有数百万用户,那么蛮力将意味着做太多的计算。你能建议我一些其他的解决方案或算法吗?
谢谢!
答案 0 :(得分:0)
以下是您可以做的事情:
将整个区域划分为伪网格。当用户从一个磁贴移动到另一个磁贴时,您的应用程序会更新服务器,其位置表示磁贴编号。这通常可以使用GPS
AFAIK来完成。
因此,服务器会持续跟踪移动设备所在的当前磁贴。现在,当用户要求附近的邻居时,只需几秒钟,因为服务器只需要发送与当前用户的磁贴相邻的磁贴中的用户列表。
另外,请注意,您需要根据要扫描附近用户的距离来选择切片大小。
答案 1 :(得分:0)
我会保留一张地图< Area,Set< User>>其中Area是从用户坐标派生的表达式。作为一个简单的例子,使用具有度数N / S和E / W的函数。如果用户想要找到亲密伙伴,则必须从该区域和(可能)从一个,两个或三个相邻区域中检索用户。
有360 * 180 = 64800对< deg,deg>但远远超过(猜测,猜测)90%将不会被使用。您可以将此扩展为< deg.min,deg.min>对,即360 * 180 * 3600 = 233280000个不同的对,具有相同的非使用百分比。