private IList <GPSPointViewModel> processGPSPoints(IList <GPSPoint> points) { var viewModels = new List <GPSPointViewModel>(); decimal distance = 0; GPSPoint previousPoint = null; for (int index = 0; index < points.Count; index++) { var gpsPoint = points[index]; if (gpsPoint.IsPause()) { previousPoint = null; } if (gpsPoint.IsPoint() && previousPoint != null) { var coordinate1 = previousPoint.ToCoordinates(); var coordinate2 = gpsPoint.ToCoordinates(); distance += (decimal)coordinate2.GetDistanceTo(coordinate1); } GPSPointViewModel pointViewModel = new GPSPointViewModel(gpsPoint); pointViewModel.Distance = distance; viewModels.Add(pointViewModel); if (gpsPoint.IsPoint()) { previousPoint = gpsPoint; } } return(viewModels); }