2014-06-27 22 views
10

Współpracuję z Google Maps. Jestem w stanie z powodzeniem utworzyć i wyświetlić mapę Google. Teraz chcę dodać CameraUpdate(latitude, longitude). Wyszukałem go i znalazłem kod źródłowy, ale otrzymuję numer NullPointerException.java.lang.NullPointerException: CameraUpdateFactory nie jest zainicjowany wyjątek logcat

komunikat Error LogCat jest:

java.lang.NullPointerException: CameraUpdateFactory is not initialized 

To jest moje źródło. Co ja robię źle?

public class StradaContact extends Fragment { 

public final static String TAG = StradaContact.class.getSimpleName(); 
private MapView mMapView; 
private GoogleMap mMap; 
private Bundle mBundle; 
double longitude = 44.79299800000001, latitude = 41.709981; 

public StradaContact() { 

} 

public static StradaContact newInstance() { 
    return new StradaContact(); 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 

    View rootView = inflater.inflate(R.layout.strada_contact, container,false); 

    mMapView = (MapView) rootView.findViewById(R.id.pointMap); 

    mMapView.onCreate(mBundle); 
    setUpMapIfNeeded(rootView); 

    return rootView; 
} 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    mBundle = savedInstanceState; 
} 

private void setUpMapIfNeeded(View inflatedView) { 
    if (mMap == null) { 
     mMap = ((MapView) inflatedView.findViewById(R.id.pointMap)).getMap(); 
     if (mMap != null) { 
      CameraUpdate center = CameraUpdateFactory.newLatLng(new LatLng(latitude, longitude)); 
      CameraUpdate zoom = CameraUpdateFactory.zoomTo(15); 
      mMap.moveCamera(center); 
      mMap.animateCamera(zoom); 
     } 
    } 
} 

@Override 
public void onResume() { 
    super.onResume(); 
    mMapView.onResume(); 
} 

@Override 
public void onPause() { 
    super.onPause(); 
    mMapView.onPause(); 
} 

@Override 
public void onDestroy() { 
    mMapView.onDestroy(); 
    super.onDestroy(); 
} 

}

<com.google.android.gms.maps.MapView 
     android:id="@+id/pointMap" 
     android:name="com.google.android.gms.maps.MapFragment" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 

     class="com.google.android.gms.maps.MapFragment" /> 
+0

zobacz: http: //stackoverflow.com/questions/19541915/google-maps-cameraupdatefactor y-nie-initalized – Ranjit

Odpowiedz

6

Spróbuj z następujących metod zainicjować Google Map API przed użyciem

MapsInitializer.initialize(getActivity()); 
+0

Dlaczego jest to lepsze niż 'getMap()'? –

19

Spróbuj tego w "onCreate":

try { 
MapsInitializer.initialize(this); 
} catch (GooglePlayServicesNotAvailableException e) { 
e.printStackTrace(); 
} 
+0

zadziałało dla mnie =) –

+0

Już nazywam metodę 'getMap()' metody SupportMapFragment. Dlaczego potrzebuję również MapsInitializer? –

Powiązane problemy