Клуб API Карт

Поиск по картам Яндекс

Пост в архиве.

Пример: В моем городе на карте две улицы Ленина - одна в городе, вторая - на окраине в прилегающем поселке. При поиске "Ленина" - яндекс карты показывают координаты пригорода.

1) Возможно как вариант, если геокодер ничего не возвращает - дописать свою функцию. Поиск по базе неправильных улиц? То есть  позабивать координаты улиц, которые не находятся или находятся неправильно в БД???Есть другой вариант?


2) Существует проблема: люди могут искать "Ленина 1,..2..3." и геокодер им вернет улицу Ленина, только в другом месте (в поселке, а не в городе). Как быть? Проверять искомую фразу на наличие названия улицы, которое есть в моей базе "неправильных улиц" или проверять координаты, которые возвращает геокодер ?


3)Как организовать поиск по названиям предприятий? Как вариант, сделать переключатель "искать по улицам", "искать в предприятиях", но он мне не очень нравится. Возможно, как вариант, сначала искать слово по моей базе, а уже потом использовать в функции геокодер??

8 комментариев
Александр Новиков
28 января 2016, 07:50
Геокодер может вернуть несколько подходящих вариантов, а дальше уже ваше дело их анализировать и предлагать пользователю варианты... Если же геокодер вернет пустой результат, то никто не мешает вам использовать собственный поисковый механизм. Другой вопрос что реализация такого механизма дело не тривиальное. И геокодер не ищет по предприятиям - он позволяет определить координату по адресу и наоборот. И никто большой точности не гарантирует.
Да, конечно, я прекрасно понимаю, что геокодер не способен искать по базе предприятий) Просто хотел услышать, как люди решали похожую проблему. Я судил со стороны пользователя - ему не совсем удобно давать переключатель (поиск по адресу/предприятию), а следовательно надо делать такую нетривиальную функцию, которая сначала сравнивала бы строку поиска с совпадением в моей базе, а уже потом отрабатывал бы геокодер. Это так как вижу проблему я. Но возможно вы решали похожую задачу?
Александр Новиков
28 января 2016, 07:50
С технической точки зрения не вижу никаких проблем - любой вариант реализуем. С точки зрения удобства использования, надо смотреть.... Но практически везде четко разделен поиск по адресу (по карте) и поиск по названию (по базе объектов, событий и т.п.). Мне кажется это не зря сделано. К тому же вы сможете совмещать поиск и сделать "искать рядом с"
Спасибо. Но что Вы имеете в виду искать рядом с...  ? Допустим я ищу предприятие по названию. Затем включаю опцию "искать рядом" и ищу все предприятия, которые находятся на той же улице, либо в условном квадрате? Это имелось в виду? Есть ли сайты, где уже используется подобный поиск? Каков алгоритм данного поиска "искать рядом"?
Александр Новиков
28 января 2016, 07:50
Имею  в виду, что не всегда люди ищут по названию. Например ищут просто по категории. Например "кафе" рядом с улицей первомайской. В одном поле указываю "кафе", в другом адрес "первомайская, 51" - в результате нахожу все кафе из базы, которые находятся рядом с этим адресом.

Реализовано это и в Яндексе (смотрите адреса) и в Гугле (там вообще можно кликнуть правой кнопкой на любой точке и указать поисковую строку)
а есть ил подобные вещи на сайтах с использованиям яндекс карт?
Александр Новиков
28 января 2016, 07:50
Вроде бы видел где-то. Где - сейчас уже не вспомню.
Вы можете ограничить область поиска геокодера, чтобы он искал только в городе. Подробнее в статье:
http://ymapsapi.ya.ru/replies.xml?item_no=5

Точность поиска можно определять по полям kind и precision.
http://api.yandex.ru/maps/jsapi/doc/ref/reference/geocoderresult.xml#kind
http://api.yandex.ru/maps/jsapi/doc/ref/reference/geocoderresult.xml#precision

Вы можете искать предприятия по своей базе и в случае, если поиск не дал результатов - запускать http-геокодер.
http://api.yandex.ru/maps/geocoder/