2014-02-12 60 views
5

我正在做一個應用程序,需要能夠找到附近的人,誰是我的應用程序的用戶。
我看了許多先例類似問題的答案,似乎我別無選擇,只能繼續上傳用戶的當前位置到服務器,並在必要時獲取附近用戶的列表。如何在android中查找附近的應用用戶?

然後我的問題是,
1.要得到附近的列表,應該有一些算法或函數來計算距離。那麼這並不意味着我必須獲得我的位置和其他應用程序用戶之間的所有距離嗎?所以服務器返回一定數量的距離最短的用戶。如果我是對的,不會有記憶或時間問題?
2.這聽起來很奇怪,但這個怎麼樣。
我可能會發送經緯度信息或地址信息到服務器。我無法將這些字符串與使用字符串搜索算法的第一個數字或字母的所有用戶地址列表進行比較嗎?例如,如果我上次更新的地址在服務器上是'abcde',算法將查找以'a'開頭的地址,如果搜索完成,則查找在'a'之後有'b'的地址,在換句話說'ab'。
這可能不是一個正確的解決方案,但我認爲它可能工作,因爲地址將以相同的形式保存。

回答

3

要高效地找到附近的用戶,您需要一個空間索引。參見:Hierarchical Triangular Mesh

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

我可能會發送經緯度信息或地址信息到服務器。我無法將這些字符串與使用字符串搜索算法的第一個數字或字母的所有用戶地址列表進行比較嗎?

這不適用於經緯度,因爲這樣你只能在一個維度上搜索接近度。例如,30°N 30°E將出現在接近30°N 90°E的地方,而不是31°N 30°E。

它可以與地址一起使用,但前提是它們必須與座標可靠連接(即不能由用戶鍵入),並且只有當您不介意距離相距200米但位於某些行政邊界不同側的用戶時不算相互接近。

+0

謝謝:)你的回答很清楚地解決了我的好奇心。 – user3052069

0

您可以使用服務器端的REST API使用PHP,它將所有用戶的LAT LONG當作您的應用程序在某個時間從用戶的Android手機間隔讓我們說5 min &它返回最近的位置,地址Distance.You需要在特定時間調用Api @間隔&作爲響應來自服務器您將獲得所有細節您想要的應用程序的最近位置,距離和其他事情。

爲什麼我建議這種方式,因爲從Android邊做計算,會影響應用程序性能有電池問題,以便其更好地都從服務器端,而不是Android的(用戶)側

希望這種計算會幫助你。

+0

謝謝!我會嘗試在服務器端。 – user3052069

相關問題