Я не могу отобразить карту во фрагменте - PullRequest
0 голосов
/ 16 декабря 2018

Я хочу показать карту с маркерами в моем MainActivity, но она не показывает никакой карты, кажется, что она не существует, когда я запускаю приложение.

У меня есть Fragment с моим activity_main вот так:

    <com.google.android.gms.maps.MapView
    android:id="@+id/mapVieww"
    android:layout_width="match_parent"
    android:layout_height="400dp" />

И файл .java вот так:

public class MapViewFragment extends Fragment{

MapView mMapView;
private GoogleMap googleMap;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.activity_main, container, false);

    mMapView = rootView.findViewById(R.id.mapVieww);
    mMapView.onCreate(savedInstanceState);

    mMapView.onResume(); // needed to get the map to display immediately

    try {
        MapsInitializer.initialize(getActivity().getApplicationContext());
    } catch (Exception e) {
        e.printStackTrace();
    }

    mMapView.getMapAsync(new OnMapReadyCallback() {
        @Override
        public void onMapReady(GoogleMap mMap) {
            googleMap = mMap;

            // For showing a move to my location button
            //googleMap.setMyLocationEnabled(true);

            // For dropping a marker at a point on the Map
            LatLng sydney = new LatLng(-34, 151);
            googleMap.addMarker(new MarkerOptions().position(sydney).title("Marker Title").snippet("Marker Description"));

            // For zooming automatically to the location of the marker
            CameraPosition cameraPosition = new CameraPosition.Builder().target(sydney).zoom(12).build();
            googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
        }
    });

    return rootView;
}}

Я нашел информацию в интернете.Кто-нибудь знает, где вина?

1 Ответ

0 голосов
/ 17 декабря 2018

Прежде всего удалите свой try-catch с помощью MapsInitializer.initialize(getActivity().getApplicationContext());, потому что:

Если вы используете MapFragment или MapView и уже получили (ненулевой) GoogleMap, вызвав getMapAsync () для любого из этихклассов и ожидания обратного вызова onMapReady (GoogleMap map), тогда вам не нужно беспокоиться об этом классе.Смотрите пример приложения для некоторых примеров.От документов - https://developers.google.com/android/reference/com/google/android/gms/maps/MapsInitializer

Во-вторых, сделайте mMapView.getMapAsync(this); и переместите свою работу с картой на реализацию OnMapReadyCallback

В-третьих: что вы имеете в виду по этому поводу - mMapView.onResume(); // needed to get the map to display immediately зачем это нужно?

на каком устройстве вы его пробуете?виртуальный или реальный?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...