Exemplo n.º 1
0
 /**
  * @param SimpleXMLElement $xml
  * @return Point
  * @throws InvalidGPXException
  */
 public static function fromXML(SimpleXMLElement $xml)
 {
     $attributes = $xml->attributes();
     if (!($latitude = $attributes['lat'])) {
         throw new InvalidGPXException("No latitude specified on point node.");
     }
     if (!($longitude = $attributes['lon'])) {
         throw new InvalidGPXException("No longitude specified on point node.");
     }
     $point = new Point((double) $latitude, (double) $longitude);
     if (!empty($xml->ele)) {
         $point->setElevation((double) $xml->ele[0]);
     }
     if (!empty($xml->time)) {
         $point->setTime(strtotime((string) $xml->time[0]));
     }
     return $point;
 }
Exemplo n.º 2
0
 protected function parseTrackpoint(\SimpleXMLElement $trackpointNode)
 {
     // Skip the point if lat/lng not found
     if (!isset($trackpointNode->Position->LatitudeDegrees) || !isset($trackpointNode->Position->LongitudeDegrees)) {
         return;
     }
     $point = new Point();
     $point->setAltitude((double) $trackpointNode->AltitudeMeters);
     $point->setDistance((double) $trackpointNode->DistanceMeters);
     $point->setLatitude((double) $trackpointNode->Position->LatitudeDegrees);
     $point->setLongitude((double) $trackpointNode->Position->LongitudeDegrees);
     $point->setTime(new \DateTime($trackpointNode->Time));
     if (isset($trackpointNode->HeartRateBpm->Value)) {
         $point->setHeartRate((int) $trackpointNode->HeartRateBpm->Value);
     }
     if (isset($trackpointNode->Extensions->TPX->Speed)) {
         $point->setSpeed($this->convertSpeed((double) $trackpointNode->Extensions->TPX->Speed));
     } else {
         // TODO If no speed is set, we can calculate it from the point before.
     }
     return $point;
 }