Использование API геокодера от LocationIQ на сайте

Author Автор: Роман Чернышов    Опубликовано: 30 января 2025

Доброго времени друзья! Недавно работал над задачей получения объявлений о продаже недвижимости по API с сервиса Inpars, с последующей выгрузкой данных на сайт с CMS WordPress, и организацией поиска по городам, районам и улицам. Но так вышло, что API Inpars не отдает формализированных(приведенных к единой форме) данных: город, район, улица. Что осложнило реализацию поиска объявлений по ним. Было решено — реализовать скрипт формализации с помощью использование API сервиса геокодера LocationIQ. Геокодер позволяет по координатам получить массив данных об адресе искомого объекта, с разбивкой по нужным полям.

Реализация

Для приведения всех адресов объектов недвижимости к единому формату, для CMS WordPress был написан отдельный плагин, его я назвал RCHE-inpars, который поочередно обходит все объявления на сайте и формализует адреса, отправляя запрос по API в геокодер LocationIQ. При этом у LocationIQ очень лояльные условия использования, сервис предоставляет 5000 запросов к геокодеру в сутки (в сравнении с геокодером от Yandex, где 1000 запросов сутки), на бесплатном тарифе. Этого более чем достаточно, чтобы всегда поддерживать базу объявлений в актуальном состоянии.

Подключение

  • Перейдите на сайт https://locationiq.com/
  • Зарегистрируйтесь указав свой емаил и пароль;
  • Перейдите в раздел «API Keys» своего личного кабинета;
  • Сгенерируйте API key для вашего проекта;
  • Используйте ключ для аутентификации запросов к API.

Скрипт на PHP

$apikey = ''; // Ключ API
$lat = ''; // Широта
$lng = ''; // Долгота
 
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://us1.locationiq.com/v1/reverse?key={$apikey}&lat={$lat}&lon={$lng}&format=json&accept-language=ru");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$headers = array();
$headers[] = 'Content-Type: application/json';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($ch);
if (curl_errno($ch)) { echo 'Error:' . curl_error($ch);
}
curl_close($ch);
 
print_r($result); // Выводим результат

Результат ответа на запрос к API:

{
    "place_id": "199895390",
    "licence": "https://locationiq.com/attribution",
    "osm_type": "way",
    "osm_id": "111310686",
    "lat": "56.46288655",
    "lon": "84.95842977500001",
    "display_name": "70, улица Белинского, Верхняя Елань, Кировский район, Томск, городской округ Томск, Томская область, Сибирский федеральный округ, 634034, Россия",
    "address": {
        "house_number": "70",
        "road": "улица Белинского",
        "quarter": "Верхняя Елань",
        "city_district": "Кировский район",
        "city": "Томск",
        "county": "городской округ Томск",
        "state": "Томская область",
        "region": "Сибирский федеральный округ",
        "postcode": "634034",
        "country": "Россия",
        "country_code": "ru"
    },
    "boundingbox": [
        "56.462622",
        "56.4631528",
        "84.9583109",
        "84.958547"
    ]
}

Оставить комментарий

Автор блога
Роман Чернышов
Веб-разработчик,
Full Stack
Senior, Architect
PHP, JavaScript, Node.JS, Python, HTML 5, CSS 3, MySQL, Bash, Linux Admin
Заказать работу
предложить оффер
Телеграм канал

Моя книга
Книга. Веб-разработчик. Легкий вход в профессию
Печатная книга
Веб-разработчик.
Легкий вход в профессию
Купить за 359₽
Популярные записи
Последние вопросы
Список вопросов
Последние комментарии
Меню

Archive

Мои проекты
Insurance CMS Love Crm CMS Совместные покупки Мой PHP Framework Хостинг для моих клиентов Лицензии на мой софт и поддержка