---
title: "Vzdialenosť a matica — Geolocation for Laravel | Roundly"
description: "Vzdialenosť a čas cesty autom alebo pešo medzi dvoma bodmi a celá mriežka východísk × cieľov jedným volaním."
url: https://roundly-consulting.com/sk/open-source/navody/geolocation-for-laravel/vzdialenost
language: sk
---

[Všetky balíky](https://roundly-consulting.com/sk/open-source.md)

[Geolocation for Laravel](https://roundly-consulting.com/sk/open-source/navody/geolocation-for-laravel.md)

# Vzdialenosť a matica

distance() hľadá v pipeline DistanceProvider — v základe Routes API od Google — a vráti Distance, alebo null, ak dopyt nikto nevie vyriešiť (nedostupný alebo odmietajúci poskytovateľ sa preskočí a DistanceResolutionFailed uvedie dôvod):

```php
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
```

```php
// 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ť | Typ | Obsah |
| --- | --- | --- |
| `humanReadableDistance` | `string` | Vzdialenosť naformátovaná poskytovateľom, napr. „133 km“. |
| `distanceInMeters` | `int` | Vzdialenosť v metroch. |
| `humanReadableDuration` | `string` | Čas cesty naformátovaný poskytovateľom. |
| `durationInSeconds` | `int` | Čas cesty v sekundách. |
| `type` | `DistanceType` | Walking alebo Driving. |

## Spôsob dopravy z formulára

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

```php
$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, cez computeRouteMatrix z Routes API. Úsek bez trasy sa zmení na null, rovnako ako každá bunka požiadavky, ktorú Google nevybaví (je nedostupný alebo ju odmietne):

```php
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. Mriežku nad limit Routes API 625 prvkov (východiská × ciele) rozdelí na požiadavky, ktoré sa doň zmestia, a bunky poskladá späť v pôvodnom poradí; neúspešná požiadavka zmení na null len svoje bunky. Ak Google nie je v (zúženej) pipeline alebo zlyhajú všetky požiadavky, 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](https://roundly-consulting.com/sk/podporte-nas.md)

Odoslaním daru súhlasíte s našimi [podmienkami prijímania darov](https://roundly-consulting.com/sk/podmienky-darov.md).

[Podporte našu open-source prácu (otvorí sa v novej karte)](https://donate.stripe.com/dRmeVe8FX5PF1Qd9pXcEw00) [Pridajte sa k nám na Patreone (otvorí sa v novej karte)](https://www.patreon.com/cw/roundly)

## 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.

[Ponuka do 48 hodín](https://roundly-consulting.com/sk/kontakt.md) [Prezrieť všetky balíky](https://roundly-consulting.com/sk/open-source/navody/geolocation-for-laravel.md)
