summaryrefslogtreecommitdiff
path: root/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineManager.java
diff options
context:
space:
mode:
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.java29
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.