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

Fasáda Geolocation

Odporúčaným vstupným bodom je fasáda Geolocation. Registruje sa automaticky (globálny alias Geolocation) a stojí za ňou GeolocationManager, takže každé volanie nižšie funguje aj na injektovanom manažéri — pozri DI a akcie. Celý rozsah fasády:

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

// Locate
Geolocation::locateIp('8.8.8.8');                  // ?Location
Geolocation::locateRequest();                      // the client IP of the current request
Geolocation::locateAddress('1600 Amphitheatre Pkwy, Mountain View');
Geolocation::locateCoordinates(new Coordinates(48.1486, 17.1077));
Geolocation::locate(GeolocationQuery::forIp('8.8.8.8'));
Geolocation::batch(['8.8.8.8', '1.1.1.1']);        // array<string, ?Location>

// Measure
Geolocation::distanceBetween($from, $to);          // ?Distance — driving by default
Geolocation::distance(DistanceQuery::between($from, $to, DistanceType::Walking));
Geolocation::distanceMatrix([$warehouse], [$a, $b]);   // DistanceMatrix

// Scoped copies — they apply to the call they are chained to, nothing else
Geolocation::provider('ipinfo')->locateIp('8.8.8.8');
Geolocation::using('maxmind_database', 'ipinfo')->locateIp('8.8.8.8');
Geolocation::withToken('ipinfo', 'runtime-token')->locateIp('8.8.8.8');
Geolocation::withTimeout(10)->locateIp('8.8.8.8');

// Maintain
Geolocation::updateDatabase();                     // refresh the MaxMind .mmdb, returns the path
Geolocation::forget(GeolocationQuery::forIp('8.8.8.8'));   // drop one cached result
Geolocation::flushCache();                         // drop every cached lookup and distance
Geolocation::extend('my_provider', fn () => new MyProvider());

Prehľad metód

MetódaVraciaÚčel
locateIp($ip) / locateAddress($address)?LocationNájde polohu IP adresy alebo ulice.
locateCoordinates($coordinates)?LocationSpätné geokódovanie hodnoty Coordinates.
locateRequest(?$request)?LocationIP klienta z aktuálneho (alebo zadaného) requestu; bez IP null.
locate($query)?LocationVyhodnotí ľubovoľný GeolocationQuery.
batch($ips)array<string, ?Location>Viac IP naraz; chyby sa zmenia na null pre danú položku.
distance($query)?DistanceVzdialenosť cesty pre DistanceQuery.
distanceBetween($from, $to, $type)?Distancedistance() bez skladania dotazu; predvolene Driving.
distanceMatrix($origins, $destinations, $type)DistanceMatrixMriežka východísk × cieľov jedným volaním.
updateDatabase(?$edition, ?$path)stringStiahne alebo obnoví .mmdb MaxMind; vráti zapísanú cestu.
forget($query)boolOdstráni jeden výsledok z cache.
flushCache()voidZneplatní všetky výsledky v cache.
provider($name) / using(...$names)GeolocationManagerKópia manažéra, ktorá sa pýta len vybraných poskytovateľov.
withToken($provider, $token)GeolocationManagerKópia manažéra, ktorá pošle token alebo kľúč len danému poskytovateľovi.
withConfig($provider, $overrides)GeolocationManagerKópia manažéra s prepísanou konfiguráciou len pre daného poskytovateľa.
withTimeout($seconds)GeolocationManagerKópia manažéra s týmto HTTP timeoutom pre všetkých poskytovateľov.
extend($name, $factory)GeolocationManagerZaregistruje poskytovateľa ako closure pre pipeline.
fake(array $results = [])GeolocationFakeVymení manažér za zaznamenávajúci fake — pozri Testovanie.

locate(), distance() a distanceBetween() vrátia null, keď dotaz nevyrieši žiadny poskytovateľ, aj keď sú všetci nedostupní. provider(), using() a prepísania with*() vracajú kópiu manažéra s obmedzeným rozsahom: platí presne tak dlho ako reťazec volaní, ku ktorému ju pripojíte, a zdieľaný manažér sa nikdy nezmení. GeolocationManager je navyše Macroable — pozri Nastavenia pre jedno volanie.

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.