2013-03-21 2 views
1

저는 원거리 여행을위한 신청서를 작성하는 중입니다. 그러나 제 위치에 문제가 있습니다. 위치 청취자에서 축약으로 위도와 경도 좌표를 출력하고 좌표가 끊임없이 변하는 것을 볼 수 있습니다. 이제는 청중에 처음으로 등록 된 위치를 저장할 때마다 완벽하게 동일하지는 않습니다. 그 거리와 끊임없이 업데이트되는 위치 사이의 거리가 25 미터까지 올라갈 수 있습니다.내 위치가 계속 변경되는 이유는 무엇입니까? 내 코드가 잘못 되었습니까?

// Creating the location manger and towers etc 
    lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
    Criteria crit = new Criteria(); 
    towers = lm.getBestProvider(crit, false); 
    location = lm.getLastKnownLocation(towers); 


    lm.requestLocationUpdates(LocationManager.GPS_PROVIDER,MINIMUM_TIME_BETWEEN_UPDATE, MINIMUM_DISTANCECHANGE_FOR_UPDATE, new MyLocationListener()); 

    if (location != null) { 
     glat = location.getLatitude(); 
     glon = location.getLongitude(); 
    } 

내가 거기 있었다면 내가 볼을 사용하고있는 V2 맵을 연구 : 여기

public class MyLocationListener implements LocationListener { 
    public void onLocationChanged(Location location) { 

     if(flag ==0){ 

      locationC = location; 
      flag = 1; 
     } 

     //Constantly updated location 
     locationD = location; 

     //walking distance is distance from first initialized location to current location 
     walking = locationC.distanceTo(locationD); 

     String s =String.valueOf(location.getLatitude()); 
     String ss =String.valueOf(location.getLongitude()); 

     Toast.makeText(getApplicationContext()," "+s+" "+ss+" " ,Toast.LENGTH_SHORT).show(); 
     Toast.makeText(getApplicationContext(),"Walking distance is "+walking ,Toast.LENGTH_SHORT).show(); 

    } 

    public void onStatusChanged(String s, int i, Bundle b) { 
    } 

    public void onProviderDisabled(String s) { 
    } 

    public void onProviderEnabled(String s) { 
    } 
} 

가에서 onCreate 방식으로 실행되는 내 위치 코드의 나머지 부분입니다 : 여기 내 리스너 코드 위치를 얻는 더 정확한 방법은 googleMap.getLocation();이 고장 났고, 실제로 내 응용 프로그램이 실패하는 것을 발견했습니다. 내 청취자를 올바르게 설정했는지 또는 다른 위치 코드를 설정했는지 여부가 확실하지 않습니다. 위치가 주변에서 뛰지 않아야한다고 생각합니다.

나는 GPS를 사용하여 적당히 흐린 하늘 아래 위치를 얻는다 고 말하며, GPS로 위치를 알려줍니다. 더 좋은 위치를 얻는 더 나은 실용적인 방법에 대해 조언 할 수 있습니까?

답변

3

를?

저는 50 미터를 할당했으며 my app은 괜찮습니다. MINIMUM_TIME_BETWEEN_UPDATE까지 2 분을 할당했습니다.

Source code of my app | 방법을 참조하십시오 subscribeToLocationUpdates

+0

광산을 1로 설정했는데, 50으로 변경하고 차이점을 확인해 주셔서 감사합니다 !!! – deucalion0

+1

여러분을 환영합니다! 이 [Javadoc] (http://goo.gl/jCsNF)도보세요 –

+0

코드 덕분에 위치를 조금 더 조정할 수있었습니다.하지만 감사합니다.하지만 내 아이디어가 성공을 거두지 못한다는 것을 인정해야합니다. 사람이 걷는 거리, 그냥 작동하지 않습니다. :( – deucalion0

3

현재 GPS 기술을 사용하면 위도/경도가 20-50 미터 내로 뛰어 오르는 것이 절대적으로 일반적입니다.

3

정확도는 민간인 GPS 정확도에서 완전히 정상입니다.

특별히, GPS의 작동 방식에 대한 자세한 내용은 here을 참조 : 일정 MINIMUM_DISTANCECHANGE_FOR_UPDATE의 값입니다

The cause for poor accuracy is not always obvious but is usually attributable to one of the following source of error:

- Multipath/signal corruption 
- Low number of satellites/poor satellite geometry 
- Erratic Ionospheric activity 
+0

감사합니다. 미터로 이동 한 거리 계산과 관련하여 이것이 작동하지 않는다고 생각하십니까? 어떻게 든 사용자가 걸어 다니는 거리를 저장하고 싶습니다. 그리고이 방법을 사용하여 볼 수있는 유일한 방법이었습니다. 고맙습니다! – deucalion0

+2

최대 속도를 알고있는 경우 (걷는 사람들은 보통 5km/시간을 초과하지 않습니다) 결과를 평균화하여보다 정확한 위치를 얻을 수 있습니다. 걷는 사람들은 불과 몇 초 만에 멀리 가지 않기 때문에 5 ~ 6 개의 연속 샘플 (또는 아마 10 개 이상)을 평균화했습니다. – lenik

+0

나는 이것을 시험해보고, 이것 같이 무언가를 그림을 당신을 감사하십시오 !! – deucalion0

관련 문제