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

Vzdialenosť a matica

distance() hľadá v pipeline DistanceProvider — v základe Google — a vráti Distance, alebo null, ak dopyt nikto nevie vyriešiť (nedostupný poskytovateľ sa preskočí):

use RoundlyConsulting\Geolocation\DataTransferObjects\Coordinates;
use RoundlyConsulting\Geolocation\DataTransferObjects\DistanceQuery;
use RoundlyConsulting\Geolocation\Enum\DistanceType;
use RoundlyConsulting\Geolocation\Facades\Geolocation;

$distance = Geolocation::distance(
    DistanceQuery::between(
        from: new Coordinates(48.1482, 17.1067),
        to:   new Coordinates(49.2000, 16.6068),
        type: DistanceType::Driving,
    ),
);

$distance?->humanReadableDistance; // "133 km"
$distance?->distanceInMeters;      // 133000
$distance?->durationInSeconds;     // 5400
// Skip the query object — distanceBetween() builds it for you (driving by default)
$distance = Geolocation::distanceBetween(
    new Coordinates(48.1482, 17.1067),
    new Coordinates(49.2000, 16.6068),
    DistanceType::Walking,
);

Objekt Distance

VlastnosťTypObsah
humanReadableDistancestringVzdialenosť naformátovaná poskytovateľom, napr. „133 km“.
distanceInMetersintVzdialenosť v metroch.
humanReadableDurationstringČas cesty naformátovaný poskytovateľom.
durationInSecondsintČas cesty v sekundách.
typeDistanceTypeWalking alebo Driving.

Spôsob dopravy z formulára

Vďaka validationRule() z DistanceType môžete spôsob dopravy bezpečne prijať z formulára:

$data = $request->validate([
    'mode' => ['required', DistanceType::validationRule()],   // 'in:Walking,Driving'
]);

$distance = Geolocation::distance(DistanceQuery::between(
    from: new Coordinates(48.1482, 17.1067),
    to: new Coordinates(48.1486, 17.1077),
    type: DistanceType::from($data['mode']),
));

$distance?->humanReadableDuration; // e.g. "6 mins"

Matica vzdialeností

Určte mriežku vzdialeností medzi viacerými východiskami a cieľmi jedným volaním Distance Matrix. Nedostupné úseky sa zmenia na null, a keď sa Google nedá dosiahnuť, aj každá bunka:

use RoundlyConsulting\Geolocation\DataTransferObjects\Coordinates;
use RoundlyConsulting\Geolocation\Enum\DistanceType;

$matrix = Geolocation::distanceMatrix(
    origins: [new Coordinates(48.14, 17.10)],
    destinations: [new Coordinates(49.20, 16.60), new Coordinates(50.07, 14.43)],
    type: DistanceType::Driving,   // optional — Driving is the default
);

$matrix->get(0, 1)?->distanceInMeters;   // origin 0 → destination 1, null when that leg is unavailable
$matrix->origins;                        // list<Coordinates>
$matrix->rows;                           // array<int, array<int, Distance|null>>

Maticu počíta pribalený poskytovateľ Google. Ak Google nie je v (zúženej) pipeline alebo požiadavka zlyhá, dostanete prázdnu mriežku, v ktorej každé get() vráti null. Matice sa necachujú a neodosielajú udalosti.

Priamu vzdušnú vzdialenosť bez volania API získate cez Coordinates::distanceTo().

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.