如何在 android 中找到附近的应用程序用户?

Posted

技术标签:

【中文标题】如何在 android 中找到附近的应用程序用户?【英文标题】:How do I find nearby app users in android? 【发布时间】:2014-02-12 07:22:07 【问题描述】:

我正在制作一个应用程序,它需要能够找到附近的人,他们是我的应用程序的用户。 看了很多先例类似问题的回答,看来我只好继续上传用户当前位置到服务器,必要时获取附近用户列表。

那么我的问题是, 1.要获得附近的列表,应该有一些计算距离的算法或函数。那么这是否意味着我必须获取我的位置与其他应用程序用户之间的所有距离?因此,服务器返回一定数量的具有最小距离结果的用户。如果我是正确的,不会有内存或时间问题吗? 2. 这可能听起来很奇怪,但是这个怎么样。 我可能会将经纬度信息或地址信息发送到服务器。我不能使用字符串搜索算法或其他东西将这些字符串与第一个数字或字母的所有用户地址列表进行比较吗? 例如,如果我上次更新的地址是服务器上的'abcde',算法会寻找以'a'开头的地址,如果搜索完成,则寻找'a'后面有'b'的地址,换句话说'ab'。 这可能不是一个正确的解决方案,但我认为它可能会起作用,因为地址将以相同的形式保存。

【问题讨论】:

【参考方案1】:

为了有效地找到附近的用户,您需要一个空间索引。见:Hierarchical Triangular Mesh。

您也可以使用databases that support spatial queries 之一。

我可能会向服务器发送纬度和经度信息或地址信息。我不能使用字符串搜索算法或其他东西将这些字符串与第一个数字或字母的所有用户地址列表进行比较吗?

这不适用于纬度和经度,因为这样您只能在一维中搜索邻近度。例如,30°N 30°E 看起来更接近 30°N 90°E,而不是 31°N 30°E。

它可能适用于地址,但前提是它们与坐标可靠连接(即不是由用户输入),并且只有当您不介意相距 200 米但位于某些行政边界不同侧的用户不会算作彼此接近。

【讨论】:

【参考方案2】:

您可以使用 php 从服务器端使用 REST Api,该 API 在特定时间从用户的 android 手机获取所有用户的当前 LAT LONG 时间间隔让我们说 5 分钟,它返回最近的位置、地址距离。您需要调用 Api @ 特定时间间隔并从服务器响应您将获得您想要的所有详细信息,例如您的应用程序用户的最近位置、距离和其他事物。

为什么我建议这种方式,因为从 Android 端进行计算会影响应用程序的性能有电池问题所以最好从服务器端而不是 Android(用户)端进行所有计算

希望这会对你有所帮助。

【讨论】:

谢谢!我会在服务器端尝试。【参考方案3】:

我在这里有点晚了,但是对于遇到此问题的任何人,假设您将 Firebase 用于您的数据库,您最好的选择是 GeoFire,使用围绕坐标中特定点和公里半径的查询。这是 github repo https://github.com/firebase/geofire-android 的链接,它详细解释了所有内容。

【讨论】:

以上是关于如何在 android 中找到附近的应用程序用户?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Android 中找到我附近的瑜伽场所?

GeoFire Android:GeoQuery 只显示最近的用户,而不是所有附近的用户

如何使用firebase作为数据库在android中获取附近的用户名?

附近设备中的应用程序通信,无需用户干预

基于 Android 地图的位置

在 Xcode 中使用拆分数据查找用户位置附近的数据