From cef386ca471ac703aaf97b9bad9b0505eb1dd37f Mon Sep 17 00:00:00 2001 From: Tobrun Van Nuland Date: Thu, 28 Sep 2017 08:05:12 +0200 Subject: [android] - make OfflineTilePyramidRegionDefinition parceable --- .../OfflineTilePyramidRegionDefinition.java | 54 +++++++++++++++++++++- 1 file changed, 52 insertions(+), 2 deletions(-) diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineTilePyramidRegionDefinition.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineTilePyramidRegionDefinition.java index f8ec0f3d39..2a32f0bdd6 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineTilePyramidRegionDefinition.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineTilePyramidRegionDefinition.java @@ -1,5 +1,9 @@ package com.mapbox.mapboxsdk.offline; +import android.os.Parcel; +import android.os.Parcelable; + +import com.mapbox.mapboxsdk.geometry.LatLng; import com.mapbox.mapboxsdk.geometry.LatLngBounds; /** @@ -13,7 +17,7 @@ import com.mapbox.mapboxsdk.geometry.LatLngBounds; *

* pixelRatio must be ≥ 0 and should typically be 1.0 or 2.0. */ -public class OfflineTilePyramidRegionDefinition implements OfflineRegionDefinition { +public class OfflineTilePyramidRegionDefinition implements OfflineRegionDefinition, Parcelable { private String styleURL; private LatLngBounds bounds; @@ -22,7 +26,7 @@ public class OfflineTilePyramidRegionDefinition implements OfflineRegionDefiniti private float pixelRatio; /** - * Constructor + * Constructor to create an OfflineTilePyramidDefinition from parameters. * * @param styleURL the style * @param bounds the bounds @@ -40,6 +44,22 @@ public class OfflineTilePyramidRegionDefinition implements OfflineRegionDefiniti this.pixelRatio = pixelRatio; } + /** + * Constructor to create an OfflineTilePyramidDefinition from a Parcel. + * + * @param parcel the parcel to create the OfflineTilePyramidDefinition from + */ + public OfflineTilePyramidRegionDefinition(Parcel parcel) { + this.styleURL = parcel.readString(); + this.bounds = new LatLngBounds.Builder() + .include(new LatLng(parcel.readDouble(), parcel.readDouble())) + .include(new LatLng(parcel.readDouble(), parcel.readDouble())) + .build(); + this.minZoom = parcel.readDouble(); + this.maxZoom = parcel.readDouble(); + this.pixelRatio = parcel.readFloat(); + } + /* * Getters */ @@ -64,4 +84,34 @@ public class OfflineTilePyramidRegionDefinition implements OfflineRegionDefiniti return pixelRatio; } + /* + * Parceable + */ + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeString(styleURL); + dest.writeDouble(bounds.getLatNorth()); + dest.writeDouble(bounds.getLonEast()); + dest.writeDouble(bounds.getLatSouth()); + dest.writeDouble(bounds.getLonWest()); + dest.writeDouble(minZoom); + dest.writeDouble(maxZoom); + dest.writeFloat(pixelRatio); + } + + public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { + public OfflineTilePyramidRegionDefinition createFromParcel(Parcel in) { + return new OfflineTilePyramidRegionDefinition(in); + } + + public OfflineTilePyramidRegionDefinition[] newArray(int size) { + return new OfflineTilePyramidRegionDefinition[size]; + } + }; } -- cgit v1.2.1