2016-03-27 11 views
0

マップから自分の位置を取得できません。ヌルポインタ例外がスローされます。マップからmylocationを取得しようとするとnullポインタ例外が発生しています

 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)); 
} 

答えて

1

方法getMyLocation()が推奨されていません。だから、それを使わないでください。代わりに、Google Playサービスが提供するFusedLocation APIを使用して現在地を取得します。

チェックthis

+0

実際に私は私のフラグメントでFusedLocationのAPIを使用することができます –

+0

はい確認することができます....フラグメント内の場所を必要とします。 –

+0

最初に試してみましょう..!あなたの協力のおかげで –

1

である私は、NPEは、この行に

mMap.getMyLocation().getLatitude() 
を引き起こしていると思います

また、現在の場所を取得するには、Google PlayサービスやAndroid内蔵ライブラリなどの別の方法を使用する必要があります

Google Playのサービス: http://developer.android.com/training/location/retrieve-current.html

Androidの内蔵ライブラリ: http://developer.android.com/guide/topics/location/strategies.html

関連する問題