0
Answered

Город, район или улица с полным типом

Anonymous 3 months ago • updated by Тахир 2 months ago 7

Добрый день, мне кажется нужная штука. А может вы добавите еще поле *_with_type_full?
Например: city_with_type_full где будет написано "город Москва" было бы очень здорово. Кроме того, я не понимаю некоторые моменты, скриншот прилагаю:

https://yadi.sk/i/RRcMmfaY1HzViw

Почему region_with_type написано "г Москва", а settlement_with_type написано "поселок Коммунарка", а не "п Коммунарка"?

Answer

Answer

Мы не планируем добавлять новые поля *_with_type_full — спроса на них нет, а полей и так уже много. Если хотите получить название с полным типом, вот функция, которая позволит это сделать:

function name_with_type_full(suggestion, level) {
  var name = suggestion.data[level];
  var type_full = suggestion.data[level + "_type_full"];
  var name_with_type = suggestion.data[level + "_with_type"];
  if (name == null) {
    return null;
  }
  if (name_with_type.indexOf(name) == 0) {
    return name + " " + type_full;
  } else {
    return type_full + " " + name;
  }
}

Примеры вызова:

name_with_type_full(suggestion, "region");
name_with_type_full(suggestion, "area");
name_with_type_full(suggestion, "city");
name_with_type_full(suggestion, "settlement");
name_with_type_full(suggestion, "street");
Answered

Из ответа Дадаты можно собирать абсолютно любые комбинации, которые подходят именно вам. Мы сделали пример ответа, который подходит большинству.

Вы можете собрать так:

region_type_full + region + settlement_type_full + settlement.

Я сейчас подниму очень важную тему в написании и восприятии адресов, надеюсь вы поймете и сделаете выводы. Сравните:
https://yadi.sk/i/Pt1h_ZiefbSpVA

https://yadi.sk/i/j7TDKxd7p_Qp7A

Поэтому вашим способом я не знаю как собрать правильно составленные куски. Чтобы было понятно, ваш алгоритм внутренний выдает все правильно - "Тверской р-н" - Тверской район. Никто не пишет и не говорит "район Тверской", все привыкли "Тверской район". Также пример "район Богородское" у вас там правильно стоит "р-н Богородское ", никто не пишет "Богородское район", тогда уж надо Богородский район. Надеюсь вы поняли =)

Да, мы много работали над тем чтобы возвращать данные в том виде, который привычен пользователям и используется в речи. Именно по той же причине возвращается г Москва и поселок Коммунарка.

Уточните, пожалуйста, почему для вас это проблема?

потому, что, например, если я хочу показать на сайт район, то используя ваш паттерн у меня всегда будет "район Тверской", "район Богородское", если это не Москва, то будет "район Краснооктябрьский"

или же если подставить лейбл после то будет "Тверской район", "Богородское район", "Краснооктябрьский район". Т.е нужно придумывать алгоритм который ставит лейбл в нужное место. А вы уже решили эту проблему, но если бы еще было поле без сокращения, а с полным названием, было бы здорово. 

В котором city_district_with_type_full -> "Тверской район" ну удобно же!

Спасибо за ваше предложение! Мы подумаем о его реализации. 

Answer

Мы не планируем добавлять новые поля *_with_type_full — спроса на них нет, а полей и так уже много. Если хотите получить название с полным типом, вот функция, которая позволит это сделать:

function name_with_type_full(suggestion, level) {
  var name = suggestion.data[level];
  var type_full = suggestion.data[level + "_type_full"];
  var name_with_type = suggestion.data[level + "_with_type"];
  if (name == null) {
    return null;
  }
  if (name_with_type.indexOf(name) == 0) {
    return name + " " + type_full;
  } else {
    return type_full + " " + name;
  }
}

Примеры вызова:

name_with_type_full(suggestion, "region");
name_with_type_full(suggestion, "area");
name_with_type_full(suggestion, "city");
name_with_type_full(suggestion, "settlement");
name_with_type_full(suggestion, "street");

Супер, большое спасибо Вам за сервис!