我正在努力構建我的應用程序的一段距離旅行部分,但我遇到了我的位置問題。在位置偵聽器中,我輸出緯度和長度座標,我可以看到座標不斷變化,現在我知道他們永遠不會完全相同,但是當我將第一個註冊位置存儲在偵聽器中時,然後檢查距離和不斷更新的位置之間的距離,可以高達25米。這裏是我的監聽器代碼:爲什麼我的位置不斷變化,我的代碼不正確?
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方法運行我的位置代碼的其餘部分:
// 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地圖一個更準確的方式來獲取位置,我發現googleMap.getLocation();
被打破,實際上它導致我的應用程序失敗。我不確定我是否已經正確設置了聽衆或其他位置代碼,我覺得該位置不應該像這樣跳躍。
我會說,我正在使用GPS來獲取位於適度多雲的天空下的位置,該設備告訴我位置由GPS設置。任何人都可以建議更好的務實方式來獲得更好的位置?
礦被設置爲1,我將它改爲50,看看有什麼不同,謝謝! – deucalion0 2013-03-21 12:28:03
不客氣!看看這個[Javadoc](http://goo.gl/jCsNF) – 2013-03-21 12:45:25
你的代碼幫助我調整位置多一點,所以謝謝,但我不得不承認,我的想法將不會成功計算某人走過的距離,它不會工作。 :( – deucalion0 2013-03-21 18:52:45