我创建了一个程序,显示一个mapView,包含手机的位置,以及通过电子邮件发送此位置(纬度,经度)的功能。 (将一些地方添加到数据库中)。
我正在使用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进行测试,但结果相同。
答案 0 :(得分:1)
您可以覆盖MyLocationOverlay上的onLoationChanged(位置l),只要叠加层获得一个新位置来绘制您的位置,就会调用它,而不是请求位置更新和getLastKnownLocation。
我猜测getLastKnownLocation正在返回0,0,因为还没有位置修复。