1

我正在努力构建我的应用程序的远距离旅行部分,但我的位置有问题。在位置侦听器中,我在吐司中输出纬度和经度坐标,我可以看到坐标不断变化,现在我知道它们每次都不会完全相同,但是当我将第一个注册位置存储在侦听器中然后检查时该距离与不断更新的位置之间的距离跳跃,可能高达 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 设置的。任何人都可以建议以更实用的方式获得更好的位置吗?

4

3 回答 3

3

使用当前的 GPS 技术,纬度/经度在 20-50 米范围内跳跃是绝对正常的。

于 2013-03-21T12:15:21.593 回答
3

在民用GPS 精度下,25m 的偏差是完全正常的。

有关GPS 工作原理的更多详细信息,请参见此处,特别是:

准确性差的原因并不总是很明显,但通常可归因于以下错误来源之一:

- Multipath / signal corruption
- Low number of satellites / poor satellite geometry
- Erratic Ionospheric activity
于 2013-03-21T12:15:30.093 回答
3

您的常量 MINIMUM_DISTANCECHANGE_FOR_UPDATE 的值是多少?

我已经为它分配了 50 米,这对我的应用程序来说没问题。我还为 MINIMUM_TIME_BETWEEN_UPDATE 分配了 2 分钟。

我的应用程序的源代码| 请参阅方法subscribeToLocationUpdates

于 2013-03-21T12:24:03.463 回答