2013-07-18 13 views
0

我在寫一個應用程序,利用解析雲數據存儲。我最近被告知,我正在撰寫這篇文章的人正在打開第二個位置,並希望知道用戶正在登記/記錄數據的位置。我找到了谷歌代碼: http://developer.android.com/training/location/geofencing.html即時檢查與Android中兩個位置之一的接近程度的最佳方法?

定義瞭如何使用地理圍欄以及如何獲取最後已知的GPS /網絡位置。
http://developer.android.com/guide/topics/location/strategies.html

但我不知道這些是否是我需要的。基本上,我試圖做到以下幾點:

  1. 用戶啓動應用程序
  2. 用戶點擊「簽到」在健身房
  3. 檢查在一類當「檢查」活動的負荷,用戶可以點擊一個類。在這個時候,我想知道用戶是否說...距中央經緯度5英里之內。這兩個地點相距約20英里,所以粗略估計甚至在幾英里內應該沒問題(他們是在桑尼維爾還是聖何塞?)
  4. 當用戶點擊一個班級時,簽到被髮送到解析數據庫,與位置(任何一個城市或其他)

沿着我不知道,如果是地理界線爲適當這種情況下,我只需要知道基本的一個point..but粗糙區域獲取樣本的位置似乎不顯示如何檢查手機何時接近點。

對於這一點,我已經找到了以下內容: http://www.javacodegeeks.com/2011/01/android-proximity-alerts-tutorial.html

這似乎是最好的選擇,但它會不斷檢查與設定點「距離」,我需要,如果告訴一次用戶靠近一個或其他位置。

回答

2

事情是這樣的,也許:

Location me = new Location(""); 
Location dest = new Location(""); 

me.setLatitude(myLat); 
me.setLongitude(myLong); 

dest.setLatitude(destLat); 
dest.setLongitude(destLong); 

float dist = me.distanceTo(dest); 

然後可以重複第二位點,並同時存儲的距離,然後比較一下,看最小。

+0

謝謝!我發現了半胱氨酸的公式,但是當我嘗試用Geopoints實現它時,我總是得到一些noclassdef錯誤。讓我試試這個,我會接受這個。這也很簡單,因爲我並沒有真正嘗試geofence或提示用戶。只需要簡單的檢查,看看他們是否是一個點或另一個。 –

+0

是的,我努力在我的應用程序中實現Haversine,但考慮到相對靠近點證明是不必要的。對於雙倍或甚至三位數英里的距離應該是罰款:-) –

+0

斯科特。接受了答案,因爲這適用於我的使用。 Haversine是一種痛苦,它會返回近似的米數,並且由於這兩個位置相距約20英里或更遠,只要它在4英里以內(通常是獲取單元格塔位置而不是gps座標),它就足夠「準確」爲此使用。謝謝您的幫助! –

相關問題