Open source
Geolocation for Laravel
composer require roundly-consulting/geolocation-for-laravelPrehľad
Natívna geolokačná vrstva pre Laravel. Určte polohu z IP adresy, poštovej adresy alebo dvojice súradníc — aj vzdialenosť cesty medzi dvoma bodmi — cez zoradenú pipeline poskytovateľov: MaxMind, IP2Location, IPinfo, Google a nastaviteľnú záložnú polohu. Obsahuje natívnu čítačku .mmdb na úplne offline vyhľadávanie IP, pomocníkov na geofencing, Eloquent cast pre súradnice, validačné pravidlo, cache, udalosti a testovací fake. Pod licenciou MIT, postavené na vlastnom HTTP klientovi Laravelu — bez SDK dodávateľov, so závislosťou len na troch malých balíkoch Roundly.
Čo získate
Pipeline poskytovateľov
MaxMind, IP2Location, IPinfo, Google a statická záložná poloha, skúšané v poradí — vyhráva prvá skutočná odpoveď, nedostupné API sa preskočí. Poradie zmeníte v konfigurácii alebo pri volaní.
Natívna čítačka MaxMind
Offline vyhľadávanie IP z lokálneho súboru .mmdb vstavanou binárnou čítačkou a príkaz, ktorý databázu stiahne a aktualizuje.
Vzdialenosti a matice
Vzdialenosť a čas cesty autom či pešo cez Google, celé mriežky východísk × cieľov jedným volaním a offline vzdialenosť podľa Haversina.
Geofencing a Eloquent
Kontrola okruhu, bod v polygóne, azimuty, stredy a ohraničujúce obdĺžniky, plus cast Coordinates a query scope withinRadius().
Tempo, cache a udalosti
Limity požiadaviek pre každého poskytovateľa s adaptívnym Retry-After, voliteľné cachovanie výsledkov a udalosti, na ktoré môžete reagovať.
Fasáda, DI a zaznamenávajúci fake
Volajte fasádu Geolocation alebo injektujte GeolocationManager; Geolocation::fake() zaznamená vyhľadávania, vzdialenosti, aktualizácie aj prácu s cache.
Validácia a nástroje
Validačné pravidlo pre súradnice, makro $request->location() a dva Artisan príkazy — vyhľadanie z terminálu a aktualizácia MaxMind.
Dokumentácia
Inštalácia
Inštalácia cez Composer, voliteľné publikovanie konfigurácie a prvá poloha na jeden riadok — bez migrácií.
Konfigurácia
Všetky konfiguračné kľúče, predvolené hodnoty a env premenné — pipeline, poskytovatelia, timeout, cache, udalosti, záložná poloha a služby.
Fasáda Geolocation
Všetky metódy fasády Geolocation na jednom mieste — poloha, dávky, vzdialenosti a matice, pripnutie a prepísanie, aktualizácia databázy a cache.
DI a akcie
Bez fasády: injektujte GeolocationManager s rovnakým API alebo spúšťajte obnovu MaxMind ako UpdateDatabaseAction z vlastných jobov.
Ako to funguje
Zoradená pipeline pomenovaných poskytovateľov — vyhráva prvá skutočná odpoveď, nedostupné API sa preskočí a voliteľná záložná poloha je posledná možnosť.
Poskytovatelia
Nastavenie IPinfo, IP2Location, Google a záložnej polohy — prístupové údaje, čo ktorý poskytovateľ určí a ktoré polia Location vyplní.
MaxMind
Offline vyhľadávanie IP z lokálneho súboru .mmdb natívnou čítačkou, sťahovanie databázy cez Artisan a webová služba GeoIP2 Precision.
Určenie polohy
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.
Súradnice, dopyty a enumy
Validovaný hodnotový objekt Coordinates, vzdialenosť podľa Haversina, pomenované konštruktory GeolocationQuery a DistanceQuery a oba enumy.
Vzdialenosť a matica
Vzdialenosť a čas cesty autom alebo pešo medzi dvoma bodmi a celá mriežka východísk × cieľov jedným volaním.
Geofencing
Kontrola okruhu, zóny v tvare polygónu, azimuty, stredy a ohraničujúce obdĺžniky na Coordinates — čisté PHP bez volaní API.
Eloquent modely
Ukladajte hodnotový objekt Coordinates na ľubovoľný model cez trait HasLocation alebo CoordinatesCast a hľadajte blízke záznamy cez withinRadius().
Validácia a požiadavky
Overte vstup zemepisnej šírky a dĺžky cez Rule::coordinates() a určte polohu návštevníka makrom $request->location().
Nastavenia pre jedno volanie
Pripnite volanie na konkrétnych poskytovateľov, prepíšte prístupový údaj poskytovateľa či timeout pre jeden reťazec volaní a pridajte vlastné makrá.
Vlastní poskytovatelia
Zapojte vlastný zdroj polohy alebo vzdialenosti do pipeline cez extend() alebo mapu providers, vrátane prepisov a limitov požiadaviek.
Obmedzenie požiadaviek
Spomaľte každého HTTP poskytovateľa podľa vlastného limitu s adaptívnym Retry-After alebo nechajte volanie po prekročení stropu rýchlo zlyhať.
Cachovanie
Cachujte úspešné výsledky locate() a distance() v ľubovoľnom cache store a znížte náklady na API aj latenciu — chyby sa necachujú.
Udalosti
Počúvajte LocationResolved, DistanceResolved a LocationResolutionFailed a vyhľadávania logujte, auditujte alebo na ne reagujte.
Artisan príkazy
Určte polohu priamo z terminálu na overenie prístupových údajov a stiahnite alebo aktualizujte databázu MaxMind.
Výnimky
Všetky typované výnimky balíka a kedy sa vyhadzujú, ako sa preskočia nedostupní poskytovatelia a ako všetko zachytiť na jednom mieste.
Testovanie
Geolocation::fake() zaznamená vyhľadávania, vzdialenosti, obnovy aj prácu s cache s pripravenými výsledkami — alebo nasimulujte HTTP a limiter.
Požiadavky
PHP 8.4+, Laravel 12 alebo 13, ext-zlib a ext-phar a prístupové údaje len k HTTP poskytovateľom, ktorých zapnete.
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 kryptomienOdoslaní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.