Определить город по его неверному или частичному названию?
Например, чтобы по "мск" или "масква" мне вернуло "Москва", по "питер" вернуло Санкт-Петербург и т.д. Пока у меня почти получилось это сделать через 2 запроса - сначала прямое геокодирование на то, что ввел пользователь, затем обратное чтобы по координатам поучить город. Но проблема в том, что этот механизм то работает, то нет. Потому что Яндекс как-то по разному определяет и координаты и месту и место по координатам. Вообще, использование двух запросов, это единственный вариант?
Ответы (1 шт):
1) В JavaScript API можно использовать поисковые подсказки, вот описание и пример в песочнице: https://tech.yandex.ru/maps/jsapi/doc/2.1/ref/reference/suggest-docpage/
ymaps.suggest('мск')
.then(function (items) {
// items - массив поисковых подсказок.
console.log(items);
});
Может быть полезным параметр boundedBy.
Если строка для поиска вводится пользователем, можно использовать панель с поисковыми подсказками. Вот пример в песочнице: https://tech.yandex.ru/maps/jsbox/2.1/suggest
2) Также можно использовать API Поиска по организациям (https://tech.yandex.ru/maps/geosearch/ ).
В документации (https://tech.yandex.ru/maps/geosearch/doc/examples/geosearch_examples-docpage/ ) есть пример запроса с орфографической ошибкой «Масква». Ответ будет содержать исправленный вариант: https://search-maps.yandex.ru/v1/?text=Масква&type=geo&lang=ru_RU&apikey=
На запросы "мск" и "питер" API также возвращает исправленный ответ.