diff options
Diffstat (limited to 'platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/utils/MapFragmentUtils.java')
-rw-r--r-- | platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/utils/MapFragmentUtils.java | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/utils/MapFragmentUtils.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/utils/MapFragmentUtils.java new file mode 100644 index 0000000000..f810d6231d --- /dev/null +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/utils/MapFragmentUtils.java @@ -0,0 +1,56 @@ +package com.mapbox.mapboxsdk.utils; + +import android.content.Context; +import android.graphics.drawable.Drawable; +import android.os.Bundle; +import android.support.v4.content.ContextCompat; + +import com.mapbox.mapboxsdk.R; +import com.mapbox.mapboxsdk.constants.MapboxConstants; +import com.mapbox.mapboxsdk.maps.MapboxMapOptions; + +/** + * MapFragment utility class. + * <p> + * Used to extract duplicate code between {@link com.mapbox.mapboxsdk.maps.MapFragment} and + * {@link com.mapbox.mapboxsdk.maps.SupportMapFragment}. + * </p> + */ +public class MapFragmentUtils { + + public static Bundle createFragmentArgs(MapboxMapOptions options) { + Bundle bundle = new Bundle(); + bundle.putParcelable(MapboxConstants.FRAG_ARG_MAPBOXMAPOPTIONS, options); + return bundle; + } + + public static MapboxMapOptions resolveArgs(Context context, Bundle args) { + MapboxMapOptions options; + if (args != null && args.containsKey(MapboxConstants.FRAG_ARG_MAPBOXMAPOPTIONS)) { + options = args.getParcelable(MapboxConstants.FRAG_ARG_MAPBOXMAPOPTIONS); + } else { + // load default options + options = MapboxMapOptions.createFromAttributes(context, null); + } + options = loadDefaultMyLocationViewDrawables(context, options); + return options; + } + + private static MapboxMapOptions loadDefaultMyLocationViewDrawables(Context context, MapboxMapOptions options) { + Drawable foregroundDrawable = options.getMyLocationForegroundDrawable(); + Drawable foregroundBearingDrawable = options.getMyLocationForegroundBearingDrawable(); + if (foregroundDrawable == null || foregroundBearingDrawable == null) { + if (foregroundDrawable == null) { + foregroundDrawable = ContextCompat.getDrawable(context, R.drawable.mapbox_mylocation_icon_default); + } + if (foregroundBearingDrawable == null) { + foregroundBearingDrawable = ContextCompat.getDrawable(context, R.drawable.mapbox_mylocation_icon_bearing); + } + options.myLocationForegroundDrawables(foregroundDrawable, foregroundBearingDrawable); + } + if (options.getMyLocationBackgroundDrawable() == null) { + options.myLocationBackgroundDrawable(ContextCompat.getDrawable(context, R.drawable.mapbox_mylocation_bg_shape)); + } + return options; + } +} |