Skip to content

Commit d9566a5

Browse files
committed
Correct min/max elevation over multiple track segments (#38)
1 parent 5959a36 commit d9566a5

File tree

1 file changed

+25
-17
lines changed

1 file changed

+25
-17
lines changed

app/src/main/java/org/nitri/opentopo/GpxDetailFragment.kt

Lines changed: 25 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -152,30 +152,38 @@ class GpxDetailFragment : Fragment(), WayPointListAdapter.OnItemClickListener,
152152
totalDistance = 0.0
153153
hasElevationData = false
154154
var prevTrackPoint: TrackPoint? = null
155+
156+
minElevation = Double.MAX_VALUE
157+
maxElevation = Double.MIN_VALUE
158+
155159
track.trackSegments?.forEach { segment ->
156-
segment.trackPoints?.let { points ->
157-
maxElevation = points.first().elevation ?: 0.0
158-
minElevation = maxElevation
159-
points.forEach { trackPoint ->
160-
prevTrackPoint?.let { prevPoint ->
161-
totalDistance += DistanceCalculator.distance(prevPoint, trackPoint)
162-
}
163-
val builder = DistancePoint.Builder()
164-
builder.setDistance(totalDistance)
165-
trackPoint.elevation?.also { elevation ->
166-
if (elevation < minElevation) minElevation = elevation
167-
if (elevation > maxElevation) maxElevation = elevation
168-
builder.setElevation(elevation)
169-
hasElevationData = true
170-
trackDistancePoints.add(builder.build())
171-
}
172-
prevTrackPoint = trackPoint
160+
segment.trackPoints?.forEach { trackPoint ->
161+
prevTrackPoint?.let { prevPoint ->
162+
totalDistance += DistanceCalculator.distance(prevPoint, trackPoint)
163+
}
164+
165+
val builder = DistancePoint.Builder()
166+
.setDistance(totalDistance)
167+
168+
trackPoint.elevation?.also { elevation ->
169+
if (elevation < minElevation) minElevation = elevation
170+
if (elevation > maxElevation) maxElevation = elevation
171+
builder.setElevation(elevation)
172+
hasElevationData = true
173173
}
174+
175+
trackDistancePoints.add(builder.build())
176+
prevTrackPoint = trackPoint
174177
}
175178
}
176179

180+
if (!hasElevationData) {
181+
minElevation = 0.0
182+
maxElevation = 0.0
183+
}
177184
}
178185

186+
179187
private fun buildWayPointList() {
180188
val defaultType = getString(R.string.poi)
181189
var wayPoints: MutableList<WayPoint?>

0 commit comments

Comments
 (0)