diff options
author | Łukasz Paczos <lukasz.paczos@mapbox.com> | 2018-05-18 18:26:22 +0200 |
---|---|---|
committer | Łukasz Paczos <lukasz.paczos@mapbox.com> | 2018-05-22 20:27:37 +0200 |
commit | d8563881c0ee4f62e2f61ce6617ecbf1491ad28b (patch) | |
tree | 2d325e603b07bf9433764af7e0fcced6192a7d33 | |
parent | 27b3323da944d7db47dcbd8342b8bb4fac2a06bb (diff) | |
download | qtlocation-mapboxgl-d8563881c0ee4f62e2f61ce6617ecbf1491ad28b.tar.gz |
[android] - distinct multiple MapViews with unique IDs
14 files changed, 145 insertions, 65 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapFragment.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapFragment.java index 280877d61a..2cd8e9245e 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapFragment.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapFragment.java @@ -8,6 +8,7 @@ import android.support.annotation.Nullable; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; + import com.mapbox.mapboxsdk.utils.MapFragmentUtils; import java.util.ArrayList; @@ -22,6 +23,10 @@ import java.util.List; * using a FragmentManager. * </p> * <p> + * If you are planning on using multiple MapView instances in one lifecycle + * you have to specify a unique ID for each instance with {@link MapboxMapOptions#setMapId(String)} or in xml attributes. + * </p> + * <p> * To get a reference to the MapView, use {@link #getMapAsync(OnMapReadyCallback)}} * </p> * @@ -143,17 +148,6 @@ public final class MapFragment extends Fragment implements OnMapReadyCallback { } /** - * Called when the fragment state needs to be saved. - * - * @param outState The saved state - */ - @Override - public void onSaveInstanceState(@NonNull Bundle outState) { - super.onSaveInstanceState(outState); - map.onSaveInstanceState(outState); - } - - /** * Called when the fragment is no longer visible for the user. */ @Override diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java index 73fc023ee4..edd93f6ae7 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java @@ -72,6 +72,10 @@ import static com.mapbox.mapboxsdk.maps.widgets.CompassView.TIME_WAIT_IDLE; * and style the features of the map to fit your application's use case. * </p> * <p> + * If you are planning on using multiple MapView instances in one lifecycle + * you have to specify a unique ID for each instance with {@link MapboxMapOptions#setMapId(String)} or in xml attributes. + * </p> + * <p> * Use of {@code MapView} requires a Mapbox API access token. * Obtain an access token on the <a href="https://www.mapbox.com/studio/account/tokens/">Mapbox account page</a>. * </p> @@ -135,16 +139,28 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback { // in IDE layout editor, just return return; } + + if (!(context instanceof FragmentActivity)) { + throw new IllegalArgumentException("You need to instantiate MapView from FragmentActivity context. " + + "If your LayoutInflater works with a different context try creating MapView programmatically."); + } + mapboxMapOptions = options; + uiSettings = ViewModelProviders.of((FragmentActivity) context) + .get(mapboxMapOptions.getMapId() + UiSettings.class.getCanonicalName(), UiSettings.class); + mapSettings = ViewModelProviders.of((FragmentActivity) context) + .get(mapboxMapOptions.getMapId() + MapSettings.class.getCanonicalName(), MapSettings.class); + // inflate view View view = LayoutInflater.from(context).inflate(R.layout.mapbox_mapview_internal, this); compassView = (CompassView) view.findViewById(R.id.compassView); + compassView.injectUiSettings(uiSettings); attrView = (ImageView) view.findViewById(R.id.attributionView); logoView = (ImageView) view.findViewById(R.id.logoView); // create widget updater - WidgetUpdater widgetUpdater = new WidgetUpdater(context, compassView, attrView, logoView); + WidgetUpdater widgetUpdater = new WidgetUpdater(uiSettings, compassView, attrView, logoView); widgetUpdater.initialiseCompassObservableSettings(context); widgetUpdater.initialiseAttributionObservableSettings(context); widgetUpdater.initialiseLogoObservableSettings(context); @@ -169,12 +185,9 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback { // setup components for MapboxMap creation Projection proj = new Projection(nativeMapView); - uiSettings = ViewModelProviders.of((FragmentActivity) context).get(UiSettings.class); uiSettings.initialiseProjection(proj); uiSettings.getFocalPointObservable().observe((LifecycleOwner) context, point -> this.focalPoint = point); - mapSettings = ViewModelProviders.of((FragmentActivity) context).get(MapSettings.class); - LongSparseArray<Annotation> annotationsArray = new LongSparseArray<>(); MarkerViewManager markerViewManager = new MarkerViewManager((ViewGroup) findViewById(R.id.markerViewContainer)); IconManager iconManager = new IconManager(nativeMapView); @@ -208,7 +221,7 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback { compassView.injectCompassAnimationListener(createCompassAnimationListener(cameraChangeDispatcher)); compassView.setOnClickListener(createCompassClickListener(cameraChangeDispatcher)); // inject widgets with MapboxMap - attributionClickListener = new AttributionClickListener(context, mapboxMap); + attributionClickListener = new AttributionClickListener(context, uiSettings, mapboxMap); attrView.setOnClickListener(attributionClickListener); // Ensure this view is interactable @@ -1203,11 +1216,10 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback { private final AttributionDialogManager defaultDialogManager; private AttributionDialogManager currentDialogManager; - private AttributionClickListener(Context context, MapboxMap mapboxMap) { + private AttributionClickListener(Context context, UiSettings uiSettings, MapboxMap mapboxMap) { this.defaultDialogManager = new AttributionDialogManager(context, mapboxMap); currentDialogManager = defaultDialogManager; - UiSettings uiSettings = ViewModelProviders.of((FragmentActivity) context).get(UiSettings.class); uiSettings.getAttributionDialogManagerObservable().observe( (LifecycleOwner) context, this::setCurrentDialogManager); } diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMapOptions.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMapOptions.java index bb4e2f9212..c15598fba9 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMapOptions.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMapOptions.java @@ -76,6 +76,8 @@ public class MapboxMapOptions implements Parcelable { private String style; + private String mapId; + /** * Creates a new MapboxMapOptions object. */ @@ -122,6 +124,8 @@ public class MapboxMapOptions implements Parcelable { prefetchesTiles = in.readByte() != 0; zMediaOverlay = in.readByte() != 0; localIdeographFontFamily = in.readString(); + + mapId = in.readString(); } /** @@ -139,6 +143,7 @@ public class MapboxMapOptions implements Parcelable { mapboxMapOptions.camera(new CameraPosition.Builder(typedArray).build()); mapboxMapOptions.styleUrl(typedArray.getString(R.styleable.mapbox_MapView_mapbox_styleUrl)); mapboxMapOptions.apiBaseUrl(typedArray.getString(R.styleable.mapbox_MapView_mapbox_apiBaseUrl)); + mapboxMapOptions.setMapId(typedArray.getString(R.styleable.mapbox_MapView_mapbox_mapId)); mapboxMapOptions.zoomGesturesEnabled( typedArray.getBoolean(R.styleable.mapbox_MapView_mapbox_uiZoomGestures, true)); @@ -258,6 +263,20 @@ public class MapboxMapOptions implements Parcelable { } /** + * Sets a unique ID for this {@link MapView} used in a multi-map setup. + * <p> + * If you are using multiple MapViews or {@link MapFragment}/{@link SupportMapFragment} + * you need to assign a unique ID to each instance of the MapView for state management purposes. + * + * @param id Map ID used in multi-map setup. + * @return This + */ + public MapboxMapOptions setMapId(String id) { + mapId = id; + return this; + } + + /** * Specifies the used debug type for a map view. * * @param enabled True is debug is enabled @@ -691,6 +710,16 @@ public class MapboxMapOptions implements Parcelable { } /** + * Get this map ID used in a multi-map setup. + * + * @return Map ID used in multi-map setup. + * @see #setMapId(String) + */ + public String getMapId() { + return mapId; + } + + /** * Get the current configured rotate gesture state for a map view. * * @return True indicates gesture is enabled @@ -866,6 +895,8 @@ public class MapboxMapOptions implements Parcelable { dest.writeByte((byte) (prefetchesTiles ? 1 : 0)); dest.writeByte((byte) (zMediaOverlay ? 1 : 0)); dest.writeString(localIdeographFontFamily); + + dest.writeString(mapId); } @Override @@ -962,6 +993,9 @@ public class MapboxMapOptions implements Parcelable { if (localIdeographFontFamily != options.localIdeographFontFamily) { return false; } + if (mapId != null ? !mapId.equals(options.mapId) : options.mapId != null) { + return false; + } return false; } @@ -1001,6 +1035,7 @@ public class MapboxMapOptions implements Parcelable { result = 31 * result + (prefetchesTiles ? 1 : 0); result = 31 * result + (zMediaOverlay ? 1 : 0); result = 31 * result + (localIdeographFontFamily != null ? localIdeographFontFamily.hashCode() : 0); + result = 31 * result + (mapId != null ? mapId.hashCode() : 0); return result; } } diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/SupportMapFragment.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/SupportMapFragment.java index 307b33b0c7..3b30424c63 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/SupportMapFragment.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/SupportMapFragment.java @@ -23,6 +23,10 @@ import java.util.List; * using a FragmentManager. * </p> * <p> + * If you are planning on using multiple MapView instances in one lifecycle + * you have to specify a unique ID for each instance with {@link MapboxMapOptions#setMapId(String)} or in xml attributes. + * </p> + * <p> * To get a reference to the MapView, use {@link #getMapAsync(OnMapReadyCallback)}} * </p> * @@ -139,17 +143,6 @@ public class SupportMapFragment extends Fragment implements OnMapReadyCallback { } /** - * Called when the fragment state needs to be saved. - * - * @param outState The saved state - */ - @Override - public void onSaveInstanceState(@NonNull Bundle outState) { - super.onSaveInstanceState(outState); - map.onSaveInstanceState(outState); - } - - /** * Called when the fragment is no longer visible for the user. */ @Override diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/CompassView.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/CompassView.java index 0c8f6f48d3..712e137238 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/CompassView.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/CompassView.java @@ -59,8 +59,6 @@ public final class CompassView extends ImageView implements Runnable { } private void initialize(Context context) { - uiSettings = ViewModelProviders.of((FragmentActivity) context).get(UiSettings.class); - // Layout params float screenDensity = context.getResources().getDisplayMetrics().density; ViewGroup.LayoutParams lp = new ViewGroup.LayoutParams((int) (48 * screenDensity), (int) (48 * screenDensity)); @@ -71,6 +69,10 @@ public final class CompassView extends ImageView implements Runnable { this.compassAnimationListener = compassAnimationListener; } + public void injectUiSettings(@NonNull UiSettings uiSettings) { + this.uiSettings = uiSettings; + } + public void isAnimating(boolean isAnimating) { this.isAnimating = isAnimating; } @@ -118,7 +120,7 @@ public final class CompassView extends ImageView implements Runnable { */ @Deprecated public void update(final double bearing) { - if (uiSettings.getCompassRotationObservable().getValue() != bearing) { + if (uiSettings != null && uiSettings.getCompassRotationObservable().getValue() != bearing) { uiSettings.getCompassRotationObservable().setValue(bearing); } } diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/WidgetUpdater.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/WidgetUpdater.java index 26b34e4bb9..0f3dbac309 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/WidgetUpdater.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/WidgetUpdater.java @@ -25,12 +25,12 @@ public final class WidgetUpdater { private final UiSettings uiSettings; - public WidgetUpdater(@NonNull Context context, @NonNull CompassView compassView, + public WidgetUpdater(@NonNull UiSettings uiSettings, @NonNull CompassView compassView, @NonNull ImageView attributionView, @NonNull View logoView) { this.compassView = compassView; this.attributionView = attributionView; this.logoView = logoView; - uiSettings = ViewModelProviders.of((FragmentActivity) context).get(UiSettings.class); + this.uiSettings = uiSettings; } public void initialiseCompassObservableSettings(Context context) { diff --git a/platform/android/MapboxGLAndroidSDK/src/main/res-public/values/public.xml b/platform/android/MapboxGLAndroidSDK/src/main/res-public/values/public.xml index fda37dc2df..b17e04820a 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/res-public/values/public.xml +++ b/platform/android/MapboxGLAndroidSDK/src/main/res-public/values/public.xml @@ -12,6 +12,7 @@ <public name="mapbox_styleUrl" type="attr" /> <public name="mapbox_apiBaseUrl" type="attr" /> <public name="mapbox_localIdeographFontFamily" type="attr" /> + <public name="mapbox_mapId" format="string" /> <!--Camera--> <public name="mapbox_cameraTargetLng" type="attr" /> @@ -104,7 +105,7 @@ <public name="mapbox_attributionTelemetryPositive" type="string" /> <public name="mapbox_attributionTelemetryNegative" type="string" /> <public name="mapbox_attributionTelemetryNeutral" type="string" /> - <public name="mapbox_telemetrySettings" type="string"/> + <public name="mapbox_telemetrySettings" type="string" /> <public name="mapbox_offline_error_region_definition_invalid" type="string" /> <!-- Exposed drawables --> diff --git a/platform/android/MapboxGLAndroidSDK/src/main/res/values/attrs.xml b/platform/android/MapboxGLAndroidSDK/src/main/res/values/attrs.xml index f0b80e46e1..2b0da55b81 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/res/values/attrs.xml +++ b/platform/android/MapboxGLAndroidSDK/src/main/res/values/attrs.xml @@ -6,6 +6,7 @@ <attr name="mapbox_styleUrl" format="string"/> <attr name="mapbox_apiBaseUrl" format="string"/> <attr name="mapbox_localIdeographFontFamily" format="string"/> + <attr name="mapbox_mapId" format="string"/> <!--Camera--> <attr name="mapbox_cameraTargetLat" format="float"/> diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/fragment/ViewPagerActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/fragment/ViewPagerActivity.java index 26cf777ba9..d396dfcaa5 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/fragment/ViewPagerActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/fragment/ViewPagerActivity.java @@ -53,16 +53,19 @@ public class ViewPagerActivity extends AppCompatActivity { switch (position) { case 0: options.styleUrl(Style.MAPBOX_STREETS); + options.setMapId("map1"); options.camera(new CameraPosition.Builder().target(new LatLng(34.920526, 102.634774)).zoom(3).build()); fragment = SupportMapFragment.newInstance(options); break; case 1: options.styleUrl(Style.DARK); + options.setMapId("map2"); options.camera(new CameraPosition.Builder().target(new LatLng(62.326440, 92.764913)).zoom(3).build()); fragment = SupportMapFragment.newInstance(options); break; case 2: options.styleUrl(Style.SATELLITE); + options.setMapId("map3"); options.camera(new CameraPosition.Builder().target(new LatLng(-25.007786, 133.623852)).zoom(3).build()); fragment = SupportMapFragment.newInstance(options); break; diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/BottomSheetActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/BottomSheetActivity.java index a165d9ab9d..b1ccb7eaf0 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/BottomSheetActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/BottomSheetActivity.java @@ -35,6 +35,7 @@ public class BottomSheetActivity extends AppCompatActivity { private static final String TAG_BOTTOM_FRAGMENT = "com.mapbox.mapboxsdk.fragment.tag.bottom"; private boolean bottomSheetFragmentAdded; + private int mapsSum; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { @@ -53,7 +54,15 @@ public class BottomSheetActivity extends AppCompatActivity { BottomSheetBehavior bottomSheetBehavior = BottomSheetBehavior.from(findViewById(R.id.bottom_sheet)); bottomSheetBehavior.setPeekHeight((int) (64 * getResources().getDisplayMetrics().density)); bottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED); - toggleBottomSheetMapFragment(); + + if (savedInstanceState == null) { + toggleBottomSheetMapFragment(); + } else { + Fragment fragment = getSupportFragmentManager().findFragmentByTag(TAG_BOTTOM_FRAGMENT); + if (fragment != null) { + bottomSheetFragmentAdded = true; + } + } } @Override @@ -69,6 +78,7 @@ public class BottomSheetActivity extends AppCompatActivity { FragmentManager fragmentManager = getSupportFragmentManager(); if (fragmentManager.getBackStackEntryCount() > 0) { + mapsSum--; fragmentManager.popBackStack(); } else { super.onBackPressed(); @@ -76,11 +86,12 @@ public class BottomSheetActivity extends AppCompatActivity { } private void addMapFragment() { + mapsSum++; FragmentManager fragmentManager = getSupportFragmentManager(); int fragmentCount = fragmentManager.getBackStackEntryCount(); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); - MainMapFragment mainMapFragment = MainMapFragment.newInstance(fragmentCount); + MainMapFragment mainMapFragment = MainMapFragment.newInstance(fragmentCount, mapsSum); if (fragmentCount == 0) { fragmentTransaction.add(R.id.fragment_container, mainMapFragment, TAG_MAIN_FRAGMENT); } else { @@ -126,19 +137,25 @@ public class BottomSheetActivity extends AppCompatActivity { private MapView map; - public static MainMapFragment newInstance(int mapCounter) { + public static MainMapFragment newInstance(int mapCounter, int mapSum) { MainMapFragment mapFragment = new MainMapFragment(); MapboxMapOptions mapboxMapOptions = new MapboxMapOptions(); mapboxMapOptions.styleUrl(STYLES[Math.min(Math.max(mapCounter, 0), STYLES.length - 1)]); + mapboxMapOptions.setMapId(String.valueOf(mapSum)); mapFragment.setArguments(MapFragmentUtils.createFragmentArgs(mapboxMapOptions)); return mapFragment; } @Override + public void onAttach(Context context) { + super.onAttach(context); + } + + @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { super.onCreateView(inflater, container, savedInstanceState); - Context context = inflater.getContext(); - return map = new MapView(context, MapFragmentUtils.resolveArgs(context, getArguments())); + //Context context = inflater.getContext(); + return map = new MapView(getContext(), MapFragmentUtils.resolveArgs(getContext(), getArguments())); } @Override @@ -194,6 +211,16 @@ public class BottomSheetActivity extends AppCompatActivity { super.onDestroyView(); map.onDestroy(); } + + @Override + public void onDetach() { + super.onDetach(); + } + + @Override + public void onDestroy() { + super.onDestroy(); + } } public static class BottomSheetFragment extends Fragment implements OnMapReadyCallback { @@ -205,6 +232,7 @@ public class BottomSheetActivity extends AppCompatActivity { MapboxMapOptions mapboxMapOptions = new MapboxMapOptions(); mapboxMapOptions.renderSurfaceOnTop(true); mapboxMapOptions.styleUrl(Style.LIGHT); + mapboxMapOptions.setMapId("bottom_sheet_map"); mapFragment.setArguments(MapFragmentUtils.createFragmentArgs(mapboxMapOptions)); return mapFragment; } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/MapInDialogActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/MapInDialogActivity.java index ce00c9d18f..43ebbeeff5 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/MapInDialogActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/MapInDialogActivity.java @@ -11,8 +11,12 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; +import android.widget.LinearLayout; +import com.mapbox.mapboxsdk.camera.CameraPosition; +import com.mapbox.mapboxsdk.geometry.LatLng; import com.mapbox.mapboxsdk.maps.MapView; +import com.mapbox.mapboxsdk.maps.MapboxMapOptions; import com.mapbox.mapboxsdk.testapp.R; /** @@ -53,14 +57,24 @@ public class MapInDialogActivity extends AppCompatActivity { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - return inflater.inflate(R.layout.fragment_dialog_map, container); + MapboxMapOptions options = new MapboxMapOptions(); + options.styleUrl("mapbox://styles/mapbox/streets-v10"); + options.camera(new CameraPosition.Builder() + .target(new LatLng(47.6077, -122.3421)) + .zoom(11) + .build()); + mapView = new MapView(getActivity(), options); + + LinearLayout layout = (LinearLayout) inflater.inflate(R.layout.fragment_dialog_map, container); + layout.addView(mapView); + + return layout; } @Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); - mapView = (MapView) view.findViewById(R.id.mapView); mapView.onCreate(savedInstanceState); } @@ -69,6 +83,7 @@ public class MapInDialogActivity extends AppCompatActivity { public Dialog onCreateDialog(Bundle savedInstanceState) { return new Dialog(getActivity(), getTheme()) { boolean destroyed = false; + @Override public void dismiss() { if (mapView != null && !destroyed) { diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/layout/activity_multi_map.xml b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/layout/activity_multi_map.xml index 193ae55e59..a7c8c13db0 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/layout/activity_multi_map.xml +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/layout/activity_multi_map.xml @@ -1,6 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<LinearLayout - xmlns:android="http://schemas.android.com/apk/res/android" +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:mapbox="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" @@ -8,10 +7,10 @@ mapbox:ignore="NestedWeights"> <LinearLayout - android:baselineAligned="false" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="0.5" + android:baselineAligned="false" android:orientation="horizontal"> <!-- DC --> @@ -23,8 +22,9 @@ android:layout_weight="0.5" mapbox:center_latitude="38.913187" mapbox:center_longitude="-77.032546" + mapbox:mapId="map1" mapbox:style_url="mapbox://styles/mapbox/streets-v10" - mapbox:zoom="12"/> + mapbox:zoom="12" /> <!-- SF --> <fragment @@ -35,15 +35,16 @@ android:layout_weight="0.5" mapbox:center_latitude="37.775732" mapbox:center_longitude="-122.413985" + mapbox:mapId="map2" mapbox:style_url="mapbox://styles/mapbox/outdoors-v10" - mapbox:zoom="13"/> + mapbox:zoom="13" /> </LinearLayout> <LinearLayout - android:baselineAligned="false" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="0.5" + android:baselineAligned="false" android:orientation="horizontal"> <!-- Bangalore --> @@ -55,8 +56,9 @@ android:layout_weight="0.5" mapbox:center_latitude="12.97913" mapbox:center_longitude="77.59188" + mapbox:mapId="map3" mapbox:style_url="mapbox://styles/mapbox/light-v9" - mapbox:zoom="14"/> + mapbox:zoom="14" /> <!-- Ayacucho --> <fragment @@ -67,7 +69,8 @@ android:layout_weight="0.5" mapbox:center_latitude="-13.155980" mapbox:center_longitude="-74.217134" + mapbox:mapId="map4" mapbox:style_url="mapbox://styles/mapbox/dark-v9" - mapbox:zoom="15"/> + mapbox:zoom="15" /> </LinearLayout> </LinearLayout> diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/layout/fragment_dialog_map.xml b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/layout/fragment_dialog_map.xml index b8ea3d847e..74dab0784d 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/layout/fragment_dialog_map.xml +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/layout/fragment_dialog_map.xml @@ -1,17 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:mapbox="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> - <com.mapbox.mapboxsdk.maps.MapView - android:id="@+id/mapView" - android:layout_width="match_parent" - android:layout_height="match_parent" - mapbox:mapbox_cameraTargetLat="47.6077" - mapbox:mapbox_cameraTargetLng="-122.3421" - mapbox:mapbox_cameraZoom="11" - mapbox:mapbox_styleUrl="mapbox://styles/mapbox/streets-v10" /> - </LinearLayout> diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/layout/fragment_double_map.xml b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/layout/fragment_double_map.xml index 3cf2fbea55..8cc60241e8 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/layout/fragment_double_map.xml +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/layout/fragment_double_map.xml @@ -1,13 +1,15 @@ <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="fill_parent" - android:layout_height="fill_parent" - xmlns:maps="http://schemas.android.com/apk/res-auto"> + xmlns:mapbox="http://schemas.android.com/tools" + xmlns:maps="http://schemas.android.com/apk/res-auto" + android:layout_width="fill_parent" + android:layout_height="fill_parent"> <com.mapbox.mapboxsdk.maps.MapView android:id="@id/mapView" android:layout_width="match_parent" - android:layout_height="match_parent" /> + android:layout_height="match_parent" + mapbox:mapId="map1" /> <FrameLayout android:layout_width="100dp" @@ -19,7 +21,8 @@ <com.mapbox.mapboxsdk.maps.MapView android:id="@+id/mini_map" android:layout_width="100dp" + android:layout_height="100dp" maps:mapbox_enableZMediaOverlay="true" - android:layout_height="100dp" /> + mapbox:mapId="map2" /> </FrameLayout> </RelativeLayout> |