2012-07-18 39 views
2
lat = 6.92961234 
lng = 79.84796614 

lat1 = 6.85620511 
lng1 = 79.91251376 

Location locationA = new Location("point A"); 

locationA.setLatitude(lat); 
locationA.setLongitude(lng); 

Location locationB = new Location("point B"); 

locationB.setLatitude(lati); 
locationB.setLongitude(lngi); 

double distancei = locationA.distanceTo(locationB); 

String cc = Double.toString(distancei); 

float[] results = new float[1]; 
Location.distanceBetween(lati/1E6, lngi/1E6, lat/1E6, lng/1E6,results); 
float s = results[0] * 0.000621371192f; 
String a2 = Float.toString(s); 

兩種方法給了我不同的答案以及BOTH似有不妥 ..因爲我看了看谷歌地圖和答案它將顯示14公里(約8mils)。但答案顯示爲6點。我不知道它的米/公里/英里。Android的距離是錯誤的

請幫我...謝謝

+0

其中u代碼的長度和緯度的部分代碼/ – Zamani 2012-07-18 07:33:51

+0

來自http://developer.android.com/reference/android/location/Location.html:「的距離之間(...)' 計算兩個位置之間的近似距離*(以米*爲單位),*可選擇它們之間最短路徑的初始和最終方位*。也許你正在看的結果是可選結果之一? – Treb 2012-07-18 07:35:21

+0

在第二行最後一行是什麼樣的轉換,將結果乘以0.000621 ...? – Treb 2012-07-18 07:38:28

回答

1

如果你已經不厭其煩地產生一些代碼,編譯並運行,閱讀的javadoc,並運行通過調試以下更正代碼:

private void test() { 

    double lat = 6.92961234; 
    double lng = 79.84796614; 

    double lati = 6.85620511; 
    double lngi = 79.91251376; 

    Location locationA = new Location("point A"); 
    locationA.setLatitude(lat); 
    locationA.setLongitude(lng); 
    Location locationB = new Location("point B"); 
    locationB.setLatitude(lati); 
    locationB.setLongitude(lngi); 

    double distancei = locationA.distanceTo(locationB); 
    float[] results = new float[3]; 
    Location.distanceBetween(lati, lngi, lat, lng, results); 
    // Distance in metres is in results[0] 
} 

你會看到distancei和results [0]給出了相同的答案,即10807米。這對我來說似乎是對的。