Skip to content

Commit 4526b72

Browse files
authored
Location properties might return NaN (#465)
1 parent 09e0ee6 commit 4526b72

5 files changed

Lines changed: 21 additions & 11 deletions

File tree

  • gradle
  • samples
    • display-device-location-with-nmea-data-sources/src/main
    • show-device-location-using-indoor-positioning/src/main

gradle/libs.versions.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[versions]
22

33
# ArcGIS Maps SDK for Kotlin version
4-
arcgisMapsKotlinVersion = "300.0.0-4918"
4+
arcgisMapsKotlinVersion = "300.0.0-4922"
55

66
### Android versions
77
androidGradlePlugin = "8.13.2"

samples/display-device-location-with-nmea-data-sources/src/main/java/com/esri/arcgismaps/sample/displaydevicelocationwithnmeadatasources/MainActivity.kt

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@ import java.nio.charset.StandardCharsets
4444
import java.util.Timer
4545
import kotlin.concurrent.timerTask
4646

47+
private const val METERS_TO_FEET = 3.28084
48+
4749
class MainActivity : EdgeToEdgeCompatActivity() {
4850

4951
private val provisionPath: String by lazy {
@@ -225,12 +227,15 @@ class MainActivity : EdgeToEdgeCompatActivity() {
225227
private fun collectLocationChanges() = lifecycleScope.launch {
226228
nmeaLocationDataSource.locationChanged.collect { nmeaLocation ->
227229
// convert from meters to foot
228-
val horizontalAccuracy = nmeaLocation.horizontalAccuracy * 3.28084
229-
val verticalAccuracy = nmeaLocation.verticalAccuracy * 3.28084
230-
accuracyTV.text =
231-
getString(R.string.accuracy) + "Horizontal-%.1fft, Vertical-%.1fft".format(
232-
horizontalAccuracy, verticalAccuracy
233-
)
230+
val horizontalAccuracyFeet = nmeaLocation.horizontalAccuracy
231+
.takeIf { it.isFinite() }
232+
?.times(METERS_TO_FEET)
233+
val verticalAccuracyFeet = nmeaLocation.verticalAccuracy
234+
.takeIf { it.isFinite() }
235+
?.times(METERS_TO_FEET)
236+
val horizontalText = horizontalAccuracyFeet?.let { "%.1fft".format(it) } ?: getString(R.string.unavailable)
237+
val verticalText = verticalAccuracyFeet?.let { "%.1fft".format(it) } ?: getString(R.string.unavailable)
238+
accuracyTV.text = getString(R.string.accuracy) + "Horizontal-$horizontalText, Vertical-$verticalText"
234239
}
235240
}
236241

samples/display-device-location-with-nmea-data-sources/src/main/res/values/strings.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,5 @@
55
<string name="satellite_count">Satellite Count: </string>
66
<string name="system">System: </string>
77
<string name="satellite_ids">Satellite IDs: </string>
8+
<string name="unavailable">Unavailable</string>
89
</resources>

samples/show-device-location-using-indoor-positioning/src/main/java/com/esri/arcgismaps/sample/showdevicelocationusingindoorpositioning/MainActivity.kt

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -193,10 +193,13 @@ class MainActivity : EdgeToEdgeCompatActivity() {
193193
val sb = StringBuilder()
194194
sb.append("Floor: $floor, ")
195195
sb.append("Position-source: $positionSource, ")
196-
val accuracy = DecimalFormat(".##").format(
197-
location.horizontalAccuracy
198-
)
199-
sb.append("Horizontal-accuracy: ${accuracy}m, ")
196+
val horizontalAccuracy = location.horizontalAccuracy
197+
val horizontalAccuracyText = if (horizontalAccuracy.isFinite()) {
198+
"${DecimalFormat(".##").format(horizontalAccuracy)}m"
199+
} else {
200+
getString(R.string.unavailable)
201+
}
202+
sb.append("Horizontal-accuracy: $horizontalAccuracyText, ")
200203
sb.append(when (positionSource) {
201204
Location.SourceProperties.Values.POSITION_SOURCE_GNSS -> "Satellite-count: $satelliteCount"
202205
"BLE" -> "Transmitter-count: $transmitterCount"
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
<resources>
22
<string name="show_device_location_using_indoor_positioning_app_name">Show device location using indoor positioning</string>
3+
<string name="unavailable">Unavailable</string>
34
</resources>

0 commit comments

Comments
 (0)