Esempio n. 1
0
 /**
  * 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();
 }