【问题标题】:Add Marker to Google Map once data is available?一旦数据可用,将标记添加到谷歌地图?
【发布时间】:2017-05-09 08:10:25
【问题描述】:

我正在尝试使用从我的数据库中检索的 Long/Lat 向我的谷歌地图添加一个标记。但是,我似乎无法让它在 onMapReady 之外添加标记。

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

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

创建时

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 方法之外添加一个标记。

【问题讨论】:

    标签: android google-maps google-maps-markers supportmapfragment


    【解决方案1】:

    这是正确的做法,异步加载地图。如果您真的想在onMapReady 方法之外设置一个标记,请考虑在此类中添加一个新属性,该属性将保留对您在onMapReady 方法中获得的GoogleMap 对象的引用。但是当你调用这个属性时要注意,因为它可能还没有设置(NullPointerException)!此外,您可能希望在不再需要该属性时取消设置该属性,这样您就不会发生内存泄漏。

    ...
    
    private GoogleMap mMyGoogleMap;
    
    ...
    
    @Override
    public void onMapReady(GoogleMap map) {
        mMyGoogleMap = map;
    }
    

    【讨论】:

    • 如果它帮助你解决了你的问题,接受它作为正确答案是很好的姿态。
    猜你喜欢
    • 2018-10-11
    • 1970-01-01
    • 1970-01-01
    • 2014-12-08
    • 1970-01-01
    • 2015-09-12
    • 2011-04-03
    • 1970-01-01
    • 2014-02-09
    相关资源
    最近更新 更多