Использование API геокодера от LocationIQ на сайте
Доброго времени друзья! Недавно работал над задачей получения объявлений о продаже недвижимости по 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"
]
} |

Автор:






