---
title: "Určenie polohy — Geolocation for Laravel | Roundly"
description: "Určte Location z IP, aktuálnej požiadavky, adresy alebo súradníc — plus objekt Location, výstup v JSON a hromadné vyhľadávanie."
url: https://roundly-consulting.com/sk/open-source/navody/geolocation-for-laravel/urcenie-polohy
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)

# Určenie polohy

Použite fasádu Geolocation — každá jej metóda je dostupná aj na injektovanom GeolocationManager. Bežné prípady pokrývajú jednoriadkové pomocné metódy:

```php
use RoundlyConsulting\Geolocation\DataTransferObjects\Coordinates;
use RoundlyConsulting\Geolocation\Facades\Geolocation;

$location = Geolocation::locateIp('8.8.8.8');
$location = Geolocation::locateRequest();                              // auto-detects the client IP

$location?->city;           // "Mountain View"
$location?->region;         // "California"
$location?->postalCode;     // "94043"
$location?->countryIsoCode; // "US"
$location?->timezone;       // "America/Los_Angeles" (IP providers only)
$location?->latitude;       // 37.4056

$location = Geolocation::locateAddress('1600 Amphitheatre Pkwy, Mountain View');

$location?->city;           // "Mountain View"
$location?->timezone;       // "" (Google geocoding returns no timezone)
$location?->latitude;       // 37.4224

$location = Geolocation::locateCoordinates(new Coordinates(48.1486, 17.1077));   // reverse geocoding
```

locateRequest() prečíta IP z aktuálnej požiadavky (alebo z tej, ktorú odovzdáte) a ak žiadna nie je, vráti null. Za load balancerom nastavte v Laraveli dôveryhodné proxy, aby IP požiadavky patrila návštevníkovi, nie proxy.

Každá pomocná metóda vráti null, keď neodpovie žiadny poskytovateľ. Location, ktorú dostanete, vždy niečo určuje — prázdna odpoveď ($location->isEmpty(): bez časti adresy, bez krajiny, súradnice 0,0) sa berie ako minutie —, hoci hrubej zhode podľa IP môže chýbať mesto alebo krajina.

## Pomenované dopyty

Každá pomocná metóda zostaví GeolocationQuery a zavolá locate(). Ak už dopyt máte, zostavte ho sami:

```php
use RoundlyConsulting\Geolocation\DataTransferObjects\Coordinates;
use RoundlyConsulting\Geolocation\DataTransferObjects\GeolocationQuery;
use RoundlyConsulting\Geolocation\Facades\Geolocation;

Geolocation::locate(GeolocationQuery::forIp('203.0.113.7'));
Geolocation::locate(GeolocationQuery::forAddress('Main Street 1, Springfield'));
Geolocation::locate(GeolocationQuery::forCoordinates(new Coordinates(48.1486, 17.1077)));
```

## Dependency injection

Každý pomocník funguje rovnako aj na injektovanom GeolocationManager — typujte ho všade, kde Laravel rieši závislosti (pozri DI a akcie):

```php
use Illuminate\Http\Request;
use RoundlyConsulting\Geolocation\GeolocationManager;

final class CheckoutController
{
    public function show(Request $request, GeolocationManager $geolocation)
    {
        $country = $geolocation->locateRequest($request)?->countryIsoCode;

        // ...
    }
}
```

## Objekt Location

| Vlastnosť | Typ | Obsah |
| --- | --- | --- |
| `humanReadable` | `string` | Zobrazovaný popis, napr. naformátovaná adresa alebo „Mesto, Región Krajina“. |
| `street` | `string` | Ulica — vypĺňa len Google; pri IP poskytovateľoch prázdna. |
| `city` | `string` | Názov mesta. |
| `region` | `string` | Región / štát; predvolene ''. |
| `postalCode` | `string` | PSČ; predvolene ''. |
| `countryIsoCode` | `string` | ISO kód krajiny, napr. US. |
| `latitude` | `float` | Zemepisná šírka. |
| `longitude` | `float` | Zemepisná dĺžka. |
| `timezone` | `string` | Časové pásmo IANA, napr. America/Los\_Angeles — vypĺňajú ho len IP poskytovatelia; predvolene ''. |
| `type` | `GeolocationType` | Ip, Geolocation (Google) alebo Default (záložná poloha). |

Location aj Distance implementujú Arrayable a JsonSerializable, takže ich môžete vrátiť priamo z controllera:

```php
return response()->json($location);   // Location is Arrayable + JsonSerializable

$location->toArray();
// ['humanReadable' => ..., 'street' => ..., 'city' => ..., 'region' => ..., 'postalCode' => ...,
//  'countryIsoCode' => ..., 'latitude' => ..., 'longitude' => ..., 'timezone' => ..., 'type' => 'IP']

$location->coordinates();   // a Coordinates value object
```

## Hromadné vyhľadávanie

Určte naraz polohu mnohých IP. Výsledok je indexovaný podľa IP a chyby sú izolované — akákoľvek výnimka pri jednej IP sa pre ňu zmení na null a dávka pokračuje. Rozsah alebo prepis pripojený pred batch() platí pre každú IP:

```php
$results = Geolocation::batch(['8.8.8.8', '1.1.1.1', '203.0.113.7']);

$results['8.8.8.8']?->city;   // a Location or null per IP

foreach ($results as $ip => $location) {
    // $location is null when that one lookup failed — the batch never aborts
}

// A scope or override chained before batch() applies to every IP
Geolocation::using('maxmind_database', 'ipinfo')->batch($ips);
```

Každá položka prejde bežnou pipeline, cache aj udalosťami. HTTP poskytovatelia dávku automaticky spomalia podľa svojho limitu požiadaviek.

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