diff --git a/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/sources/Source.java b/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/sources/Source.java index 7d2c409b0..bc70cb70a 100644 --- a/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/sources/Source.java +++ b/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/sources/Source.java @@ -2,6 +2,8 @@ package com.mapbox.mapboxsdk.style.sources; import androidx.annotation.Keep; import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + import com.mapbox.mapboxsdk.LibraryLoader; import com.mapbox.mapboxsdk.utils.ThreadUtils; @@ -68,6 +70,28 @@ public abstract class Source { return nativeGetAttribution(); } + /** + * Retrieve current pre-fetching zoom delta. + * + * @return current zoom delta or null if not set. + */ + @Nullable + public Integer getPrefetchZoomDelta() { + return nativeGetPrefetchZoomDelta(); + } + + /** + * Set the tile pre-fetching zoom delta for current source. Pre-fetching makes sure that a low-resolution + * tile at the (current_zoom_level - delta) is rendered as soon as possible at the + * expense of a little bandwidth. + * If delta has not been set or set to null, it will use the value in MapboxMap instance. + * + * @param delta zoom delta + */ + public void setPrefetchZoomDelta(@Nullable Integer delta) { + nativeSetPrefetchZoomDelta(delta); + } + /** * Internal use * @@ -85,6 +109,14 @@ public abstract class Source { @Keep protected native String nativeGetAttribution(); + @NonNull + @Keep + protected native Integer nativeGetPrefetchZoomDelta(); + + @NonNull + @Keep + protected native void nativeSetPrefetchZoomDelta(Integer delta); + public void setDetached() { detached = true; } diff --git a/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/CustomGeometrySourceTest.kt b/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/CustomGeometrySourceTest.kt index 359dc6469..cc4a04ecd 100644 --- a/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/CustomGeometrySourceTest.kt +++ b/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/CustomGeometrySourceTest.kt @@ -14,6 +14,7 @@ import com.mapbox.mapboxsdk.testapp.activity.style.GridSourceActivity.ID_GRID_LA import com.mapbox.mapboxsdk.testapp.activity.style.GridSourceActivity.ID_GRID_SOURCE import com.mapbox.mapboxsdk.testapp.utils.TestingAsyncUtils import org.junit.Assert +import org.junit.Assert.* import org.junit.Test class CustomGeometrySourceTest : BaseTest() { @@ -66,4 +67,20 @@ class CustomGeometrySourceTest : BaseTest() { }.count() == THREAD_POOL_LIMIT) } } + + @Test + fun sourceZoomDeltaTest() { + validateTestSetup() + invoke(mapboxMap) { uiController, mapboxMap -> + mapboxMap.prefetchZoomDelta = 3 + mapboxMap.style!!.getSource(ID_GRID_SOURCE)!!.let { + assertNull(it.prefetchZoomDelta) + it.prefetchZoomDelta = 5 + assertNotNull(it.prefetchZoomDelta) + assertEquals(5, it.prefetchZoomDelta!!) + it.prefetchZoomDelta = null + assertNull(it.prefetchZoomDelta) + } + } + } } \ No newline at end of file diff --git a/vendor/mapbox-gl-native b/vendor/mapbox-gl-native index a551f70c6..43c1aac7e 160000 --- a/vendor/mapbox-gl-native +++ b/vendor/mapbox-gl-native @@ -1 +1 @@ -Subproject commit a551f70c6da8973f23e10cf19b630376553ab699 +Subproject commit 43c1aac7e800d5f1695fd08639a2db5c1e1dd1af