ajur-media/yandex-geo-coder

基于 Yandex.Geocoder 的地理编码 PHP 库

0.9.11 2020-10-21 23:06 UTC

This package is not auto-updated.

Last update: 2024-09-20 16:51:50 UTC


README

Яндекс.Карты提供地理编码服务。它允许通过名称或地址确定地理对象的坐标以及相反,通过坐标确定地图上的对象地址(反向地理编码)。

例如,通过查询“Санкт-Петербург, Невский проспект, 35”,地理编码器将返回该房子的地理坐标:“30.332631, 59.934172”(经度,纬度)。

如果查询中指定房子的地理坐标“30.332631, 50.4452705”,则地理编码器将返回地址:“乌克兰, Киев, Шевченковский район, улица Богдана Хмельницкого, 11”

https://yandex.ru/dev/maps/geocoder/

用于处理服务 Yahoo.Геокодирование的 API

此包实现了访问地理编码器的简单接口。

使用地理编码器需要令牌。可以在开发者控制台中获取它:https://developer.tech.yandex.ru/services/

ajur-media/yandex-geo-coder 包

由于“官方”包 yandex/geo (https://packagist.org.cn/packages/yandex/geo) 自 2019 年 7 月以来没有更新(尽管有 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

  • 将 \Psr\Logger 作为 API 构造函数的第二个参数添加