Mapbox: как получить ссылку на MapView из определенного фрагмента Mapbox? - PullRequest
0 голосов
/ 07 мая 2020

Я выполнил инструкции Mapbox здесь https://docs.mapbox.com/android/maps/examples/support-map-fragment/ и могу успешно визуализировать карту из MapFragment.

//Create the mapFragment
if (savedInstanceState == null) {
     // Create fragment
     final FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
     // Build mapboxMap
     MapboxMapOptions options = MapboxMapOptions.createFromAttributes(this, null).doubleTapGesturesEnabled(true);
     options.camera(new CameraPosition.Builder()
             .target(new LatLng(-52.6885, -70.1395))
             .zoom(14)
             .build());
      // Create map fragment
      mapFragment = SupportMapFragment.newInstance(options);
      // Add map fragment to parent container
      transaction.add(R.id.container, mapFragment, "com.mapbox.map");
      transaction.commit();
} else {
      mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentByTag("com.mapbox.map");        
      // Working with Fragment - getFragment by ID
}

if (mapFragment != null) {
    mapFragment.getMapAsync(this);
}

Теперь я хочу представить LineManager, чтобы определить некоторые строки с помощью плагина аннотации, найденного здесь https://docs.mapbox.com/android/plugins/overview/annotation/ Но дело в том, что я могу Не инициализирую его из-за этой части:

LineManager lineManager = new LineManager(mapView, mapboxMap, style);

У меня есть mapboxMap и стиль, но нет mapView.

Итак, как мы могли бы получить mapView из определенного Mapbox MapFragment?

1 Ответ

1 голос
/ 07 мая 2020

Я нашел. Для тех, кто хочет использовать этот подход позже, вам нужно позвонить

mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentByTag("com.mapbox.map");
(MapView) mapFragment.getView();  // Might return null

. Также полезно проверить, является ли он нулевым, чтобы предотвратить NullPointerExceptions.

...