0
Answered

Настройка гранулярных подсказок

Anonymous 4 years ago updated 4 years ago 6
Добрый день!
Необходимо заполнять адрес по полям: регион, район, город, нас. пункт, улица, дом, корпус, дом. В примере гранулярных подсказок http://codepen.io/dadata/pen/cGkah Регион / район, Город / населенный пункт идут как одно поле. Мне необходимо заполнять отдельными полями регион, район, город, нас. пункт. Посмотрел в сторону использования ограничения поиска http://codepen.io/dadata/pen/qADdb. Но меня не устраивают подписи у каждого поля адреса. Можно ли донастроить гранулярные подсказки или отключить надписи?



Answer

Answer
Answered
Добрый день!
Вот, посмотрите пример со отдельными полями.
Нужно донастроить параметр bounds.
Их возможные значения:
regionРегион
areaРайон
cityГород
settlementНаселенный пункт
streetУлица
houseДом
В первом примере параметр объединял ограничения:
 // регион и район  
$region.suggestions({    
    serviceUrl: serviceUrl,
    token: token,
    type: type,
    hint: false,
    bounds: "region-area"
  });
Для решения вашей задачи нужно сделать отдельные поля на каждую часть адреса.
Также не забудьте указать корректные constraints для ограничений нижестоящих элементов по вышестоящим.

// регион  
  $region.suggestions({
    serviceUrl: serviceUrl,
    token: token,
    type: type,
    hint: false,
    bounds: "region"
  });
  
  // район
  $area.suggestions({
    serviceUrl: serviceUrl,
    token: token,
    type: type,
    hint: false,
    bounds: "area",
    constraints: $region
  });
Answer
Answered
Добрый день!
Вот, посмотрите пример со отдельными полями.
Нужно донастроить параметр bounds.
Их возможные значения:
regionРегион
areaРайон
cityГород
settlementНаселенный пункт
streetУлица
houseДом
В первом примере параметр объединял ограничения:
 // регион и район  
$region.suggestions({    
    serviceUrl: serviceUrl,
    token: token,
    type: type,
    hint: false,
    bounds: "region-area"
  });
Для решения вашей задачи нужно сделать отдельные поля на каждую часть адреса.
Также не забудьте указать корректные constraints для ограничений нижестоящих элементов по вышестоящим.

// регион  
  $region.suggestions({
    serviceUrl: serviceUrl,
    token: token,
    type: type,
    hint: false,
    bounds: "region"
  });
  
  // район
  $area.suggestions({
    serviceUrl: serviceUrl,
    token: token,
    type: type,
    hint: false,
    bounds: "area",
    constraints: $region
  });
Спасибо за пример.
А есть возможность разделить дом и корпус? В текущей реализации у нас это разные поля.

// дом
$area.suggestions({ 
    serviceUrl: serviceUrl, 
    token: token, 
    type: type, 
    hint: false, 
    bounds: "house", 
    constraints: $street
});

// корпус
$area.suggestions({ 
    serviceUrl: serviceUrl,     
    token: token, 
    type: type, 
    hint: false, 
    bounds: "building", 
    constraints: $street
});

К сожалению, такой возможности нет.
Дом и корпус не разделяются.
Есть еще одна проблема. Связана с наследованием улицы от города. Если выбрать населенный пункт (какую-либо деревню или поселок), а город оставить пустым, то улица возвращается некорректно (возвращаются улицы из всех населенных пунктов района). Можно ли поле улицы настроить таким образом, чтобы при наличии города, улицы брались из города, а в противном случае - из нас. пункта?


Можно, укажите constraints для улицы вот так:
 // улица  
$street.suggestions({
    serviceUrl: serviceUrl,
    token: token,
    type: type,
    hint: false,
    bounds: "street",
    constraints: $settlement
  });
Если settlement заполнено — улицы будут ограничены по нему.
Если нет — будут ограничены по первому заполненному полю выше (в вашем случае это город).
Пример дополнен, посмотрите.
Спасибо за пример и описание. Теперь решение нам полностью подходит.