Добавить маркер на карту Google, когда данные станут доступны?

Я пытаюсь добавить маркер на свои карты Google, используя 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.


person xiimoss    schedule 09.05.2017    source источник


Ответы (1)


Это правильный способ сделать это, загружая карту асинхронно. Если вы действительно хотите установить маркер вне метода onMapReady, подумайте о новом атрибуте внутри этого класса, который будет содержать ссылку на объект GoogleMap, который вы получаете в методе onMapReady. Но будьте внимательны при вызове этого атрибута, так как он может быть еще не установлен (NullPointerException)! Также вы можете отключить атрибут, когда он вам больше не нужен, чтобы не было утечки памяти.

...

private GoogleMap mMyGoogleMap;

...

@Override
public void onMapReady(GoogleMap map) {
    mMyGoogleMap = map;
}
person urgas9    schedule 09.05.2017
comment
Если это помогло вам решить вашу проблему, это хороший жест, чтобы принять это как правильный ответ. - person Waqas Ahmed Ansari; 09.05.2017