/** * Add track to xml */ protected function setTrack() { $Starttime = $this->Context->activity()->timestamp(); $Trackdata = new Trackdata\Loop($this->Context->trackdata()); $Route = new Route\Loop($this->Context->route()); $hasElevation = $this->Context->route()->hasOriginalElevations(); $hasHeartrate = $this->Context->trackdata()->has(Trackdata\Object::HEARTRATE); while ($Trackdata->nextStep()) { $Route->nextStep(); $Trackpoint = $this->Track->addChild('trkpt'); $Trackpoint->addAttribute('lat', $Route->latitude()); $Trackpoint->addAttribute('lon', $Route->longitude()); $Trackpoint->addChild('time', $this->timeToString($Starttime + $Trackdata->time())); if ($hasElevation) { $Trackpoint->addChild('ele', $Route->current(Route\Object::ELEVATIONS_ORIGINAL)); } if ($hasHeartrate) { $ext = $Trackpoint->addChild('extensions'); $tpe = $ext->addChild('gpxtpx:TrackPointExtension', '', 'http://www.garmin.com/xmlschemas/TrackPointExtension/v1'); $tpe->addChild('gpxtpx:hr', $Trackdata->current(Trackdata\Object::HEARTRATE)); } } }
/** * @param \SimpleXMLElement $trackpoint * @param \Runalyze\Model\Trackdata\Loop $trackdataLoop */ protected function addTrackdataDetailsTo(\SimpleXMLElement $trackpoint, Trackdata\Loop $trackdataLoop) { if ($this->TrackdataHas[Trackdata\Entity::CADENCE]) { $trackpoint->addChild('Cadence', $trackdataLoop->current(Trackdata\Entity::CADENCE)); } if ($this->TrackdataHas[Trackdata\Entity::DISTANCE]) { $trackpoint->addChild('DistanceMeters', 1000 * $trackdataLoop->distance()); } if ($this->TrackdataHas[Trackdata\Entity::HEARTRATE]) { $trackpoint->addChild('HeartRateBpm')->addChild('Value', $trackdataLoop->current(Trackdata\Entity::HEARTRATE)); } if ($this->TrackdataHas[Trackdata\Entity::POWER] || $this->TrackdataHas[Trackdata\Entity::PACE]) { $TPX = $trackpoint->addChild('Extensions')->addChild('TPX', '', 'http://www.garmin.com/xmlschemas/ActivityExtension/v2'); if ($this->TrackdataHas[Trackdata\Entity::PACE]) { $TPX->addChild('Speed', $this->convertPaceToSpeed($trackdataLoop->current(Trackdata\Entity::PACE))); } if ($this->TrackdataHas[Trackdata\Entity::POWER]) { $TPX->addChild('Watts', $trackdataLoop->current(Trackdata\Entity::POWER)); } } }
/** * Add track to xml */ protected function setTrack() { if (!$this->Context->hasTrackdata()) { return; } $Starttime = $this->Context->activity()->timestamp(); $Trackdata = new Trackdata\Loop($this->Context->trackdata()); $Route = $this->Context->hasRoute() && $this->Context->route()->hasPositionData() ? new Route\Loop($this->Context->route()) : null; $hasHeartrate = $this->Context->trackdata()->has(Trackdata\Entity::HEARTRATE); $Track = $this->Activity->addChild('Track'); $Track->addAttribute('StartTime', $this->timeToString($Starttime)); do { $Point = $Track->addChild('pt'); $Point->addAttribute('tm', $Trackdata->time()); if (null !== $Route) { $Point->addAttribute('lat', $Route->latitude()); $Point->addAttribute('lon', $Route->longitude()); $Point->addAttribute('ele', $Route->current(Route\Entity::ELEVATIONS_ORIGINAL)); $Route->nextStep(); } if ($hasHeartrate) { $Point->addAttribute('hr', $Trackdata->current(Trackdata\Entity::HEARTRATE)); } } while ($Trackdata->nextStep()); }
/** * Add track to all laps to xml */ protected function setTrack() { $Starttime = $this->Context->activity()->timestamp(); $Trackdata = new Trackdata\Loop($this->Context->trackdata()); $Route = new Route\Loop($this->Context->route()); $hasElevation = $this->Context->route()->hasOriginalElevations(); $hasHeartrate = $this->Context->trackdata()->has(Trackdata\Object::HEARTRATE); while ($Trackdata->nextStep()) { $Route->nextStep(); if ($this->Activity->Lap[(int) floor($Trackdata->distance())]) { $Trackpoint = $this->Activity->Lap[(int) floor($Trackdata->distance())]->Track->addChild('Trackpoint'); $Trackpoint->addChild('Time', $this->timeToString($Starttime + $Trackdata->time())); $Position = $Trackpoint->addChild('Position'); $Position->addChild('LatitudeDegrees', $Route->latitude()); $Position->addChild('LongitudeDegrees', $Route->longitude()); if ($hasElevation) { $Trackpoint->addChild('AltitudeMeters', $Route->current(Route\Object::ELEVATIONS_ORIGINAL)); } $Trackpoint->addChild('DistanceMeters', 1000 * $Trackdata->distance()); if ($hasHeartrate) { $Heartrate = $Trackpoint->addChild('HeartRateBpm'); $Heartrate->addChild('Value', $Trackdata->current(Trackdata\Object::HEARTRATE)); } } } }