ajur-media / yandex-geo-coder
PHP Library for geo-coding using Yandex.Geocoder
Requires
- php: ^7.0
- ext-curl: *
- ext-json: *
This package is not auto-updated.
Last update: 2024-11-15 17:34:56 UTC
README
Яндекс.Карты предоставляют сервис геокодирования. Он позволяет определять координаты и получать сведения о географическом объекте по его названию или адресу и наоборот, определять адрес объекта на карте по его координатам (обратное геокодирование).
Например, по запросу «Санкт-Петербург, Невский проспект, 35» геокодер возвратит географические координаты этого дома: «30.332631, 59.934172» (долгота, широта).
Если в запросе указать географические координаты дома «30.332631, 50.4452705», то геокодер вернет адрес: «Украина, Киев, Шевченковский район, улица Богдана Хмельницкого, 11»
https://yandex.ru/dev/maps/geocoder/
API для работы с сервисом Яндекс.Геокодирование
Этот пакет реализует простой интерфейс для доступа к геокодеру.
Для работы с геокодером нужен токен. Получить его можно в кабинете разработчика: https://developer.tech.yandex.ru/services/
Пакет ajur-media/yandex-geo-coder
Так как «официальный» пакет yandex/geo
(https://packagist.org/packages/yandex/geo) не обновлялся с июля 2019 года (несмотря на наличие pull-request'ов),
а разработчики не отвечают на письма, я выпустил эту версию (с небольшими исправлениями и дополнениями) для нужд разработки «АЖУР Медиа».
Этот пакет доступен в репозитории:
composer require ajur-media/yandex-geo-coder
Пример использования
<?php use AJUR\Toolkit\YandexGeoCoder\Api; require_once 'vendor/autoload.php'; // инициализируем API // возвращает mutable object $api = new Api(); // Можно искать по точке (обратное геокодирование) // $api->setPoint(30.5166187, 50.4452705); // Или можно искать по адресу (прямое геокодирование) $api->setQuery('Санкт-Петербург, Невский проспект, 35'); // Настройка фильтров (можно использовать fluent-интерфейс) $api ->setLimit(1) // кол-во результатов ->setLang( Api::LANG_RU) // используемый язык для ответа ->setToken('<token>') // api ключ ->load(); $response = $api->getResponse(); echo "Found: ", $response->getFoundCount(), PHP_EOL; echo "Query: ", $response->getQuery(), PHP_EOL; $object = $response->getFirst(); // получаем первый (самый релевантный) объект в ответе геокодера echo "Lat: ", $object->getLatitude(), PHP_EOL; echo "Lon: ", $object->getLongitude(), PHP_EOL; // Список найденных объектов $collection = $response->getList(); foreach ($collection as $n => $item) { echo "[{$n}] Address: ", $item->getAddress(), PHP_EOL; echo "Lat: ", $item->getLatitude(), PHP_EOL; echo "Lon: ", $item->getLongitude(), PHP_EOL; }
Лицензия
MIT
TODO
- add \Psr\Logger as second argument to API constructor