Я получаю исключение нулевого указателя, когда я пытаюсь получить mylocation из карты
Я не могу получить свое местоположение из карты, он выдает исключение нулевого указателя.
if (mMap == null) {
// Try to obtain the map from the SupportMapFragment.
try {
mMap = ((SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.mapFrag)).getMap();
} catch (Exception e) {
e.printStackTrace();
}
}
// Check if we were successful in obtaining the map.
if (mMap != null) {
mMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
mMap.setMyLocationEnabled(true);
mMap.getUiSettings().setMyLocationButtonEnabled(true);
mMap.getUiSettings().setZoomControlsEnabled(true);
putMarkerOnMap(mMap.getMyLocation().getLatitude(),mMap.getMyLocation().getLongitude());
}
Выдает ошибку в строке.. где я вызываю функцию putMarkerOnMap(lat,lng) Вот эта функция
public void putMarkerOnMap(double la , double lo){
LatLng position = new LatLng(la,lo);
mMap.addMarker(new MarkerOptions().position(new LatLng(la, lo)).title("Your Location"));
CameraPosition campos = new CameraPosition.Builder().target(position).zoom(15)
.bearing(90)
.tilt(40)
.build();
mMap.animateCamera(CameraUpdateFactory.newCameraPosition(campos));
}
2 ответа
Метод getMyLocation()
устарела. Так что не используйте это. Вместо этого используйте API FusedLocation, предоставляемый Сервисами Google Play, чтобы получить текущее местоположение.
Проверьте это
Я думаю, что NPE вызвано в этой линии
mMap.getMyLocation().getLatitude()
Кроме того, если вы хотите узнать текущее местоположение, вы должны использовать другой подход, например, использовать Google Play Services или встроенную библиотеку Android.
Сервисы Google Play: http://developer.android.com/training/location/retrieve-current.html
Встроенная библиотека Android: http://developer.android.com/guide/topics/location/strategies.html