2014-03-30 71 views
0

我正在制定計劃安排程序android應用程序。將Lat lng與一組數據庫數據進行比較的算法

的數據是這樣的:

Place 
======== 
lat 
lng 
duration (e.g. 0.5 hour) 
isPerferred 

所以我得根據cirteria例如一個地方的名單。給5小時,得到一組地方。

問題是,無論偏好是什麼,我必須比較經緯度並得到最近選定地點最近的位置,但是性能是一個問題,除了比較之外,還有什麼應用可以實現呢?一個接一個的經歷?由於

public double getDistance(double lat1, double lon1, double lat2, double lon2) { 
     if (lat1 == lat2 && lon1 == lon2) 
      return 0; 

     double latA = Math.toRadians(lat1); 
     double lonA = Math.toRadians(lon1); 
     double latB = Math.toRadians(lat2); 
     double lonB = Math.toRadians(lon2); 
     double cosAng = (Math.cos(latA) * Math.cos(latB) * Math.cos(lonB-lonA)) + 
        (Math.sin(latA) * Math.sin(latB)); 
     double ang = Math.acos(cosAng); 
     double dist = ang *6371; 
     return dist; 
    } 

回答

1

編輯 Location.distanceBetween不正是你所需要的:

distanceBetween (double startLatitude, double startLongitude, double endLatitude, double endLongitude, float[] results) 
+0

謝謝,這仍然是一個做計算嗎? – user782104

+0

我認爲我們可以假設它已經過優化,但是您可以對自己的實現做一個快速測試 –

相關問題