Looking to hire Laravel developers? Try LaraJobs

laravel-gpx-reader maintained by abduns

Description
A Laravel package to read and work with GPX 1.1 files.
Author
Last update
2026/05/17 14:37 (dev-main)
License
Links
Downloads
36

Comments
comments powered by Disqus

laravel-gpx-reader

A Laravel package to read and work with GPX 1.1 files.

Tests Version Downloads License


Features

  • Modern PHP support
  • GPX 1.1 Support
  • No External Dependencies
  • Laravel Integration
  • Type-Safe DTOs
  • Validation with strict mode

Installation

composer require abduns/laravel-gpx-reader

Quick Start

use Dunn\GpxReader\Facades\Gpx;

// From file
$gpx = Gpx::parseFromFile('path/to/file.gpx');

echo $gpx->creator;

Why This Package?

  • Existing solutions are outdated
  • Missing modern PHP features
  • Poor developer experience
  • No standards compliance
  • Too framework-coupled

This package focuses on simplicity, interoperability, and modern developer ergonomics.


Usage

Basic Usage

use Dunn\GpxReader\Facades\Gpx;

// From file
$gpx = Gpx::parseFromFile('path/to/file.gpx');

// From string
$gpx = Gpx::parseFromString($xmlString);

Advanced Usage

// Access metadata
echo $gpx->creator;
echo $gpx->version;
if ($gpx->metadata) {
    echo $gpx->metadata->name;
    echo $gpx->metadata->desc;
    echo $gpx->metadata->time?->format('Y-m-d H:i:s');
}

// Access Waypoints
foreach ($gpx->waypoints as $waypoint) {
    echo "Waypoint: {$waypoint->name} ({$waypoint->latitude}, {$waypoint->longitude})";
    echo " - Elevation: {$waypoint->elevation}"; // Access elevation
}

// Access Routes
foreach ($gpx->routes as $route) {
    echo "Route: {$route->name}";
    foreach ($route->points as $point) {
        echo " - Point: {$point->latitude}, {$point->longitude}";
        echo " - Elevation: {$point->elevation}"; // Access elevation
    }
}

// Access Tracks
foreach ($gpx->tracks as $track) {
    echo "Track: {$track->name}";
    foreach ($track->segments as $segment) {
        foreach ($segment->points as $point) {
            echo " - Point: {$point->latitude}, {$point->longitude}";
            echo " - Elevation: {$point->elevation}"; // Access elevation
        }
    }
}

Configuration

You can publish the config file with:

php artisan vendor:publish --tag="gpx-config"
return [
    'strict_mode' => true, // Throw exceptions for invalid GPX structure
    'timezone' => 'UTC',
];

Standards / Specifications

  • GPX 1.1 Schema

References:


Supported Features

Feature Support
GPX 1.1 parsing
Track / Route / Waypoint
Type-safe DTOs

Compatibility

Platform Supported
PHP 8.2+
Laravel 11.0+

Design Goals

  • Developer experience first
  • Predictable APIs
  • Minimal dependencies
  • Strong typing
  • Extensibility
  • Interoperability

Architecture

  • Facade for ease of use
  • DTOs for parsed GPX elements
  • Native XML parsing

Performance

Operation Time
Parse typical GPX < 10ms

Testing

composer test

Roadmap

  • Add GPX generation/writing
  • Support older GPX 1.0 schema

Contributing

Contributions, issues, and discussions are welcome.


Security

If you discover security issues, please report them responsibly.


License

MIT