Skip to content

Commit 5909d07

Browse files
RD-980: Update panning suspend
1 parent ae4ccbc commit 5909d07

File tree

5 files changed

+78
-46
lines changed

5 files changed

+78
-46
lines changed

MapTilerSDK/src/main/java/com/maptiler/maptilersdk/map/MTMapViewController.kt

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,6 @@ class MTMapViewController(
7575
bridge = MTBridge(webViewExecutor)
7676

7777
gestureService = MTGestureService.create(bridge!!, this)
78-
79-
initializeWorkers()
8078
}
8179

8280
private suspend fun initializeMap() {
@@ -102,12 +100,13 @@ class MTMapViewController(
102100
}
103101

104102
private fun initializeWorkers() {
105-
zoomableWorker = ZoomableWorker(bridge!!)
106-
navigableWorker = NavigableWorker(bridge!!)
103+
zoomableWorker = ZoomableWorker(bridge!!, coroutineScope!!)
104+
navigableWorker = NavigableWorker(bridge!!, coroutineScope!!)
107105
}
108106

109107
fun bind(scope: CoroutineScope) {
110108
coroutineScope = scope
109+
initializeWorkers()
111110
}
112111

113112
fun destroy() {
@@ -131,12 +130,12 @@ class MTMapViewController(
131130
/**
132131
* Increases the map's zoom level by 1.
133132
*/
134-
override suspend fun zoomIn() = zoomableWorker.zoomIn()
133+
override fun zoomIn() = zoomableWorker.zoomIn()
135134

136135
/**
137136
* Decreases the map's zoom level by 1.
138137
*/
139-
override suspend fun zoomOut() = zoomableWorker.zoomOut()
138+
override fun zoomOut() = zoomableWorker.zoomOut()
140139

141140
/**
142141
* Returns the map's current zoom level.
@@ -148,19 +147,19 @@ class MTMapViewController(
148147
*
149148
* @param zoom The zoom level to set (0-20).
150149
*/
151-
override suspend fun setZoom(zoom: Double) = zoomableWorker.setZoom(zoom)
150+
override fun setZoom(zoom: Double) = zoomableWorker.setZoom(zoom)
152151

153152
/**
154153
* Sets the map's maximum zoom.
155154
* @param maxZoom Desired zoom.
156155
*/
157-
override suspend fun setMaxZoom(maxZoom: Double) = zoomableWorker.setMaxZoom(maxZoom)
156+
override fun setMaxZoom(maxZoom: Double) = zoomableWorker.setMaxZoom(maxZoom)
158157

159158
/**
160159
* Sets the map's minimum zoom.
161160
* @param minZoom Desired zoom.
162161
*/
163-
override suspend fun setMinZoom(minZoom: Double) = zoomableWorker.setMinZoom(minZoom)
162+
override fun setMinZoom(minZoom: Double) = zoomableWorker.setMinZoom(minZoom)
164163

165164
// NAVIGABLE
166165

@@ -169,12 +168,12 @@ class MTMapViewController(
169168
*
170169
* @param offset Offset to pan by.
171170
*/
172-
override suspend fun panBy(offset: MTPoint) = navigableWorker.panBy(offset)
171+
override fun panBy(offset: MTPoint) = navigableWorker.panBy(offset)
173172

174173
/**
175174
* Pans the map to the specified location with an animated transition.
176175
*
177176
* @param coordinates Coordinates to pan to.
178177
*/
179-
override suspend fun panTo(coordinates: LngLat) = navigableWorker.panTo(coordinates)
178+
override fun panTo(coordinates: LngLat) = navigableWorker.panTo(coordinates)
180179
}

MapTilerSDK/src/main/java/com/maptiler/maptilersdk/map/workers/navigable/MTNavigable.kt

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,21 @@ package com.maptiler.maptilersdk.map.workers.navigable
99
import com.maptiler.maptilersdk.map.LngLat
1010
import com.maptiler.maptilersdk.map.types.MTPoint
1111

12+
/**
13+
* Defines methods for navigating the map.
14+
*/
1215
interface MTNavigable {
13-
suspend fun panBy(offset: MTPoint)
16+
/**
17+
* Pans the map by the specified offset.
18+
*
19+
* @param offset Offset to pan by.
20+
*/
21+
fun panBy(offset: MTPoint)
1422

15-
suspend fun panTo(coordinates: LngLat)
23+
/**
24+
* Pans the map to the specified location with an animated transition.
25+
*
26+
* @param coordinates Coordinates to pan to.
27+
*/
28+
fun panTo(coordinates: LngLat)
1629
}

MapTilerSDK/src/main/java/com/maptiler/maptilersdk/map/workers/navigable/NavigableWorker.kt

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,19 +11,26 @@ import com.maptiler.maptilersdk.commands.navigation.PanBy
1111
import com.maptiler.maptilersdk.commands.navigation.PanTo
1212
import com.maptiler.maptilersdk.map.LngLat
1313
import com.maptiler.maptilersdk.map.types.MTPoint
14+
import kotlinx.coroutines.CoroutineScope
15+
import kotlinx.coroutines.launch
1416

1517
internal class NavigableWorker(
1618
private val bridge: MTBridge,
19+
private val scope: CoroutineScope,
1720
) : MTNavigable {
18-
override suspend fun panBy(offset: MTPoint) {
19-
bridge.execute(
20-
PanBy(offset),
21-
)
21+
override fun panBy(offset: MTPoint) {
22+
scope.launch {
23+
bridge.execute(
24+
PanBy(offset),
25+
)
26+
}
2227
}
2328

24-
override suspend fun panTo(coordinates: LngLat) {
25-
bridge.execute(
26-
PanTo(coordinates),
27-
)
29+
override fun panTo(coordinates: LngLat) {
30+
scope.launch {
31+
bridge.execute(
32+
PanTo(coordinates),
33+
)
34+
}
2835
}
2936
}

MapTilerSDK/src/main/java/com/maptiler/maptilersdk/map/workers/zoomable/MTZoomable.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,12 @@ interface MTZoomable {
1313
/**
1414
* Increases the map's zoom level by 1.
1515
*/
16-
suspend fun zoomIn()
16+
fun zoomIn()
1717

1818
/**
1919
* Decreases the map's zoom level by 1.
2020
*/
21-
suspend fun zoomOut()
21+
fun zoomOut()
2222

2323
/**
2424
* Returns the map's current zoom level.
@@ -30,19 +30,19 @@ interface MTZoomable {
3030
*
3131
* @param zoom The zoom level to set (0-20).
3232
*/
33-
suspend fun setZoom(zoom: Double)
33+
fun setZoom(zoom: Double)
3434

3535
/**
3636
* Sets the map's maximum zoom level.
3737
*
3838
* @param maxZoom The max zoom level to set (0-20).
3939
*/
40-
suspend fun setMaxZoom(maxZoom: Double)
40+
fun setMaxZoom(maxZoom: Double)
4141

4242
/**
4343
* Sets the map's minimum zoom level.
4444
*
4545
* @param minZoom The min zoom level to set (0-20).
4646
*/
47-
suspend fun setMinZoom(minZoom: Double)
47+
fun setMinZoom(minZoom: Double)
4848
}

MapTilerSDK/src/main/java/com/maptiler/maptilersdk/map/workers/zoomable/ZoomableWorker.kt

Lines changed: 33 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -15,20 +15,27 @@ import com.maptiler.maptilersdk.commands.navigation.SetMinZoom
1515
import com.maptiler.maptilersdk.commands.navigation.SetZoom
1616
import com.maptiler.maptilersdk.commands.navigation.ZoomIn
1717
import com.maptiler.maptilersdk.commands.navigation.ZoomOut
18+
import kotlinx.coroutines.CoroutineScope
19+
import kotlinx.coroutines.launch
1820

1921
internal class ZoomableWorker(
2022
private val bridge: MTBridge,
23+
private val scope: CoroutineScope,
2124
) : MTZoomable {
22-
override suspend fun zoomIn() {
23-
bridge.execute(
24-
ZoomIn(),
25-
)
25+
override fun zoomIn() {
26+
scope.launch {
27+
bridge.execute(
28+
ZoomIn(),
29+
)
30+
}
2631
}
2732

28-
override suspend fun zoomOut() {
29-
bridge.execute(
30-
ZoomOut(),
31-
)
33+
override fun zoomOut() {
34+
scope.launch {
35+
bridge.execute(
36+
ZoomOut(),
37+
)
38+
}
3239
}
3340

3441
override suspend fun getZoom(): Double {
@@ -44,21 +51,27 @@ internal class ZoomableWorker(
4451
}
4552
}
4653

47-
override suspend fun setZoom(zoom: Double) {
48-
bridge.execute(
49-
SetZoom(zoom),
50-
)
54+
override fun setZoom(zoom: Double) {
55+
scope.launch {
56+
bridge.execute(
57+
SetZoom(zoom),
58+
)
59+
}
5160
}
5261

53-
override suspend fun setMaxZoom(maxZoom: Double) {
54-
bridge.execute(
55-
SetMaxZoom(maxZoom),
56-
)
62+
override fun setMaxZoom(maxZoom: Double) {
63+
scope.launch {
64+
bridge.execute(
65+
SetMaxZoom(maxZoom),
66+
)
67+
}
5768
}
5869

59-
override suspend fun setMinZoom(minZoom: Double) {
60-
bridge.execute(
61-
SetMinZoom(minZoom),
62-
)
70+
override fun setMinZoom(minZoom: Double) {
71+
scope.launch {
72+
bridge.execute(
73+
SetMinZoom(minZoom),
74+
)
75+
}
6376
}
6477
}

0 commit comments

Comments
 (0)