/** * Calculate distance */ private function setDistanceFromGPSdata() { if (!empty($this->gps['latitude']) && !empty($this->gps['longitude']) && empty($this->gps['km'])) { $num = count($this->gps['latitude']); $this->gps['km'] = array(0); $lastDistance = 0; for ($i = 1; $i < $num; ++$i) { $step = round(Runalyze\Model\Route\Object::gpsDistance($this->gps['latitude'][$i - 1], $this->gps['longitude'][$i - 1], $this->gps['latitude'][$i], $this->gps['longitude'][$i]), ParserAbstract::DISTANCE_PRECISION); $this->gps['km'][] = $lastDistance + $step; $lastDistance += $step; } $this->TrainingObject->setArrayDistance($this->gps['km']); $this->TrainingObject->setDistance(end($this->gps['km'])); } }
/** * Set values like distance, duration, etc. from gps data if they are empty */ private function setValuesFromArraysIfEmpty() { if (!$this->TrainingObject->hasDistance()) { if ($this->TrainingObject->hasArrayDistance()) { $this->TrainingObject->setDistance($this->TrainingObject->getArrayDistanceLastPoint()); } elseif (!$this->TrainingObject->Splits()->areEmpty()) { $this->TrainingObject->setDistance($this->TrainingObject->Splits()->totalDistance()); } } if ($this->TrainingObject->getTimeInSeconds() == 0) { if ($this->TrainingObject->hasArrayTime()) { $this->TrainingObject->setTimeInSeconds($this->TrainingObject->getArrayTimeLastPoint()); } elseif (!$this->TrainingObject->Splits()->areEmpty()) { $this->TrainingObject->setTimeInSeconds($this->TrainingObject->Splits()->totalTime()); } } if ($this->TrainingObject->getPulseAvg() == 0 && $this->TrainingObject->getPulseMax() == 0) { $this->setAvgAndMaxHeartrateFromArray(); } $this->setAvgCadenceFromArray(); $this->setAvgPowerFromArray(); $this->setTemperatureFromArray(); $this->setRunningDynamicsFromArray(); }