Интеграция
Возможности
Сервис предоставляет он-лайн интерфейс к базе адресов Российской Федерации(«ФИАС»). Обмен данными происходит в формате JSON, с поддержкой JSONP.
Для облегчнения интеграции разработаны плагины под разные плаформы, которые подробно описаны ниже на этой странице. Плагины распространяются бесплатно под лицензией «Public domain», без каких-либо ограничений на использование.
Основные возможности:
- Искать регионы, нас. пункты, улицы, дома по подстроке и по коду
- Фильтровать данные по регионам, нас. пунткам и улицам
- Получать сведения о родительских элементах и почтовых индексах
Например, можно попросить сервис вернуть все города на букву «А», или все улицы Москвы начинающиеся на «Лен».
Исходные коды
Все исходные коды сервиса доступны в открытом виде. Вы можете принять участие в разработке проекта.
А у кого можно спросить?
Можно спросить на форуме или написать нам на info@kladr-api.ru.
Документация API сервиса
Документация API сервиса
Во всех примерах на этой странице используется демонстрационный токен, который периодически меняется. Не используйте его в своих рабочих приложениях.
Параметры запроса
Адрес страницы для запроса:
Адрес страницы для запроса платных токенов:
Список доступных параметров запроса:token— Токен для доступа к сервисуkey— Ключ для доступа к сервисуregionId— Код региона (области)districtId— Код районаcityId— Код города (населённого пункта)streetId— Код улицыbuildingId— Код дома (строения)query— Строка для поиска по названиюcontentType— Тип возвращаемых объектов (region, district, city, street, building)withParent— Если 1, сервис вернёт объекты вместе с родительскими (для района это регион, для населённого пункта район и регион и т.п.)limit— Количество возвращаемых объектовoffset— Смещение в выдаче (для организации постраничного вывода)typeCode— Тип объектов для выдачи:- 1 — города
- 2 — поселки
- 4 — деревни
- Битовые комбинации, например, 3 ( 1 | 2 ) — города и поселки
zip— Почтовый индекс. Работает только при contentType = building. В этом случае можно не передать parentId. Поиск по почтовому индексу — это поиск по строениям (building), поэтому логично указать withParent = 1 и limit = 1, чтоб выбрать данные о регионе, нас. пункте и т.п.
Например: http://kladr-api.ru/api.php?contentType=building&limit=1&withParent=1&zip=163000oneString— Поиск адреса одной строкой в свободной форме. С этим параметром используются:- query — строка поиска
- withParent=1 — выводить сведения о родителях
- limit — кол-во результатов в выдаче
- regionId, districtId, cityId — фильтры для ограничения поиск
callback– JavaScript метод которому будет передан ответ базы
Формат ответа сервиса
Пример ответа сервиса:
Запрос:
Ответ:
{
"searchContext": { // Объект с переданными серверу параметрами
"query": "Арх",
"contentType": "city",
"withParent": 1,
"limit": 2
},
"result": [ // Массив полученных объектов заданного типа (населённые пункты)
{
"id": "2900000100000", // Код объекта
"name": "Архангельск", // Название объекта
"zip": null, // Почтовый индекс объекта
"type": "Город", // Тип объекта полностью
"typeShort": "г", // Тип объекта коротко
"okato": "11401000000", // Код ОКАТО
"parents": [ // Массив родительских объектов (если был передан параметр withParent)
{
"id": "2900000000000",
"name": "Архангельская",
"zip": null,
"type": "Область",
"typeShort": "обл",
"okato": "11000000000",
"contentType": "region"
}
]
},
{
"id": "2800200000100",
"name": "Архара",
"zip": "676740",
"type": "Поселок городского типа",
"typeShort": "пгт",
"okato": "10205551000",
"parents": [
{
"id": "2800000000000",
"name": "Амурская",
"zip": "675000",
"type": "Область",
"typeShort": "обл",
"okato": "10000000000",
"contentType": "region"
},
{
"id": "2800200000000",
"name": "Архаринский",
"zip": null,
"type": "Район",
"typeShort": "р-н",
"okato": "10205000000",
"contentType": "district"
}
]
}
]
}
Особенности поиска объектов
Поиск объектов осуществляется либо по названию либо по коду связанного (родительского либо дочернего элемента).
Поиск объектов по названию осуществляется по шаблону /^название/ (т.е. выбираются объекты, название которых полностью
совпадает с поисковой строкой либо начинается на неё).
Для поиска улицы по названию необходимо обязательно указать код населённого пункта, например .
Для поиска строения по названию необходимо обязательно указать код улицы, например .
jQuery plugin
jQuery plugin
Версия 2.х
Текущая версия плагина — 2.х. Ее можно скачать с github
Подробная документация находится так же на странице github.
Версия 1.х
Предыдущая версия плагина — 1.4 Скачать.
Документация по версии 1.4. приведена ниже.
Архитектура
$.kladr- (статичный объект) предоставляет методы и свойства для работы с сервисом$( "selector" ).kladr- (плагин jQuery) плагин для автодополнения адреса
Подключение
$( 'input' ).kladr({
option1: 'value1',
option2: 'value2'
});
Чтение опции, свойства
$( 'input' ).kladr('option1');
Изменение опции, свойства
$( 'input' ).kladr('option1', 123);
Свойства объекта $.kladr
url- url сервиса, по-умолчаниюtype- перечисление используемых типов объектов. Список значений:region, district, city, street, buildingapi= function( query, callback ) {}- функция непосредственно выполняющая запрос к сервису. В качестве параметров принимает объект запроса и функцию, которой будет передан ответ сервиса.check= function( query, callback ) {}- функция для проверки существования объекта. В качестве параметров принимает объект запроса и функцию, которой будет передан объект (если он существует) либо false
Параметры плагина
token- токен для доступа к сервису, обязательный параметрkey– ключ для доступа к сервису, обязательный параметрtype– тип подставляемых объектов, обязательный параметрparentType– тип родительского объекта, по-умолчаниюnullparentId- идентификатор родительского объекта, по-умолчаниюnulllimit- количество отображаемых в выпадающем списке объектов, по-умолчанию10withParents- получить объект вместе с родителями, по-умолчаниюfalseshowSpinner- отображать ajax-крутилку, по-умолчаниюtrueverify- проверять введённые данные, по-умолчаниюfalsecurrent- текущий, выбранный объект КЛАДР
Методы плагина
source = function( query ) { return objects; }- функция для получения списка объектов отображаемых при автодополнении. По-умолчанию запрашивает данные у сервиса. Может быть переопределена для получения объектов из другого источника.labelFormat = function( obj, query) { return label; }- функция для форматирования значений в списке. В качестве параметров принимаетobj– объект КЛАДР,query– текущее значение поля ввода.valueFormat = function( obj, query) { return label; }– функция для форматирования подставляемых в поле ввода значений. В качестве параметров принимаетobj– объект КЛАДР,query– текущее значение поля ввода.
События плагина
open = function() {}- открыт список объектов. Доступно как событиеkladr_openполя ввода.close = function() {}- закрыт список объектов. Доступно как событиеkladr_closeполя ввода.send = function() {}- отправлен запрос к сервису. Доступно как событиеkladr_sendполя ввода.received = function() {}- получен ответ от сервиса. Доступно как событиеkladr_receivedполя ввода.select = function( obj ) {}- выбран объект в списке. В параметре передаётся текущий, выбранный объект КЛАДР. Доступно как событиеkladr_selectполя ввода.check = function( obj ) {}- проверен введённый пользователем объект. Вызывается только если параметрverify = true. В параметре передаётся текущий объект КЛАДР. Доступно как событиеkladr_checkполя ввода.
Примеры
Автодополнение городами России
$( 'input' ).kladr({
token: 'token',
key: 'key',
type: $.kladr.type.city
});
Изменении подписи при выборе района
$( 'input' ).kladr({
token: 'token',
key: 'key',
type: $.kladr.type.district,
select: function( obj ){
$( 'label' ).text( obj.type );
}
});
Проверка названия города, введённого пользователем самостоятельно
$( 'input' ).kladr({
token: 'token',
key: 'key',
type: $.kladr.type.city,
check: function( obj ){
if(obj){
$( 'input' ).css('color', 'black');
} else {
$( 'input' ).css('color', 'red');
}
}
});
jQuery
Амиро.CMS
Drupal
.NET provider
.NET provider
Автор
Антон Губаренко
Описание
Представляет собой DLL, которую можно подключить в References для осуществления поиска aдреса в Кладр.
Использование
- Скопировать
KladrApiClient.dllиNewtonsoft.Json.Net20.dllв папку с Вашим проектом (или сделать свою сборку с помощью исходниклв в папке Sources) - Добавить их в
References - Указать
using KladrApiClient;в классе - Создать объект класса
KladrClient - Осуществить поиск с помощью метода
FindAddress, которые принимает параметры запроса в форматеDictionary
Список возможных параметров:
token– токен для доступа к сервисуkey– ключ для доступа к сервисуregionId– код родительского регионаdistrictId– код районаcityId– код городаstreetId– код улицыbuildingId– код строенияquery– строка для поиска по названиюcontentType– тип объекта для поискаwithParent– вернуть объекты вместе с родителями, если 1 то в каждый объект будет добавлено поле parents содержащее список объектов-родителей объектаlimit– ограничение количества возвращаемых объектов, по умолчанию = 2000
Пример
using KladrApiClient;
using System;
using System.Collections.Generic;
using System.Windows;
public partial class MainWindow : Window
{
private KladrClient kladrClient;
public MainWindow()
{
InitializeComponent();
kladrClient = new KladrClient("some_token", "some_key");
}
private void Button_Click(object sender, RoutedEventArgs e)
{
kladrClient.FindAddress(new Dictionary<string, string>
{
{"query", "Арх"},
{"contentType", "city"},
{"withParent", "1"},
{"limit", "2"}
}, fetchedAddress);
}
private void fetchedAddress(KladrResponse response)
{
if(response!=null)
{
if (response.result != null && response.InfoMessage.Equals("OK"))
MessageBox.Show(string.Format("Found {0} results", response.result.Length));
}
}
}
.Net PHP API
PHP API
Контроллер доступа к сервису — Kladr\Api
Функции:QueryToJson(Query $query)- выполняет запрос к сервису, возвращая данные в виде объекта JsonQueryToArray(Query $query)- выполняет запрос к сервису, возвращая данные в виде ассоциативного массиваQueryToObjects(Query $query)- выполняет запрос к сервису, возвращая данные в виде массива объектов
Свойства:
Error- текст последней, возникшей при обращении к сервису, ошибки
Объект запроса — Kladr\Query
Свойства:ParentType- тип родительского объекта для ограничения области поиска (регион, район, город)ParentId- идентификатор родительского объекта для ограничения области поискаContentType- тип искомого объекта (регион, район, город)ContentName- название искомого объектаWithParent- получить объекты вместе с родителями (если true у объекта заполняется свойство Parent)Limit- ограничение количества возвращаемых объектов
Объект базы — Kladr\Object
Свойства:Id- идентификатор объектаName- название объектаZip- почтовый индекс объектаType- подпись объекта полностью (область, район)TypeShort- подпись объекта коротко (обл, р-н)Parents- массив родительских объектов (заполняется если в запросе был установлен флаг WithParent)
Перечисление типов объектов, используемых в запросах к сервису — Kladr\ObjectType
Константы:Region- регионDistrict- районCity- населённый пунктStreet- улицаBuilding- строение
Примеры
Получение списка всех населённый пунктов, название которых начинается на "Арх"
// Инициализация api, в качестве параметров указываем токен и ключ для доступа к сервису
$api = new Kladr\Api('51dfe5d42fb2b43e3300006e', '86a2c2a06f1b2451a87d05512cc2c3edfdf41969');
// Формирование запроса
$query = new Kladr\Query();
$query->ContentName = 'Арх';
$query->ContentType = Kladr\ObjectType::City;
$query->WithParent = true;
$query->Limit = 2;
// Получение данных в виде ассоциативного массива
$arResult = $api->QueryToArray($query);
Php
1С-Битрикс
1С-Битрикс
Описание
Модуль 1С-Битрикс предоставляющий форму для ввода адреса с автодополнением. В качестве источника данных используется сервис «КЛАДР в облаке»
Установка
- Загрузите модуль
- Скопируйте в папку «/bitrix/modules» вашего сайта
- Переименуйте модуль в primepixkladr
- Установите модуль

- Разместите компонент «Форма для ввода адреса» на странице для ввода адреса

- В настройках компонента укажите токен и ключ для подключения к сервису «КЛАДР в облаке»

Параметры компонента «Форма для ввода адреса»
-
Основные параметры
Токен для доступа к КЛАДР API- токен для доступа к сервисуКлюч для доступа к КЛАДР API- ключ для доступа к сервису
-
Выводить поля для ввода
Области– Добавляет поле с именем «region» для ввода названия областиРайона– Добавляет поле с именем «district» для ввода названия районаНаселённого пункта– Добавляет поле c именем «location» для ввода названия населённого пунктаУлицы– Добавляет поле c именем «street» для ввода названия улицыДома– Добавляет поле с именем «building» для ввода номера дома
-
Выводить скрытые поля
Код объекта– добавляет скрытое поле с именем «kladr_id», в которое по окончанию ввода адреса будет записан его кодПочтовый индекс– добавляет скрытое поле с именем «zip_code» в которое по окончанию ввода адреса будет записан его почтовый индекс из КЛАДРПодписи– добавляет скрытое поле с постфиксом «_label» к каждому полю ввода в которое будет записана подпись к введённому пользователем значению (например: город, посёлок, село)Сокращения подписей– добавляет скрытое поле к постфиксом «_label_min» к каждому полю ввода, в которое будет записано сокращение подписи к введённому пользователем значению (г., пос., с.)
-
Опции
Обновлять подписи при вводе– Включает обновление подписей к полям ввода. Например, если пользователь в поле город введёт «Москва», то подпись «Населённый пункт» автоматически будет изменена на «Город»Удалять значения, которых нет в КЛАДР– Включает проверку ввода в поля адреса и удаление ошибочно введённых значений. Например, если пользователь введёт в поле «Населённый пункт» значение «Мухосранск», то оно будет автоматически удалено, т.к. населённого пункта «Мухосранск» в России нет.
-
Дополнительные параметры
Подключить jQuery– Компонент использует библиотеку jQuery, поэтому если она не используется у вас на сайте включите данный пунктПодключить jQuery UI– Компонент использует библиотеку jQuery UI, поэтому если она не используется у вас на сайте включите данный пунктПодключить тему jQuery UI– Компонент использует тему jQuery UI для автодополнения адреса. Если она не используется у вас на сайте включите данный пункт
Результат
Компонент выводит на сайт несколько текстовых и скрытых полей для ввода адреса. Компонент не генерирует формы (<form></form>) для отправки на сервер введённой пользователем информации! Это сделано для того чтобы вы без проблем могли включить поля для ввода адреса в любую другую существующую форму на вашем сайте (к примеру форму оформления заказа).
Bitrix


