2

J'essaye d'ajouter un marqueur à mes google maps en utilisant le Long/Lat que je récupère de ma base de données. Cependant, je n'arrive pas à l'obtenir pour ajouter un marqueur en dehors de l'onMapReady.Ajouter un marqueur à Google Map une fois que les données sont disponibles?

Mon fragment de carte dans mes activités layout

<fragment android:name="com.google.android.gms.maps.SupportMapFragment" 
         android:id="@+id/map" 
         android:layout_width="match_parent" 
         android:layout_height="400dp"/> 

OnCreate

mapFragment = (SupportMapFragment) getSupportFragmentManager() 
       .findFragmentById(R.id.map); 
     mapFragment.getMapAsync(this); 

OnMapReady

@Override 
    public void onMapReady(GoogleMap map) { 
     map.addMarker(new MarkerOptions() 
       .position(new LatLng(1, 1)) 
       .title("jjj")); 
    } 

J'ai besoin essentiellement d'obtenir une référence à la carte qui me permet d'ajouter un marqueur loin de cette méthode OnMapReady.

Répondre

2

C'est la bonne façon de le faire, en chargeant la carte de manière asynchrone. Si vous voulez vraiment définir un marqueur en dehors de la méthode onMapReady, considérez un nouvel attribut dans cette classe qui gardera une référence à l'objet GoogleMap que vous obtenez dans la méthode onMapReady. Mais attention quand vous appelez cet attribut car il pourrait ne pas être encore défini (NullPointerException)! Vous pouvez également désinstaller l'attribut lorsque vous n'en avez plus besoin, vous n'avez donc pas de fuite de mémoire.

... 

private GoogleMap mMyGoogleMap; 

... 

@Override 
public void onMapReady(GoogleMap map) { 
    mMyGoogleMap = map; 
} 
+0

Cela a fonctionné merci! – xiimoss

+0

Si cela vous a aidé à résoudre votre problème, il est bon de l'accepter comme réponse correcte. –