abduns/laravel-gpx-reader

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

Maintainers

Package info

github.com/abduns/laravel-gpx-reader

pkg:composer/abduns/laravel-gpx-reader

Statistics

Installs: 33

Dependents: 0

Suggesters: 0

Stars: 1

Open Issues: 0

v2.0.4 2026-05-17 12:32 UTC

This package is auto-updated.

Last update: 2026-05-17 12:37:52 UTC


README

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