2011-11-15 6 views
1

이동 거리를 계산해야하는 응용 프로그램을 개발 중입니다. 나는 거리를 계산하는 동안 문제에 직면하고있다.이동 거리 계산 방법

locationmanager.requestLocationUpdates(bestProvider,0,0,new Listener()); 

public class Listener implements LocationListener{ 

@Override 
public void onLocationChanged(Location location) { 
    if(location!=null) { 
     if(loc1==null) { 
      loc1=new Location(location); 
     } 

     speed=location.getSpeed()*3.6; 
     loc2=new Location(location); 
     dist+=loc1.distanceTo(loc2); 
     loc1=loc2; 
     breaktv.setText(""+dist/1000); 

내 의도는 차 또는 무언가에 의해 이동 한 총 거리를 계산이다 다음은 내 코드입니다. 그러나 distanceTo() 방법은 저를 위해 잘 작동하지 않습니다.

+0

"나를 위해 잘 작동하지 않습니다."우리에게 많은 것을 제공하지 않습니다. 너 뭐야? 작동하지 않는다는 것을 어떻게 알 수 있습니까? – bdares

+0

질문은 무엇이며 입력은 무엇입니까? 유클리드 거리는 종종 계산하기 쉽습니다 (좌표의 제곱근, 제곱근, 추가, 빼기). –

+0

여기서 자주 업데이트를 요청했습니다. 위치 변경이있을 때마다 onLocationChanged()가 호출됩니다. 거리를 계산하는 동안이 코드 포인트에서 문제가 발생합니다. 여기에 매번 거리를 추가합니다. 올바른 것입니다. ? loc2 = 새 위치 (위치); dist + = loc1.distanceTo (loc2); loc1 = loc2; breaktv.setText (""+ dist/1000); – Taruni

답변

1

여기는 또 다른 Question on SO입니다. 여기서 나는 사용자 정의 함수에 대해 2 답변을, 사용자 android.Location 클래스 메소드로 계산하여 Answers를 계산했습니다. 희망이 도움이 될 것입니다.

당신은 당신의 jurney가 CurrentLocation을하고 저장 시작

SharedPreferences을 사용하고있을 수 있습니다 그럼 난 당신이 그냥 OnLocationChanged 같은 방법을 사용하고 통화 거리가, 를 여행하고 계속 업데이트 Continuosly 필요가 있다고 생각 위의 두 메서드는 현재 거리를 알기 위해 거기에서 언급했습니다.

편집 : 여기가 작동해야 Link To OpenSource Project

+0

Hii Frankenstein이 답장을 보내 주셔서 감사합니다. 정확히 내가하려는 일입니다. loc1 객체와 loc2의 새 위치에 이전 위치를 저장했으며 distanceTo() 메소드에서이 두 객체를 모두 사용하려고합니다. 결과는 매번. 내가 올바른 방향으로 가고 있니? – Taruni

+0

나는 어떤 문제도 보지 않는다. 업데이트 된 ans를 보아라. 나는 하나 더 링크를 더한다. – MKJParekh

+0

Frankenstein 고맙습니다. 그 링크에서 프로젝트를 다운로드 할 수 있습니까 ????? – Taruni

2

기술적으로, 당신을 도울 수있는 좋은 예입니다.

나는 몇 가지 제안이 있습니다 (아직없는 경우)

  • distfloat해야
  • dist += loc2.distanceTo(location)을,이 loc1

이다 만들 필요가 없습니다 내가 사용한 코드

   if(lastLoc != null) 
       { 
        ttf = (location.getTime() - lastLoc.getTime())/1000; 
        int R = 6371; 
        double lat1 = Math.PI/180.0 *lastLoc.getLatitude(); 
        double lon1 = Math.PI/180.0 *lastLoc.getLongitude(); 
        double lat2 = Math.PI/180.0 *location.getLatitude(); 
        double lon2 = Math.PI/180.0 *location.getLongitude(); 
        // double dLon = Math.PI/180.0 * (location.getLongitude() - lastLoc.getLongitude()); 
        double dLat = (lat2-lat1); 
        double dLon = (lon2-lon1); 
        double a = Math.sin(dLat/2) * Math.sin(dLat/2) + 
        Math.cos(lat1) * Math.cos(lat2) * 
        Math.sin(dLon/2) * Math.sin(dLon/2); 
        double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); 
        double d = R * c; 
        totalDistance += d; 

       } 

       lastLoc = location; 
+0

+1 안녕하세요,이 질문을 볼 수 있습니까, 오랫동안 이것을 찾고 있습니다. http://stackoverflow.com/questions/7696112/gettting-different-distance-using-the-google-map-and-user-defined-function/8050014 # 8050014 ..또한 당신이 아무것도 거기에 게시하는 경우. 나는 또한 알기 위해 내 대답에 대해 의견을 말합니다. – MKJParekh

+0

리노 여러분의 코드에 대해 감사드립니다. 노력하겠습니다. – Taruni