Skip to content

Commit 2712793

Browse files
committed
Search by full address (one string)
1 parent 7a8d381 commit 2712793

File tree

4 files changed

+51
-0
lines changed

4 files changed

+51
-0
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ PHP API "КЛАДР в облаке"
2929
* *ParentId* - идентификатор родительского объекта для ограничения области поиска
3030
* *ContentType* - тип искомого объекта (регион, район, город)
3131
* *ContentName* - название искомого объекта
32+
* *Zip* - почтовый индекс искомого объекта
33+
* *OneString* - выполнить поиск по всему адрему (одной строкой), при включении этой опции результат нельзя получить в виде объектов КЛАДР, только в виде ассоциативного массива
3234
* *WithParent* - получить объекты вместе с родителями (если true у объекта заполняется свойство Parent)
3335
* *Limit* - ограничение количества возвращаемых объектов
3436

examples/README.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
PHP API "КЛАДР в облаке"
2+
==========================
3+
4+
Примеры использования
5+
6+
* **simple.php** - Простой пример
7+
* **search_streets.php** - Поиск улиц
8+
* **search_by_zip.php** - Поиск по почтовому индексу
9+
* **search_one_string.php** - Поиск по всей строке адреса
10+
* **search_objects.php** - Поиск с возвращением объектов КЛАДР в качестве результата

examples/search_one_string.php

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?
2+
include '../kladr.php';
3+
4+
// Инициализация api, в качестве параметров указываем токен и ключ для доступа к сервису
5+
$api = new Kladr\Api('51dfe5d42fb2b43e3300006e', '86a2c2a06f1b2451a87d05512cc2c3edfdf41969');
6+
7+
// Формирование запроса
8+
$query = new Kladr\Query();
9+
$query->ContentName = 'москва, ленинский пр, 1';
10+
11+
$query->OneString = TRUE;
12+
$query->Limit = 5;
13+
14+
// Получение данных в виде ассоциативного массива
15+
$arResult = $api->QueryToArray($query);
16+
17+
print '<pre>';
18+
var_dump($arResult);
19+
print '</pre>';

kladr.php

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,13 @@ public function QueryToObjects(Query $query)
8787
$obResult = $this->QueryToJson($query);
8888
if (! $obResult) return array();
8989

90+
if (isset($obResult->searchContext->oneString)) {
91+
$this->error = 'Возвращение результата в виде объектов при ' .
92+
'поиске по всему адресу (одной строкой) невозможен';
93+
94+
return array();
95+
}
96+
9097
$arObjects = array();
9198
foreach ($obResult->result as $obObject) {
9299
$arObjects[] = new Object($obObject);
@@ -209,6 +216,7 @@ class ObjectType
209216
* @property string $ContentType Тип искомых объектов (регион, район, город)
210217
* @property string $ContentName Название искомого объекта (частично либо полностью)
211218
* @property string $Zip Почтовый индекс
219+
* @property boolean $OneString Выполнить поиск по полной записи адреса, одной строкой
212220
* @property boolean $WithParent Получить объекты вместе с родителями
213221
* @property integer $Limit Ограничение количества возвращаемых объектов
214222
*/
@@ -222,6 +230,7 @@ class Query
222230

223231
private $zip;
224232

233+
private $oneString;
225234
private $withParent;
226235
private $limit;
227236

@@ -232,6 +241,7 @@ public function __construct()
232241
$this->contentType = NULL;
233242
$this->contentName = NULL;
234243
$this->zip = NULL;
244+
$this->oneString = NULL;
235245
$this->withParent = NULL;
236246
$this->limit = NULL;
237247
}
@@ -249,6 +259,8 @@ public function __get($name)
249259
return $this->contentName;
250260
case 'Zip':
251261
return $this->zip;
262+
case 'OneString':
263+
return $this->oneString;
252264
case 'WithParent':
253265
return $this->withParent;
254266
case 'Limit':
@@ -276,6 +288,9 @@ public function __set($name, $value)
276288
case 'Zip':
277289
$this->zip = $value;
278290
break;
291+
case 'OneString':
292+
$this->oneString = $value;
293+
break;
279294
case 'WithParent':
280295
$this->withParent = $value;
281296
break;
@@ -308,6 +323,11 @@ public function __toString()
308323
$string .= 'zip=' . $this->zip;
309324
}
310325

326+
if ($this->oneString) {
327+
if (! empty($string)) $string .= '&';
328+
$string .= 'oneString=1';
329+
}
330+
311331
if ($this->withParent) {
312332
if (! empty($string)) $string .= '&';
313333
$string .= 'withParent=1';

0 commit comments

Comments
 (0)