Skip to content

Commit 1a61269

Browse files
[create-pull-request] automated change
1 parent 4a7428b commit 1a61269

File tree

6 files changed

+67
-0
lines changed

6 files changed

+67
-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 GetCameraTargetElevation : MTCommand {
13+
override val isPrimitiveReturnType: Boolean = true
14+
15+
override fun toJS(): String = "${MTBridge.MAP_OBJECT}.getCameraTargetElevation();"
16+
}

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -429,6 +429,11 @@ class MTMapViewController(
429429
*/
430430
override suspend fun getCenterElevation(): Double = navigableWorker.getCenterElevation()
431431

432+
/**
433+
* Returns the elevation of the location currently targeted by the camera, in meters above sea level.
434+
*/
435+
override suspend fun getCameraTargetElevation(): Double = navigableWorker.getCameraTargetElevation()
436+
432437
/**
433438
* Returns the geographical constraints currently applied to the map, if any.
434439
*/

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
@@ -159,6 +159,11 @@ interface MTNavigable {
159159
*/
160160
suspend fun getCenterElevation(): Double
161161

162+
/**
163+
* Returns the elevation of the point currently targeted by the camera, in meters above sea level.
164+
*/
165+
suspend fun getCameraTargetElevation(): Double
166+
162167
/**
163168
* Returns the geographical constraints currently applied to the map, if any.
164169
*/

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

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import com.maptiler.maptilersdk.commands.navigation.FitToIpBounds
1919
import com.maptiler.maptilersdk.commands.navigation.FlyTo
2020
import com.maptiler.maptilersdk.commands.navigation.GetBearing
2121
import com.maptiler.maptilersdk.commands.navigation.GetBounds
22+
import com.maptiler.maptilersdk.commands.navigation.GetCameraTargetElevation
2223
import com.maptiler.maptilersdk.commands.navigation.GetCenter
2324
import com.maptiler.maptilersdk.commands.navigation.GetCenterClampedToGround
2425
import com.maptiler.maptilersdk.commands.navigation.GetCenterElevation
@@ -353,6 +354,19 @@ internal class NavigableWorker(
353354
}
354355
}
355356

357+
override suspend fun getCameraTargetElevation(): Double {
358+
val returnTypeValue =
359+
bridge.execute(
360+
GetCameraTargetElevation(),
361+
)
362+
363+
return when (returnTypeValue) {
364+
is DoubleValue -> returnTypeValue.value
365+
is StringValue -> returnTypeValue.value.toDoubleOrNull() ?: 0.0
366+
else -> 0.0
367+
}
368+
}
369+
356370
override suspend fun project(coordinates: LngLat): MTPoint {
357371
val returnTypeValue =
358372
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
@@ -8,6 +8,7 @@ package com.maptiler.maptilersdk
88

99
import com.maptiler.maptilersdk.bridge.MTBridge
1010
import com.maptiler.maptilersdk.commands.navigation.AreTilesLoaded
11+
import com.maptiler.maptilersdk.commands.navigation.GetCameraTargetElevation
1112
import com.maptiler.maptilersdk.commands.navigation.GetCenterClampedToGround
1213
import com.maptiler.maptilersdk.commands.navigation.GetCenterElevation
1314
import com.maptiler.maptilersdk.commands.navigation.GetMaxPitch
@@ -57,6 +58,11 @@ class NavigationTests {
5758
assertEquals("${MTBridge.MAP_OBJECT}.getCenterElevation();", command.toJS())
5859
}
5960

61+
@Test fun getCameraTargetElevationToJS_ReturnsCorrectJSString() {
62+
val command = GetCameraTargetElevation()
63+
assertEquals("${MTBridge.MAP_OBJECT}.getCameraTargetElevation();", command.toJS())
64+
}
65+
6066
@Test fun getMaxZoomToJS_ReturnsCorrectJSString() {
6167
val command = GetMaxZoom()
6268
assertEquals("${MTBridge.MAP_OBJECT}.getMaxZoom();", command.toJS())

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

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import com.maptiler.maptilersdk.bridge.MTCommand
1212
import com.maptiler.maptilersdk.bridge.MTCommandExecutable
1313
import com.maptiler.maptilersdk.commands.navigation.AreTilesLoaded
1414
import com.maptiler.maptilersdk.commands.navigation.CenterOnIpPoint
15+
import com.maptiler.maptilersdk.commands.navigation.GetCameraTargetElevation
1516
import com.maptiler.maptilersdk.commands.navigation.GetBearing
1617
import com.maptiler.maptilersdk.commands.navigation.GetCenterClampedToGround
1718
import com.maptiler.maptilersdk.commands.navigation.GetCenterElevation
@@ -208,6 +209,26 @@ class WorkerAndStyleTests {
208209
assertTrue(usedGetCenterElevation)
209210
}
210211

212+
@Test fun navigableWorker_getCameraTargetElevation_ParsesStringReturnType() =
213+
runBlocking {
214+
var usedGetCameraTargetElevation = false
215+
val exec =
216+
object : MTCommandExecutable {
217+
override suspend fun execute(command: MTCommand): MTBridgeReturnType {
218+
if (command is GetCameraTargetElevation) {
219+
usedGetCameraTargetElevation = true
220+
}
221+
return MTBridgeReturnType.StringValue("1337.0")
222+
}
223+
}
224+
val bridge = MTBridge(exec)
225+
val worker = NavigableWorker(bridge, this)
226+
227+
val result = worker.getCameraTargetElevation()
228+
assertEquals(1337.0, result, 0.0)
229+
assertTrue(usedGetCameraTargetElevation)
230+
}
231+
211232
@Test fun stylableWorker_getProjection_UsesGetProjectionCommand() =
212233
runBlocking {
213234
var usedGetProjection = false

0 commit comments

Comments
 (0)