diff options
Diffstat (limited to 'platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineManager.java')
-rw-r--r-- | platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineManager.java | 29 |
1 files changed, 23 insertions, 6 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineManager.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineManager.java index 8bf19c4065..225278b17d 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineManager.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineManager.java @@ -5,6 +5,8 @@ import android.os.Handler; import android.os.Looper; import android.support.annotation.NonNull; +import com.mapbox.mapboxsdk.R; +import com.mapbox.mapboxsdk.geometry.LatLngBounds; import com.mapbox.mapboxsdk.net.ConnectivityReceiver; import com.mapbox.mapboxsdk.storage.FileSource; @@ -26,7 +28,6 @@ public class OfflineManager { System.loadLibrary("mapbox-gl"); } - // Native peer pointer private long nativePtr; @@ -139,7 +140,8 @@ public class OfflineManager { * * @param callback the callback to be invoked */ - public void listOfflineRegions(@NonNull final ListOfflineRegionsCallback callback) { + public void listOfflineRegions(@NonNull + final ListOfflineRegionsCallback callback) { listOfflineRegions(fileSource, new ListOfflineRegionsCallback() { @Override @@ -180,10 +182,15 @@ public class OfflineManager { * @param metadata the metadata in bytes * @param callback the callback to be invoked */ - public void createOfflineRegion( - @NonNull OfflineRegionDefinition definition, - @NonNull byte[] metadata, - @NonNull final CreateOfflineRegionCallback callback) { + public void createOfflineRegion(@NonNull OfflineRegionDefinition definition, @NonNull byte[] metadata, + final CreateOfflineRegionCallback callback) { + if (!isValidOfflineRegionDefinition(definition)) { + callback.onError( + String.format(context.getString(R.string.mapbox_offline_error_region_definition_invalid), + definition.getBounds()) + ); + return; + } ConnectivityReceiver.instance(context).activate(); createOfflineRegion(fileSource, definition, metadata, new CreateOfflineRegionCallback() { @@ -212,6 +219,16 @@ public class OfflineManager { }); } + /** + * Validates if the offline region definition bounds is valid for an offline region download. + * + * @param definition the offline region definition + * @return true if the region fits the world bounds. + */ + private boolean isValidOfflineRegionDefinition(OfflineRegionDefinition definition) { + return LatLngBounds.world().contains(definition.getBounds()); + } + /* * Changing or bypassing this limit without permission from Mapbox is prohibited * by the Mapbox Terms of Service. |