Android LocationManager类未返回正确的纬度/经度

Android LocationManager类未返回正确的纬度/经度,android,android-mapview,locationmanager,Android,Android Mapview,Locationmanager,我创建了一个程序,可以显示地图视图、手机位置以及通过电子邮件发送此位置(纬度、经度)的功能。(将某些位置添加到数据库中) 我使用LocationManager类和getLatitude/get经度方法获取手机的位置。我的代码如下所示: double MyLongitude = 0; double MyLatitude = 0; Location location = null; LocationManager lm = (LocationManager)getSystemServic

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

我使用LocationManager类和getLatitude/get经度方法获取手机的位置。我的代码如下所示:

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命令),我可以通过电子邮件发送位置。我在朋友的电话里得到了同样的结果;一切似乎都正常

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

以下是在地图视图上显示我的位置的代码:

MyLocationOverlay myLocation = new MyLocationOverlay(this, mapView);
myLocation.enableMyLocation();
我不明白为什么我的位置在显示时会起作用,但我无法获得正确的纬度和经度,而它似乎在emulator和我朋友的手机上起作用

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

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

我还尝试使用LocationManager.NETWORK\u PROVIDER而不是LocationManager.GPS\u PROVIDER进行测试,但得到了相同的结果。

您可以在MyLocationOverlay上覆盖OnLoadionChanged(位置l),每当覆盖获得新位置以绘制您的位置时,都会调用它,而不是请求位置更新和getLastKnownLocation


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

显示mapView的类已实现LocationListener,因此我实现了“OnLocationChanged”方法。在这里,我只使用LocationManager中的getLatitude和getLatitude方法。是否有其他方法来修复我手机上的位置?如果在OnLocationChanged中获得位置的经度和纬度,它也是0,0?嗨,最后它似乎起作用了。问题是我的错:我有一个类(DisplayMap),在其中显示mapview,它实现LocationListener。所以我使用了这个类的onLocationChanged方法。但问题是我调用了requestLocationUpdates方法:
lm.requestLocationUpdates(provider,35000,10,newshowLocation())我使用了另一个实现LocationListener的类(ShowLocation),但我没有使用它的方法。我更改了代码,并使用了这个类中的onLocationChanged方法,现在它似乎可以工作了。我不知道为什么它以前在emulator和我朋友的手机上可以工作,但不管怎样,现在它可以了;)非常感谢你给我这个提示;)