Skip to content

Commit 6561d1c

Browse files
committed
Merge remote branch “origin/master”
2 parents 3232b4b + 78aad06 commit 6561d1c

File tree

1 file changed

+26
-11
lines changed

1 file changed

+26
-11
lines changed

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

Lines changed: 26 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import com.github.mikephil.charting.data.Entry
2828
import com.github.mikephil.charting.data.LineData
2929
import com.github.mikephil.charting.data.LineDataSet
3030
import com.github.mikephil.charting.formatter.IAxisValueFormatter
31+
import com.github.mikephil.charting.interfaces.datasets.ILineDataSet
3132
import io.ticofab.androidgpxparser.parser.domain.Gpx
3233
import io.ticofab.androidgpxparser.parser.domain.Track
3334
import io.ticofab.androidgpxparser.parser.domain.TrackPoint
@@ -157,6 +158,10 @@ class GpxDetailFragment : Fragment(), WayPointListAdapter.OnItemClickListener,
157158
maxElevation = Double.MIN_VALUE
158159

159160
track.trackSegments?.forEach { segment ->
161+
if (trackDistancePoints.isNotEmpty()) {
162+
trackDistancePoints.add(DistancePoint.Builder().build())
163+
}
164+
prevTrackPoint = null
160165
segment.trackPoints?.forEach { trackPoint ->
161166
prevTrackPoint?.let { prevPoint ->
162167
totalDistance += DistanceCalculator.distance(prevPoint, trackPoint)
@@ -256,25 +261,35 @@ class GpxDetailFragment : Fragment(), WayPointListAdapter.OnItemClickListener,
256261
}
257262

258263
private fun setChartData() {
259-
val elevationValues = ArrayList<Entry>()
264+
val elevationDataSets = ArrayList<ILineDataSet>()
265+
var elevationValues = ArrayList<Entry>()
260266
for (point in trackDistancePoints) {
261-
if (point.distance != null && point.elevation != null) elevationValues.add(
262-
Entry(
263-
point.distance.toFloat(),
264-
point.elevation.toFloat()
265-
)
266-
)
267+
val distance = point.distance
268+
val elevation = point.elevation
269+
if (distance != null && elevation != null) {
270+
elevationValues.add(Entry(distance.toFloat(), elevation.toFloat()))
271+
} else if (elevationValues.isNotEmpty()) {
272+
elevationDataSets.add(createElevationDataSet(elevationValues))
273+
elevationValues = ArrayList()
274+
}
275+
}
276+
if (elevationValues.isNotEmpty()) {
277+
elevationDataSets.add(createElevationDataSet(elevationValues))
267278
}
268-
val elevationDataSet = LineDataSet(elevationValues, getString(R.string.elevation))
279+
val elevationData = LineData(elevationDataSets)
280+
elevationChart.data = elevationData
281+
elevationChart.invalidate()
282+
}
283+
284+
private fun createElevationDataSet(entries: List<Entry>): LineDataSet {
285+
val elevationDataSet = LineDataSet(entries, getString(R.string.elevation))
269286
elevationDataSet.setDrawValues(false)
270287
elevationDataSet.lineWidth = 2f
271288
elevationDataSet.mode = LineDataSet.Mode.CUBIC_BEZIER
272289
elevationDataSet.color = ResourcesCompat.getColor(resources, R.color.colorPrimary, null)
273290
elevationDataSet.setDrawCircles(false)
274291
elevationDataSet.axisDependency = YAxis.AxisDependency.LEFT
275-
val elevationData = LineData(elevationDataSet)
276-
elevationChart.data = elevationData
277-
elevationChart.invalidate()
292+
return elevationDataSet
278293
}
279294

280295
override fun onItemClick(index: Int) {

0 commit comments

Comments
 (0)