<?php 
/** 
 * @author            Jakub Dubec <[email protected]> 
 */ 
 
use phpGPX\Models\GpxFile; 
use phpGPX\Models\Link; 
use phpGPX\Models\Metadata; 
use phpGPX\Models\Point; 
use phpGPX\Models\Segment; 
use phpGPX\Models\Track; 
 
require_once '../vendor/autoload.php'; 
 
$sample_data = [ 
    [ 
        'longitude' => 9.860624216140083, 
        'latitude' => 54.9328621088893, 
        'elevation' => 0, 
        'time' => new \DateTime("+ 1 MINUTE") 
    ], 
    [ 
        'latitude' => 54.83293237320851, 
        'longitude' => 9.76092208681491, 
        'elevation' => 10.0, 
        'time' => new \DateTime("+ 2 MINUTE") 
    ], 
    [ 
        'latitude' => 54.73327743521187, 
        'longitude' => 9.66187816543752, 
        'elevation' => 42.42, 
        'time' => new \DateTime("+ 3 MINUTE") 
    ], 
    [ 
        'latitude' => 54.63342326167919, 
        'longitude' => 9.562439849679859, 
        'elevation' => 12, 
        'time' => new \DateTime("+ 4 MINUTE") 
    ] 
]; 
 
// Creating sample link object for metadata 
$link                             = new Link(); 
$link->href                     = "https://sibyx.github.io/phpgpx"; 
$link->text                     = 'phpGPX Docs'; 
 
// GpxFile contains data and handles serialization of objects 
$gpx_file                         = new GpxFile(); 
 
// Creating sample Metadata object 
$gpx_file->metadata             = new Metadata(); 
 
// Time attribute is always \DateTime object! 
$gpx_file->metadata->time         = new \DateTime(); 
 
// Description of GPX file 
$gpx_file->metadata->description = "My pretty awesome GPX file, created using phpGPX library!"; 
 
// Adding link created before to links array of metadata 
// Metadata of GPX file can contain more than one link 
$gpx_file->metadata->links[]     = $link; 
 
// Creating track 
$track                             = new Track(); 
 
// Name of track 
$track->name                     = sprintf("Some random points in logical order. Input array should be already ordered!"); 
 
// Type of data stored in track 
$track->type                     = 'RUN'; 
 
// Source of GPS coordinates 
$track->source                     = sprintf("MySpecificGarminDevice"); 
 
$wp = []; 
foreach ($sample_data as $sample_point) { 
    // Creating trackpoint 
    $point                         = new Point(Point::WAYPOINT); 
    $point->latitude             = $sample_point['latitude']; 
    $point->longitude             = $sample_point['longitude']; 
    $point->elevation             = $sample_point['elevation']; 
    $point->time                 = $sample_point['time']; 
 
    $wp[]             = $point; 
} 
 
$gpx_file->waypoints = $wp; 
 
// // Add segment to segment array of track 
// $track->segments[]                 = $segment; 
 
// // Add track to file 
// $gpx_file->tracks[]             = $track; 
 
// GPX output 
$gpx_file->save('waypoint_test.gpx', \phpGPX\phpGPX::XML_FORMAT); 
 
 |