【问题标题】:Android LocationManager class is not returning correct latitude/longitudeAndroid LocationManager 类未返回正确的纬度/经度
【发布时间】:2011-12-06 14:30:47
【问题描述】:

我创建了一个显示地图视图的程序,其中包含手机的位置以及通过电子邮件发送此位置(纬度、经度)的能力。 (将一些地方添加到数据库中)。

我正在使用 LocationManager 类和 getLatitude / getLongitude 方法来获取手机的位置。我的代码如下所示:

double MyLongitude  = 0;
double MyLatitude   = 0;
Location location   = null;

LocationManager lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);

lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 35000, 10, new ShowLocation()); 

location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);

MyLatitude  = location.getLatitude();
MyLongitude = location.getLongitude();

在模拟器上测试我的应用程序时,一切正常:mapView 显示我固定的位置(使用 telnet 和 geo fix 命令),我可以通过电子邮件发送位置。我在朋友的电话上得到了同样的结果;一切似乎都正常。

问题出在我的手机上。我可以在 mapView(蓝色小圆圈)上显示我的位置,但是当我尝试通过电子邮件发送我的位置时,纬度和经度都设置为 0。

这是在 mapView 上显示我的位置的代码:

MyLocationOverlay myLocation = new MyLocationOverlay(this, mapView);
myLocation.enableMyLocation();

我不明白为什么我的位置在显示时似乎有效,但我无法获得正确的纬度和经度,而它似乎在模拟器和我朋友的手机上有效。

这是因为缺少代码还是类似的原因?这是我手机的问题吗?我检查了权限,我已经有了需要的权限:

android.permission.ACCESS_FINE_LOCATION
android.permission.ACCESS_COARSE_LOCATION
android.permission.ACCESS_MOCK_LOCATION

我也尝试使用 LocationManager.NETWORK_PROVIDER 而不是 LocationManager.GPS_PROVIDER 进行测试,但得到了相同的结果。

【问题讨论】:

    标签: android android-mapview locationmanager


    【解决方案1】:

    您可以在 MyLocationOverlay 上覆盖 onLoationChanged(Location l),只要覆盖获得新位置以绘制您的位置,就会调用它,而不是请求位置更新和 getLastKnownLocation。

    我猜 getLastKnownLocation 返回 0, 0 因为还没有位置修复。

    【讨论】:

    • 显示mapView的类实现了LocationListener,所以我实现了“OnLocationChanged”方法。在那里,我只使用 LocationManager 中的 getLatitude 和 getLongitude 方法。
    • 还有其他方法可以在我的手机上定位吗?
    • 如果在OnLocationChanged中得到位置的经纬度,也是0,0?
    • 嗨,终于它似乎工作了。问题是我的错:我有一个类 (DisplayMap),其中显示了地图视图,它实现了 LocationListener。所以我使用了这个类中的方法 onLocationChanged 。但问题是我调用了 requestLocationUpdates 方法:lm.requestLocationUpdates(provider,35000, 10,new ShowLocation());
    • 我使用了另一个实现 LocationListener 的类 (ShowLocation),但我没有使用它的方法。我更改了代码,并使用了此类中的 onLocationChanged 方法,现在它似乎可以工作了。我不知道为什么它以前可以在模拟器和我朋友的手机上工作,但没关系,现在没关系 ;) 非常感谢你给了我这个提示 ;)
    猜你喜欢
    • 2016-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-26
    • 2023-03-21
    相关资源
    最近更新 更多