使用locationManager android获取错误的gps位置

时间:2012-06-04 15:44:11

标签: android gps location locationmanager

我正在使用mapView和LocationManager制作一个小应用程序。 我的LocationManager应该收听该位置并通知我的位置是否因用户定义的容差而变化。 如果我的LocationManager发现位置发生变化,则应发送短信。

lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
        lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000L, Float.parseFloat(txtToleranz.getText().toString()), this);

这里我不确定方法requestLocationUpdates是否始终采用文本字段的当前值或仅采用给定的起始值...?

另外我的应用程序应该在mapView中显示我的位置,但位置完全错误...为什么?我在真实设备上运行我的应用程序。

                double lat = location.getLatitude();
            double lng = location.getLongitude();

            String currentLocation = " Lat: " + lat + " Lng: " + lng + " Tol: " + Toleranz;
            point = new GeoPoint((int) lat * 1000000, (int) lng * 1000000);
            mapController.animateTo(point);
            mapController.setZoom(15);
            System.out.println(currentLocation);

感谢您的帮助! 最好的问候丹尼尔

1 个答案:

答案 0 :(得分:0)

根据this SO post GeoPoint可能会错误地构建,这可能会导致错误的位置。对于LocationManagerrequestLocationUpdates方法只运行一次,这意味着它在运行方法时采用EditText's值,除非您告诉它,否则它不会更新。 LocationManager类中可能有一个方法可以做到这一点。

修改

忽略有关GeoPoint的部分,在进一步阅读时,将long / lat乘以1000000是正确的