【发布时间】: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