0

我想获取当前坐标,我尝试下一个

GoogleMap gm=getMap();
gm.setMyLocationEnabled(true);
Location location=getMap().getMyLocation();

但是 getMap() 返回 null,我尝试:

Criteria criteria = new Criteria();
String provider = service.getBestProvider(criteria, false);
Location location = service.getLastKnownLocation(provider);
if (location.getLatitude()!=0){
LatLng userLocation = new LatLng(location.getLatitude(),           location.getLongitude());

但这项工作在 Android 2.3 中,但在 4.2 中。它返回空值。

4

2 回答 2

0

重新启动电话时会重置位置属性。

因此,如果设备没有通过任何方式(地图或任何其他请求位置的应用程序)请求新位置,getMyLocation 将返回 null。

如果 getMyLocation 返回 null,您应该做的是请求一个新的位置。

这是关于如何获取/请求位置的线程: Good way of getting the user's location in Android

寻找requestLocationUpdates()方法。

然后当找到一个位置时(可能需要一些时间......尤其是室内),使用参数中的新位置调用回调 OnLocationChanged。

希望这可以帮助!

于 2013-08-23T17:19:23.350 回答
0

我的应用程序中有几乎相同的代码,并且在版本 4 上运行良好:

String provider;
LocationManager locManager = (LocationManager) 
                              getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
provider = locManager.getBestProvider(criteria, false);
Location location = locManager.getLastKnownLocation(provider);

if (location != null) {
   latitude = location.getLatitude();
   mLongitude = location.getLongitude();
}

但是您的问题必须与您的 getMap() 错误有关。错误信息到底是什么?

于 2013-08-23T00:11:19.433 回答