2012-12-18 32 views
2

我目前的位置的後面,我有一些位置(經緯度&長),我需要顯示在列表視圖這些地點位置。我可以完美地做到這一點。查找與Android中

但現在我想告訴那些未來我的當前位置的位置。這意味着我想跳過我在駕駛過程中已經通過的位置。

讓我澄清更清楚。我們有loc1(lat,lon),loc2(lat,lon),loc3(lat,lon)...... loc100(lat,lon)等位置。在我開車期間,我喜歡看到位置(loc1 - loc100)。但是現在我想隱藏從當前位置/位置通過的位置(在loc1到loc100之間)。說,我已經通過了loc1,loc3,loc5,所以我需要從列表視圖中跳過這3個位置。爲了實現這一點,我需要知道哪些位置(loc1 - loc100)位於我當前位置後面(gps當前位置),以便我可以跳過這些位置。

有什麼想法?我如何在我的代碼中實現這一點?請幫助這一點。

+0

做這些(LAT,多頭),你必須表現出路徑...可能是前往目的地的路線? – drulabs

+0

基本上我有一些位置(經緯度),並顯示駕駛過程中的這些位置。但現在想要開車的時候,我不需要顯示我已經通過的位置。這裏我沒有機會使用地圖,它是一個列表視圖。任何想法? – arefin

+1

你的問題不具體。你想讓司機通過確切的位置說(lat1,long1)或附近的區域,或者只是越過經度/緯度......你想隱藏哪些位置。請明確說明。 – drulabs

回答

0

我將有位置的至少兩個對象的數據結構(例如,鏈表):

  • unvisitedLocations
  • visitedLocations

您的列表被顯示給用戶將基於內容unvisitedLocations數據結構。

根據您的實時位置,您將需要檢測接近每個基於給定半徑的閾值,你選擇在unvisitedLocations數據結構中的位置的對象。要做到這一點,您可以使用LocationManager.addProximityAlert()方法註冊每個位置(它會在檢測鄰近時觸發PendingIntent),或者循環訪問unvisitedLocations數據結構並自行完成此操作 - 例如:

if(currentLocation.distanceTo(unvisitedLocations[i]) < threshold){ 
    visitedLocations.add(unvisitedLocations[i]);   
    unvisitedLocations.remove(i); 
} 

這會給你當前訪問和unvisitedLocations根據您的實時位置列表。

請注意,隨着unvisitedLocations的初始大小不斷增長,性能將成爲一個問題,因爲您需要遍歷整個數據結構內容以確定每個實時位置更新的位置鄰近度,這可能是每秒一次來自GPS。如果性能成爲問題,您應該考慮移動鄰近檢測服務器端並使用空間數據庫,該數據庫具有特殊的數據結構,以使距離檢測更加密集。

+0

謝謝你的解決方案。我喜歡。我沒有選擇使用服務器端,所以如果我去你的訪問/未訪問的數據結構和使用gps分鐘時間是2分鐘,那麼它將擅長性能。你怎麼看? – arefin

+0

取決於您正在跟蹤的未訪問地點的數量。我認爲,在每隔幾秒鐘監測一次GPS的情況下,中端到高端Android設備仍然會有合理的性能,但是如果可能的話,您需要在真實設備上進行測試,然後才能使您的應用可用對公衆。使用2分鐘的GPS更新速率,您可能可以在1000個位置上運行,而不會對設備產生巨大影響 - 再次測試非常重要。小心閾值 - 2分鐘。 GPS更新率,你需要一個很大的門檻,以避免漏檢探測。 –

+0

是的,你是對的,再次感謝你。 – arefin