android - 为什么我的位置不断变化,是我的代码不正确吗?

标签 android locationlistener android-maps-v2

我正在努力构建我的应用程序的移动距离部分,但我的位置存在问题。在位置监听器中,我在 toast 中输出纬度和经度坐标,我可以看到坐标不断变化,现在我知道它们永远不会每次都完全相同,但是当我将第一个注册位置存储在监听器中然后检查时该位置与不断更新的位置之间的距离会跳来跳去,最高可达 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 map ,看看是否有更准确的方法来获取位置,我发现 googleMap.getLocation(); 坏了,确实它导致了我的申请失败。我不确定我是否正确设置了我的监听器,或者任何其他位置代码,我觉得位置不应该那样跳来跳去。

我会说我正在使用 GPS 在中度多云的天空下获取位置,设备告诉我位置由 GPS 设置。任何人都可以建议一种更好的实用方法来获得更好的位置吗?

最佳答案

常量 MINIMUM_DISTANCECHANGE_FOR_UPDATE 的值是多少?

我已经为它分配了 50 米,它可以用于 my app .我还为 MINIMUM_TIME_BETWEEN_UPDATE 分配了 2 分钟。

Source code of my app |请参阅方法 subscribeToLocationUpdates

关于android - 为什么我的位置不断变化,是我的代码不正确吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15547011/

相关文章:

java - keystore 被篡改或密码不正确

Android - 滑动标签 viewpager 问题

java - Android 中的 `finishAffinity();` 和 `finish()` 方法有什么区别?

android - 如何从 WebView 引用存储在内部存储中的文件?

java - 尝试通过 onConnected() 方法获取当前位置

android - 无法使用groundOverlay在android中的google map api v2上显示图像

android - onLocationChanged 没有在 Gingerbread 中被调用

android - 如何实现 LocationListener?

java - 根据 Google Map Android API v2 上的一组位置确定合适的缩放级别

android - Android中的 'debug.keystore'和 'release.keystore'有什么区别?