NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
Všetky balíky
Geolocation for Laravel

Súradnice, dopyty a enumy

Coordinates je nemenný hodnotový objekt, ktorý pri vytvorení overí rozsah a vypočíta vzdialenosť po hlavnej kružnici:

use RoundlyConsulting\Geolocation\DataTransferObjects\Coordinates;

$here = new Coordinates(48.1486, 17.1077);   // validates lat ∈ [-90,90], lng ∈ [-180,180]
$same = Coordinates::make(48.1486, 17.1077); // static constructor, same validation

$metres = $here->distanceTo(new Coordinates(50.0755, 14.4378)); // Haversine, ≈ 290 km

$here->latitude;    // 48.1486
$here->toArray();   // ['latitude' => 48.1486, 'longitude' => 17.1077]

new Coordinates(91.0, 17.1077); // throws InvalidCoordinatesException

Dopyty

GeolocationQuery má forIp(), forAddress() a forCoordinates(); DistanceQuery má between() s predvoleným spôsobom dopravy Driving:

use RoundlyConsulting\Geolocation\DataTransferObjects\DistanceQuery;
use RoundlyConsulting\Geolocation\DataTransferObjects\GeolocationQuery;
use RoundlyConsulting\Geolocation\Enum\DistanceType;

$query = GeolocationQuery::forCoordinates($here);
$query->coordinates();   // ?Coordinates — null for IP and address queries
$query->ipAddress;       // ?string
$query->address;         // ?string

$trip = DistanceQuery::between(from: $here, to: $there, type: DistanceType::Walking);
$trip->from();           // Coordinates
$trip->to();             // Coordinates

// Positional constructors work too:
new GeolocationQuery('203.0.113.7');
new DistanceQuery(48.1, 17.1, 50.0, 14.4, DistanceType::Driving);

Enumy

DistanceType (Walking, Driving) a GeolocationType (Default, IP, Geolocation) sú enumy s reťazcovými hodnotami a používajú trait Helpers z enums-for-laravel, takže values(), labels(), options() / toOptions(), validationRule(), tryFromName(), is() / isIn() a stráže when* dostanete zadarmo:

use RoundlyConsulting\Geolocation\Enum\DistanceType;
use RoundlyConsulting\Geolocation\Enum\GeolocationType;

DistanceType::values()->all();        // ['Walking', 'Driving']
DistanceType::validationRule();       // 'in:Walking,Driving'
DistanceType::toOptions()->all();     // ['Walking' => 'Walking', 'Driving' => 'Driving'] — ready for <select>
DistanceType::tryFromName('Driving'); // DistanceType::Driving

GeolocationType::values()->all();     // ['Default', 'IP', 'Geolocation']
GeolocationType::Ip->value;           // 'IP' (wire value is preserved)
GeolocationType::Ip->readable();      // 'IP'

Prejavte lásku k open source

Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.

Ďalšie spôsoby podpory vrátane kryptomien

Odoslaním daru súhlasíte s našimi podmienkami prijímania darov.

Chcete to zabudovať do svojho produktu?

Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.