Geokódovanie
Spätné geokódovanie
geocode() vracia pre súradnicu kolekciu ReverseGeocodingResult. Odpoveď ZERO_RESULTS znamená prázdnu kolekciu, nie výnimku:
use RoundlyConsulting\GooglePlaces\DataTransferObjects\Location;
use RoundlyConsulting\GooglePlaces\Facades\GooglePlaces;
$results = GooglePlaces::geocode(48.1486, 17.1077); // lat/lng shorthand
// or GooglePlaces::geocode(new Location(48.1486, 17.1077));
// or GooglePlaces::geocode(new ReverseGeocodingQuery(...));
$result = $results->first();
echo $result->address;
echo $result->placeId;
foreach ($result->components as $component) {
echo "{$component->longName} ({$component->shortName})";
}Cez ReverseGeocodingQuery filtrujete typy výsledkov a lokácií alebo si vyžiadate lokalizovanú odpoveď:
use RoundlyConsulting\GooglePlaces\DataTransferObjects\Location;
use RoundlyConsulting\GooglePlaces\DataTransferObjects\ReverseGeocodingQuery;
$results = GooglePlaces::geocode(new ReverseGeocodingQuery(
location: new Location(48.1486, 17.1077),
resultTypes: ['street_address'], // sent as result_type
locationTypes: ['ROOFTOP'], // sent as location_type
language: 'sk',
));
$result = $results->first();
$result->geometry->location; // Location
$result->geometry->viewportNorthEast; // Location
$result->geometry->viewportSouthWest; // Location
$result->types; // list<string>Priame geokódovanie
geocodeAddress() prevedie adresu na kolekciu výsledkov — každý so súradnicami, place id, typmi a komponentmi. GeocodingQuery pridáva inLanguage(), inRegion() a filtre komponentov cez filterBy():
use RoundlyConsulting\GooglePlaces\DataTransferObjects\GeocodingQuery;
use RoundlyConsulting\GooglePlaces\Facades\GooglePlaces;
$results = GooglePlaces::geocodeAddress('1600 Amphitheatre Pkwy');
$first = $results->first();
echo $first->placeId;
echo $first->geometry->location->latitude;
// Full query with region + component filters:
$results = GooglePlaces::geocodeAddress(
(new GeocodingQuery('Parliament'))->inRegion('sk')->filterBy('country:SK'),
);Typované komponenty adresy
Výsledky geokódovania aj miesta sprístupňujú cez components() typované metódy nad surovými komponentmi adresy:
$components = GooglePlaces::geocodeAddress('1600 Amphitheatre Pkwy')->first()->components();
echo $components->streetNumber(); // "1600"
echo $components->street(); // "Amphitheatre Parkway"
echo $components->city(); // "Mountain View"
echo $components->state(); // "California"
echo $components->postalCode(); // "94043"
echo $components->country(); // "United States"
echo $components->countryCode(); // "US"
$components->has('sublocality'); // bool
$components->first('administrative_area_level_2')?->longName; // any component type| Metóda | Typ komponentu Google |
|---|---|
streetNumber() | street_number |
street() | route |
city() | locality → postal_town → sublocality → sublocality_level_1 |
postalCode() | postal_code |
state() | administrative_area_level_1 |
country() | country (dlhý názov) |
countryCode() | country (krátky názov) |
Pri objekte Place sa components() vyplní, len ak field maska obsahuje addressComponents.
Recept: formulár s adresou
Spojte našepkávanie s priamym geokódovaním a zadanú adresu prevediete na štruktúrované polia — tu uložené cez HasAddresses z addresses-for-laravel. Ide o bežný kód hostiteľskej aplikácie; balíky nie sú navzájom prepojené:
use RoundlyConsulting\GooglePlaces\Facades\GooglePlaces;
// While the user types — suggest addresses:
$predictions = GooglePlaces::autocomplete($request->input('q'));
// On submit — normalise the chosen address into structured fields:
$result = GooglePlaces::geocodeAddress($request->input('address'))->first();
$model->addAddress([
'street' => $result?->components()->street(),
'city' => $result?->components()->city(),
'postal_code' => $result?->components()->postalCode(),
'country' => $result?->components()->countryCode(),
'latitude' => $result?->geometry->location->latitude,
'longitude' => $result?->geometry->location->longitude,
]);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.