2

私は自分のデータベースから取得しているLong/Latを使用してGoogleマップにマーカーを追加しようとしています。しかし、私はonMapReadyの外にマーカーを追加することはできません。データが入手できたら、Google Mapにマーカーを追加しますか?

マイマップフラグメントは、私の活動の内部レイアウト

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

私は基本的に私が追加することができますマップへの参照を取得する必要がありますマーカーをそのOnMapReadyメソッドから離します。

答えて

2

これは地図を非同期にロードする正しい方法です。 onMapReadyメソッドの外部にマーカーを設定する場合は、onMapReadyメソッドで取得するGoogleMapオブジェクトへの参照を保持するこのクラス内の新しい属性を検討してください。しかし、まだ設定されていないかもしれないので、この属性を呼び出すときに注意してください(NullPointerException)!また、属性が不要になったときに属性の設定を解除して、メモリリークが発生しないようにすることもできます。

... 

private GoogleMap mMyGoogleMap; 

... 

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

ありがとうございました! – xiimoss

+0

問題を解決するのに役立ちましたら、それを正解として受け入れることをおすすめします。 –

関連する問題