Permalink
Browse files

Search by full address (one string)

  • Loading branch information...
xescoder committed Aug 22, 2014
1 parent 7a8d381 commit 2712793421b646bc9c4e4c4f62987f5a439748d7
Showing with 51 additions and 0 deletions.
  1. +2 −0 README.md
  2. +10 −0 examples/README.md
  3. +19 −0 examples/search_one_string.php
  4. +20 −0 kladr.php
View
@@ -29,6 +29,8 @@ PHP API "КЛАДР в облаке"
* *ParentId* - идентификатор родительского объекта для ограничения области поиска
* *ContentType* - тип искомого объекта (регион, район, город)
* *ContentName* - название искомого объекта
* *Zip* - почтовый индекс искомого объекта
* *OneString* - выполнить поиск по всему адрему (одной строкой), при включении этой опции результат нельзя получить в виде объектов КЛАДР, только в виде ассоциативного массива
* *WithParent* - получить объекты вместе с родителями (если true у объекта заполняется свойство Parent)
* *Limit* - ограничение количества возвращаемых объектов
View
@@ -0,0 +1,10 @@
PHP API "КЛАДР в облаке"
==========================
Примеры использования
* **simple.php** - Простой пример
* **search_streets.php** - Поиск улиц
* **search_by_zip.php** - Поиск по почтовому индексу
* **search_one_string.php** - Поиск по всей строке адреса
* **search_objects.php** - Поиск с возвращением объектов КЛАДР в качестве результата
@@ -0,0 +1,19 @@
<?
include '../kladr.php';
// Инициализация api, в качестве параметров указываем токен и ключ для доступа к сервису
$api = new Kladr\Api('51dfe5d42fb2b43e3300006e', '86a2c2a06f1b2451a87d05512cc2c3edfdf41969');
// Формирование запроса
$query = new Kladr\Query();
$query->ContentName = 'москва, ленинский пр, 1';
$query->OneString = TRUE;
$query->Limit = 5;
// Получение данных в виде ассоциативного массива
$arResult = $api->QueryToArray($query);
print '<pre>';
var_dump($arResult);
print '</pre>';
View
@@ -87,6 +87,13 @@ public function QueryToObjects(Query $query)
$obResult = $this->QueryToJson($query);
if (! $obResult) return array();
if (isset($obResult->searchContext->oneString)) {
$this->error = 'Возвращение результата в виде объектов при ' .
'поиске по всему адресу (одной строкой) невозможен';
return array();
}
$arObjects = array();
foreach ($obResult->result as $obObject) {
$arObjects[] = new Object($obObject);
@@ -209,6 +216,7 @@ class ObjectType
* @property string $ContentType Тип искомых объектов (регион, район, город)
* @property string $ContentName Название искомого объекта (частично либо полностью)
* @property string $Zip Почтовый индекс
* @property boolean $OneString Выполнить поиск по полной записи адреса, одной строкой
* @property boolean $WithParent Получить объекты вместе с родителями
* @property integer $Limit Ограничение количества возвращаемых объектов
*/
@@ -222,6 +230,7 @@ class Query
private $zip;
private $oneString;
private $withParent;
private $limit;
@@ -232,6 +241,7 @@ public function __construct()
$this->contentType = NULL;
$this->contentName = NULL;
$this->zip = NULL;
$this->oneString = NULL;
$this->withParent = NULL;
$this->limit = NULL;
}
@@ -249,6 +259,8 @@ public function __get($name)
return $this->contentName;
case 'Zip':
return $this->zip;
case 'OneString':
return $this->oneString;
case 'WithParent':
return $this->withParent;
case 'Limit':
@@ -276,6 +288,9 @@ public function __set($name, $value)
case 'Zip':
$this->zip = $value;
break;
case 'OneString':
$this->oneString = $value;
break;
case 'WithParent':
$this->withParent = $value;
break;
@@ -308,6 +323,11 @@ public function __toString()
$string .= 'zip=' . $this->zip;
}
if ($this->oneString) {
if (! empty($string)) $string .= '&';
$string .= 'oneString=1';
}
if ($this->withParent) {
if (! empty($string)) $string .= '&';
$string .= 'withParent=1';

0 comments on commit 2712793

Please sign in to comment.