Блог API Яндекс.Карт

Пример: поиск по собственным геообъектам

25 июня 2012, 15:03
В API Яндекс.Карт есть стандартная функция: поиск адресов на карте. Помимо этого API позволяет организовать поиск по собственным объектам, добавленным на карту. При этом вы можете использовать стандартный контрол API (SearchControl) для отображения поисковой строки и выдачи результатов поиска. Достаточно добавить стандартному SearchControl свой класс источника данных (provider), который ищет в переданной коллекции меток.

Посмотреть пример в новом окне.

Использование стандартного контрола может сильно упростить вам задачу. Не нужно рисовать и верстать ни поисковую строку, ни выдачу результатов поиска.

На карте покрытия сети Мегафона в Москве можно посмотреть, как выглядит SearchControl и результаты поиска по адресам. Ждем ваших примеров использования поиска по собственным объектам.
14 комментариев
Подписаться на комментарии к посту

роскошно, еще бы саджест..

 

роскошно, еще бы саджест..

Хорошая мысль, но вроде верстка стандартного SearchControl-а не поддерживает такое. Или ты предлагаешь просто каждый раз искать при изменении текста в инпуте?

 

Да это бы удобно было бы. 

Посмотрите пример, он не работает, именно нет позиционирования на объект.

Работало на версии API 2.1.10.

Есть варианты обходного маневра ?

поправил

спасибо, все работает

Спасибо. Очень полезная вещь.

А не подскажете где можно посмотреть пример или почитать как искать по вложенным массивам?

Например:

    var myPoints = [
          {
                    coords: [50.356472, 30.563022],
                    text: "aaa"
                },
                {
                    coords: [50.45351, 30.516489],
                    text: "aaa",
                    items: [
                    {
                        coords: [50.426472, 30.583022],
                        text: "bbb"
                    },
                    {
                        coords: [50.45351, 30.576489],
                        text: "bbb"
                    }
                ]},
                {
                    coords: [50.454433, 30.529874],
                    text: "aaa"
                },
                {
                    coords: [50.50955, 30.65791],
                    text: "aaa"
                }
       
    ];

искат по items или и в первом и втором уровнях, например значение coords.

можно использовать метод массива filter, если внутри есть еще один массив, с ним тоже использовать filter (типа рекурсии)

Спасибо помогло.

И ещё вопрос:

А почему noPlacemark:false/true не работает? Или может я чего не правильно понял в описании (http://api.yandex.ru/maps/doc/jsapi/1.x/ref/reference/searchcontrol.xml).?

В общем нужно чтоб ри переходе был открытый балун..., что-то типа (____.balloon.open())

Александр
27 июня 2014, 17:35

Подскажите, 

если у меня несколько массивов - как искать по всем?

И еще - если сделать разные массив из координат и фамилии

(то есть массив 1 - координаты, Петров

массив 2 - координаты Иванов), можно ли при поиске по фамилии что бы выделялись все объекты?

Друзья, подскажите, а как сделать так, чтобы еще и description для каждого объекта указывать?

...

{ coords: [55.77, 37.46], text: 'Трактир', description: 'ул. Ленина 1' },

...

Ну и выводить, соответственно.

Заранее благодарен.

 

подскажите пожалуйста, можно ли как-то ужесточить условия поиска?

Суть

Объектов около 50тыс, есть множество абсолютно одинаковых по имени (т.к. используется нумерация), других отличительных признаков нет, итого при поиске объекта1 (которых и так более 10) в поисковую выдачу потадают объект10, объект10а, объект101 и проч, а это уже сотни..

Можно сделать чтобы список поисковой выдачи формировался как объект1 === объект1

Вопрос решился переименованием объектов

было "объект1" стало "-1 объект"

используя такой же запрос выдает только объекты с номером 1

Спасибо :-)