/** * Correct elevation data * * This method does directly update the route object. * * @param string $strategyName * @return boolean false if correction did not work */ public function tryToCorrectElevation($strategyName = '') { if (!$this->Route->hasPositionData()) { return false; } if ($strategyName == 'none') { $this->removeElevationCorrection(); return true; } $coordinates = $this->Route->latitudesAndLongitudesFromGeohash(); $Corrector = new Corrector(); $Corrector->correctElevation($coordinates['lat'], $coordinates['lng'], $strategyName); $result = $Corrector->getCorrectedElevation(); if (!empty($result)) { $this->Route->set(Route\Entity::ELEVATIONS_CORRECTED, $result); $this->Route->set(Route\Entity::ELEVATIONS_SOURCE, $Corrector->getNameOfUsedStrategy()); return true; } return false; }
/** * Construct new route * @param string $id * @param \Runalyze\Model\Route\Entity $route * @param \Runalyze\Model\Trackdata\Entity $trackdata [optional] * @param bool $addIconsAndInfo [optional] * @throws \InvalidArgumentException */ public function __construct($id, Route\Entity $route, Trackdata\Entity $trackdata = null, $addIconsAndInfo = true) { parent::__construct($id); if (!$route->hasPositionData()) { throw new \InvalidArgumentException('Route needs position data.'); } $this->Route = $route; $this->Trackdata = $trackdata; $this->addIconsAndInfo = $addIconsAndInfo; $this->addOption('options', array('color' => Configuration::ActivityView()->RouteColor())); $this->createRoute(); }