Skip to content

Commit 1197a8a

Browse files
RD-1375: Add GetRenderWorldCopies Getter
Co-authored-by: klokantechsysadmin <[email protected]>
1 parent 862f120 commit 1197a8a

File tree

6 files changed

+97
-0
lines changed

6 files changed

+97
-0
lines changed
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
/*
2+
* Copyright (c) 2025, MapTiler
3+
* All rights reserved.
4+
* SPDX-License-Identifier: BSD 3-Clause
5+
*/
6+
7+
package com.maptiler.maptilersdk.commands.navigation
8+
9+
import com.maptiler.maptilersdk.bridge.MTBridge
10+
import com.maptiler.maptilersdk.bridge.MTCommand
11+
12+
internal class GetRenderWorldCopies : MTCommand {
13+
override val isPrimitiveReturnType: Boolean = true
14+
15+
override fun toJS(): String = "${MTBridge.MAP_OBJECT}.getRenderWorldCopies();"
16+
}

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -380,6 +380,8 @@ class MTMapViewController(
380380
*/
381381
override suspend fun getCenterClampedToGround(): Boolean = navigableWorker.getCenterClampedToGround()
382382

383+
override suspend fun getRenderWorldCopies(): Boolean = navigableWorker.getRenderWorldCopies()
384+
383385
/**
384386
* Returns the elevation of the map's center point in meters above sea level.
385387
*/

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,11 @@ interface MTNavigable {
111111
*/
112112
suspend fun getCenterClampedToGround(): Boolean
113113

114+
/**
115+
* Returns whether the map is set to render multiple world copies.
116+
*/
117+
suspend fun getRenderWorldCopies(): Boolean
118+
114119
/**
115120
* Returns the elevation of the map's center point in meters above sea level.
116121
*/

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

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import com.maptiler.maptilersdk.commands.navigation.GetCenterElevation
1919
import com.maptiler.maptilersdk.commands.navigation.GetMaxPitch
2020
import com.maptiler.maptilersdk.commands.navigation.GetMinPitch
2121
import com.maptiler.maptilersdk.commands.navigation.GetPitch
22+
import com.maptiler.maptilersdk.commands.navigation.GetRenderWorldCopies
2223
import com.maptiler.maptilersdk.commands.navigation.GetRoll
2324
import com.maptiler.maptilersdk.commands.navigation.JumpTo
2425
import com.maptiler.maptilersdk.commands.navigation.PanBy
@@ -211,6 +212,27 @@ internal class NavigableWorker(
211212
}
212213
}
213214

215+
override suspend fun getRenderWorldCopies(): Boolean {
216+
val returnTypeValue =
217+
bridge.execute(
218+
GetRenderWorldCopies(),
219+
)
220+
221+
return when (returnTypeValue) {
222+
is BoolValue -> returnTypeValue.value
223+
is DoubleValue -> returnTypeValue.value != 0.0
224+
is StringValue -> {
225+
val normalized = returnTypeValue.value.trim().lowercase()
226+
when (normalized) {
227+
"true" -> true
228+
"false" -> false
229+
else -> normalized.toDoubleOrNull()?.let { it != 0.0 } ?: false
230+
}
231+
}
232+
else -> false
233+
}
234+
}
235+
214236
override suspend fun getCenterElevation(): Double {
215237
val returnTypeValue =
216238
bridge.execute(

MapTilerSDK/src/test/java/com/maptiler/maptilersdk/NavigationTests.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import com.maptiler.maptilersdk.commands.navigation.GetMaxPitch
1313
import com.maptiler.maptilersdk.commands.navigation.GetMaxZoom
1414
import com.maptiler.maptilersdk.commands.navigation.GetMinPitch
1515
import com.maptiler.maptilersdk.commands.navigation.GetMinZoom
16+
import com.maptiler.maptilersdk.commands.navigation.GetRenderWorldCopies
1617
import com.maptiler.maptilersdk.commands.navigation.GetZoom
1718
import com.maptiler.maptilersdk.commands.navigation.PanBy
1819
import com.maptiler.maptilersdk.commands.navigation.PanTo
@@ -33,6 +34,11 @@ class NavigationTests {
3334
assertEquals("${MTBridge.MAP_OBJECT}.getCenterClampedToGround();", command.toJS())
3435
}
3536

37+
@Test fun getRenderWorldCopiesToJS_ReturnsCorrectJSString() {
38+
val command = GetRenderWorldCopies()
39+
assertEquals("${MTBridge.MAP_OBJECT}.getRenderWorldCopies();", command.toJS())
40+
}
41+
3642
@Test fun getCenterElevationToJS_ReturnsCorrectJSString() {
3743
val command = GetCenterElevation()
3844
assertEquals("${MTBridge.MAP_OBJECT}.getCenterElevation();", command.toJS())

MapTilerSDK/src/test/java/com/maptiler/maptilersdk/WorkerAndStyleTests.kt

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import com.maptiler.maptilersdk.bridge.MTCommandExecutable
1313
import com.maptiler.maptilersdk.commands.navigation.GetBearing
1414
import com.maptiler.maptilersdk.commands.navigation.GetCenterClampedToGround
1515
import com.maptiler.maptilersdk.commands.navigation.GetCenterElevation
16+
import com.maptiler.maptilersdk.commands.navigation.GetRenderWorldCopies
1617
import com.maptiler.maptilersdk.commands.style.GetProjection
1718
import com.maptiler.maptilersdk.map.style.MTMapReferenceStyle
1819
import com.maptiler.maptilersdk.map.style.MTStyle
@@ -78,6 +79,51 @@ class WorkerAndStyleTests {
7879
assertTrue(executedCommands.all { it is GetCenterClampedToGround })
7980
}
8081

82+
@Test fun navigableWorker_getRenderWorldCopies_ParsesPrimitiveReturnTypes() =
83+
runBlocking {
84+
val executedCommands = mutableListOf<MTCommand>()
85+
val responses =
86+
ArrayDeque(
87+
listOf(
88+
MTBridgeReturnType.BoolValue(true),
89+
MTBridgeReturnType.StringValue("false"),
90+
MTBridgeReturnType.StringValue("1"),
91+
MTBridgeReturnType.DoubleValue(0.0),
92+
MTBridgeReturnType.DoubleValue(2.0),
93+
MTBridgeReturnType.StringValue(" TRUE "),
94+
MTBridgeReturnType.StringValue("invalid"),
95+
),
96+
)
97+
98+
val exec =
99+
object : MTCommandExecutable {
100+
override suspend fun execute(command: MTCommand): MTBridgeReturnType {
101+
executedCommands.add(command)
102+
return responses.removeFirst()
103+
}
104+
}
105+
106+
val bridge = MTBridge(exec)
107+
val worker = NavigableWorker(bridge, this)
108+
109+
val first = worker.getRenderWorldCopies()
110+
val second = worker.getRenderWorldCopies()
111+
val third = worker.getRenderWorldCopies()
112+
val fourth = worker.getRenderWorldCopies()
113+
val fifth = worker.getRenderWorldCopies()
114+
val sixth = worker.getRenderWorldCopies()
115+
val seventh = worker.getRenderWorldCopies()
116+
117+
assertEquals(true, first)
118+
assertEquals(false, second)
119+
assertEquals(true, third)
120+
assertEquals(false, fourth)
121+
assertEquals(true, fifth)
122+
assertEquals(true, sixth)
123+
assertEquals(false, seventh)
124+
assertTrue(executedCommands.all { it is GetRenderWorldCopies })
125+
}
126+
81127
@Test fun navigableWorker_getCenterElevation_ParsesStringReturnType() =
82128
runBlocking {
83129
var usedGetCenterElevation = false

0 commit comments

Comments
 (0)