我正在制作一个应用程序,需要能够找到附近的人,他们是我的应用程序的用户。
我看了很多类似问题的答案,似乎我别无选择,只能不断将用户的当前位置上传到服务器,并在必要时获取附近的用户列表。
那么我的问题是,
1. 要获取附近的列表,应该有一些计算距离的算法或函数。那么这是否意味着我必须获取我的位置与其他应用程序用户之间的所有距离?因此服务器返回一定数量的具有最小距离结果的用户。如果我是对的,那么不会有内存或时间问题吗?
2. 这可能听起来很奇怪,但是这样怎么样?
我可能会将纬度和经度信息或地址信息发送到服务器。我不能使用字符串搜索算法或其他方式将这些字符串与所有用户的地址列表中的第一个数字或字母进行比较吗?
例如,如果我最后更新的地址是服务器上的“abcde”,算法将查找以“a”开头的地址,如果搜索完成,则查找“a”后面有“b”的地址,换句话说'ab'。
这可能不是一个正确的解决方案,但我认为它可能有效,因为地址将以相同的形式保存。
为了有效地找到附近的用户,您需要一个空间索引。看:分层三角网格 http://research.microsoft.com/apps/pubs/default.aspx?id=64531.
您还可以使用其中之一支持空间查询的数据库 http://en.wikipedia.org/wiki/Spatial_database.
我可能会将纬度和经度信息或地址信息发送到服务器。我不能使用字符串搜索算法或其他方式将这些字符串与所有用户的地址列表中的第一个数字或字母进行比较吗?
这不适用于纬度和经度,因为这样您只能搜索一维的邻近度。例如,30°N 30°E 看起来更接近 30°N 90°E,而不是 31°N 30°E。
它可能适用于地址,但前提是它们与坐标可靠连接(即不是由用户输入),并且仅当您不介意相距 200 米但位于某些行政边界不同侧的用户不算作接近时对彼此。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)