summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
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
commitd8563881c0ee4f62e2f61ce6617ecbf1491ad28b (patch)
tree2d325e603b07bf9433764af7e0fcced6192a7d33
parent27b3323da944d7db47dcbd8342b8bb4fac2a06bb (diff)
downloadqtlocation-mapboxgl-d8563881c0ee4f62e2f61ce6617ecbf1491ad28b.tar.gz
[android] - distinct multiple MapViews with unique IDs
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapFragment.java16
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java26
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMapOptions.java35
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/SupportMapFragment.java15
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/CompassView.java8
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/WidgetUpdater.java4
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/res-public/values/public.xml3
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/res/values/attrs.xml1
-rw-r--r--platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/fragment/ViewPagerActivity.java3
-rw-r--r--platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/BottomSheetActivity.java38
-rw-r--r--platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/MapInDialogActivity.java19
-rw-r--r--platform/android/MapboxGLAndroidSDKTestApp/src/main/res/layout/activity_multi_map.xml19
-rw-r--r--platform/android/MapboxGLAndroidSDKTestApp/src/main/res/layout/fragment_dialog_map.xml10
-rw-r--r--platform/android/MapboxGLAndroidSDKTestApp/src/main/res/layout/fragment_double_map.xml13
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>