Интеграция OpenStreetMap с Laravel: методы и примеры кода

Чтобы интегрировать Laravel с OpenStreetMap, вы можете использовать следующие методы:

Метод 1: использование пакета “guzzlehttp/guzzle”
Сначала вам необходимо установить пакет “guzzlehttp/guzzle” с помощью Composer:

composer require guzzlehttp/guzzle

После установки вы можете использовать HTTP-клиент Guzzle для отправки запросов к API OpenStreetMap. Вот пример того, как получить информацию о конкретном местоположении:

use GuzzleHttp\Client;
$client = new Client();
$response = $client->request('GET', 'https://nominatim.openstreetmap.org/search', [
    'query' => [
        'q' => 'New York, USA',
        'format' => 'json',
    ],
]);
$locationDetails = json_decode($response->getBody(), true);
// Process the location details
// ...

Метод 2: использование пакета «geocoder-php/leaflet-provider».
Другой подход заключается в использовании пакета «geocoder-php/leaflet-provider», который обеспечивает простой и удобный способ интеграции с OpenStreetMap. Установите пакет с помощью Composer:

composer require geocoder-php/leaflet-provider

Вот пример использования этого пакета для получения данных геолокации:

use Geocoder\Provider\OpenStreetMap;
use Geocoder\Query\GeocodeQuery;
$provider = new OpenStreetMap();
$query = GeocodeQuery::create('New York, USA');
$result = $provider->geocodeQuery($query);
$location = $result->first();
// Access various location details
$latitude = $location->getCoordinates()->getLatitude();
$longitude = $location->getCoordinates()->getLongitude();
$address = $location->getStreetName();
// ...