2014-10-21 3 views
0

두 위치 사이의 거리 (이전 위치의 현재 위치)를 계산하려고합니다.Location.distanceTo android에서 올바른 결과를 제공하지 않음

Location previousLocation = new Location(""); 
previousLocation.setLatitude(sharedPreferences.getFloat("previousLatitude", 0f)); 
previousLocation.setLongitude(sharedPreferences.getFloat("previousLongitude", 0f)); 
float distance = location.distanceTo(previousLocation); 
totalDistanceInMeters += distance; 
editor.putFloat("totalDistanceInMeters", totalDistanceInMeters); 
Log.e("Location Update","totalDistance"+totalDistanceInMeters);  
if (totalDistanceInMeters > 1) 
{ 
Toast.makeText(getApplicationContext(), "Total UpdateLocation"+totalDistanceInMeters/1609, Toast.LENGTH_SHORT).show(); 
Log.e("Alert","Update"); 
} 

위의 코드를 테스트하려면 :

그래서 나는 다음 시도했다. 첫 번째 결과는 완벽했으며 두 번째로 트리거 한 결과입니다. 전화가 같은 위치에 있었지만 거리가 141.0111 m에 이릅니다. 트리 트먼트 시간 304.0011 m. 내가 여기서 뭔가 잘못하고있는거야?

결과가 올바르게 표시되지 않습니다. 온라인 의사에 따르면 결과는 미터 단위입니다.

첫 번째 위치 결과와 두 번째 위치 결과의 차이를 계산하는 쉬운 방법이 있습니까? 10m 이상인 경우 다른 계산을하고 싶다면 그냥 그대로 두십시오.

알려주세요.

답변

1

왜 당신도 다음 코드 거리를 제시하는 이전 거리를 추가하고 부가가치 매번를 제공

float distance = location.distanceTo(previousLocation); 
totalDistanceInMeters += distance; 

를 사용하는 ....

예를

first time 
distance between A and B is 100 m 
second time 
distance between A and B is 100 m+100 m=200 m 

토스트에서 거리를 직접 사용해보십시오.

float distance = location.distanceTo(previousLocation); 
if (totalDistanceInMeters > 1) 
{ 
Toast.makeText(getApplicationContext(), "Total UpdateLocation"+distance/1609,Toast.LENGTH_SHORT).show(); 
Log.e("Alert","Update"); 
} 
+0

제 잘못입니다. 나는 총 거리를 확인하기 전에 그 조각 코드를 가지고 있다는 것을 몰랐다. 실제로 계산은 다른 것입니다. 어쨌든, 나는 내 문제를 해결 한 총 거리를 확인한 후에 그것을 옮겼습니다. 고마워요! – TheDevMan

0

정확한 거리를 얻으려면 정확성을 설정해야한다고 생각합니다. 또한 거리와 거리를 계산할 수 있도록 수동으로 이전 위치와 현재 위치를 파악하십시오.

관련 문제