private void ShowElevationOnChart(Collection <Feature> features) { ChartAxisLabels.Clear(); ChartData.Clear(); double distance = 0.0; int index = 0; PointShape lastPoint = new PointShape(); foreach (var feature in features) { PointShape point = new PointShape(feature.ColumnValues["point"]); if (index++ != 0) { LineShape line = new LineShape(new Collection <Vertex> { new Vertex(lastPoint), new Vertex(point) }); distance += line.GetAccurateLength(4326, DistanceUnit.Meter, DistanceCalculationMode.Haversine); } double tmpDistance = Math.Round(distance / 1000.0, 2); double value = Math.Round(double.Parse(feature.ColumnValues["elevation"]), 2); ChartAxisLabels.Add(tmpDistance); ChartData.Add(new ChartInformation(value, point.X, point.Y, tmpDistance)); lastPoint = point; } var mapper = Mappers.Xy <ChartInformation>().X(value => value.Distance).Y(value => value.Elevation); Charting.For <ChartInformation>(mapper); DataContext = this; }