用于android位置的google Maps v2 API返回null

时间:2015-03-02 14:38:41

标签: android google-maps google-maps-android-api-2 google-maps-api-2

嗨,我需要一些帮助,我已经看了很多不同的东西。我试图在Android上获取我当前的位置,但由于该位置返回null我的应用程序崩溃。我真的需要帮助。

我不知道我是否在这里清楚,但每次我调用getLastKnownlocation它都会返回null,所以当我尝试获得double lat = location.getLatitude()相同的经度时没有回复任何东西,我的应用程序崩溃了。

帮助... 这是一段代码

mMap.setMyLocationEnabled(true);
LocationManager locationManager = (LocationManager)getSystemService(LOCATION_SERVICE);
Criteria criteria = new Criteria();

String provider = locationManager.getBestProvider(criteria, true);

Location location = locationManager.getLastKnownLocation(provider);

mMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);

double lat = location.getLatitude();
double lng = location.getLongitude();
LatLng latLng = new LatLng(lat, lng);

在纬度处是它停止的地方。

2 个答案:

答案 0 :(得分:1)

在调用这些函数之前,您是否从片段中检索了GoogleMap对象?

类似的东西:

//get map fragment from the static layout (in this case it has id = "map")
    MapFragment mapFragment = (MapFragment) getFragmentManager()
            .findFragmentById(R.id.map);
//get GoogleMap object, then you can start using it, for example enabling the location
    map = mapFragment.getMap();
    map.setMyLocationEnabled(true);

答案 1 :(得分:0)

谢谢大家的帮助,我很感激,我已经解决了我的问题。 这里有一段帮助我完成的代码:

//I needed to have this line before everything else for me to get my current 
//location from getLastKnownLocation method.

mMap.addMarker(new MarkerOptions().position(new LatLng(0, 0)).title("Marker").snippet("Snippet"));

//And the all the codes I had before
mMap.setMyLocationEnabled(true);
LocationManager locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();

String provider = locationManager.getBestProvider(criteria, true);

Location location = locationManager.getLastKnownLocation(provider);

mMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);

double lat = location.getLatitude();
double lng = location.getLongitude();
LatLng latLng = new LatLng(lat, lng);

mMap.moveCamera(CameraUpdateFactory.newLatLng(latLng));
mMap.animateCamera(CameraUpdateFactory.zoomTo(14));
mMap.addMarker(new MarkerOptions()
             .position(new LatLng(lat, lng))
             .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE))
             .title("Here"));