2

我试图添加一个标记到我的谷歌地图使用长/纬,我从我的数据库检索。但是,我似乎无法得到它在onMapReady之外添加标记。一旦数据可用,将标记添加到Google地图?

我的地图片段在我的活动布局

<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

如果它能帮助你解决你的问题,那么接受它作为正确答案是一种很好的姿态。 –

相关问题