我正在努力构建我的应用程序的一段距离旅行部分,但我遇到了我的位置问题。在位置侦听器中,我输出纬度和长度坐标,我可以看到坐标不断变化,现在我知道他们永远不会完全相同,但是当我将第一个注册位置存储在侦听器中时,然后检查距离和不断更新的位置之间的距离,可以高达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