Клуб API Карт

Найдено на тему «поиск»:
Как ищут бизнес на Картах?
Maps API
27 июня 2018, 11:04

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

Где отдохнуть, отремонтировать машину, купить подарок маме на день рождения, записаться на фитнес? Каждый день Яндекс.Карты помогают людям найти миллионы мест и организаций. Мы провели исследование и выяснили, на что пользователи обращают внимание, когда получают ответ на свой поисковый запрос на Картах. А ещё составили список простых советов, которые помогут повысить  привлекательность вашей организации и отличиться от конкурентов.

Каждый месяц 46 млн человек ищут в Яндексе организации. Популярнее всего сфера обслуживания: гостиницы, кафе и рестораны.* 

*  Данные Яндекса за апрель 2018 года, запросы по категориям

Добавьте свою организацию в Справочник и заполните профиль как можно полнее — это поможет вашему бизнесу появляться в поисковой выдаче Карт чаще по разным фильтрам. Укажите часы работы, адрес, телефон и всё остальное — а Яндекс донесёт эти сведения до пользователей.

  • Добавьте яркое фото — их любят все, и смотреть на Картах — тоже. И правда, выбрать ресторан для банкета или кафе для дружеских посиделок гораздо проще, если есть возможность быстро оценить не только меню, но и интерьер заведения. По нашим данным, хорошее фото увеличивает интерес пользователей в среднем на 10% — они чаще кликают на карточку организации и смотрят информацию о компании.
  • Будьте на связи — укажите телефон. По нашим данным, почти 30% просмотров карточек, где указан номер компании, конвертируются в звонки. Не забывайте обновить данные, если телефон изменился. 
  • Добавьте адрес сайта и ссылки на страницы в социальных сетях. Компании с такими данными в среднем в три раза популярнее, чем без. Добавляя адрес сайта в карточку, вы автоматически продвигаете свою организацию не только на Картах, но и в поиске Яндекса. 
  • Тем пользователям, кто находится рядом и нуждается в ваших услугах прямо сейчас, важно убедиться, что ваш автосервис или магазин работает. Несмотря на то, что люди часто сортируют ответы на Картах по фильтру «Открыто», только 64% компаний заполнили время работы. Так что получить конкурентное преимущество и привлечь больше клиентов сейчас легко.
  • Выделите время, чтобы ответить на отзывы пользователей — это повышает лояльность аудитории. Особенно внимательно и оперативно, конечно, нужно реагировать на негатив (но не только): в интернете личный отзыв воспринимается как персональная рекомендация, которой люди склонны доверять. 
     

Заполнять профиль организации полностью выгодно ещё и потому, что наш алгоритм ранжирования автоматически поднимает в выдаче самые информативные карточки компаний. Такая забота о клиентах в среднем увеличивает интерес, то есть переходы пользователей, на 20%. При этом пока только 2% организаций получили отметку «Информация подтверждена владельцем».

Следить за динамикой поиска вашей организации, узнать, откуда вас ищут, и посмотреть, как вы выглядите в сравнении с конкурентами можно в Личном кабинете Справочника. Там же удобно отвечать на отзывы о вашей компании — пользователи увидят их на Картах. А чтобы ваш бизнес находили ещё чаще, воспользуйтесь услугой «Приоритетное размещение».

Команда Яндекс.Справочника

P. S. Подписывайтесь на наши каналы
Блог Яндекса для Вебмастеров
Канал Яндекса о продвижении сайтов на YouTube
Канал для владельцев сайтов в Яндекс.Дзен

Оригинал новости опубликован в блоге Яндекса для вебмастеров

2 комментария
поиск,организации,поиск по организациям
убрать английский язык в suggest
Роман К.
24 октября 2017, 11:21

Добрый день. У меня подключен ymap с русской локализацией 2.1/?lang=ru_RU

но однако, появляются надписи на английском, причем наших регионов, я так понимаю когда не найдено соответствий в одном списке поиск происходит по дргугому.

Возможно ли отключить эту возможность опционально?

Спасибо!

6 комментариев
suggest,поиск,search,подсказки
Ограничение поиска объектов по определённому региону
Александр Васильев
5 июня 2017, 11:37

Интересует, есть ли возможность простым способом ограничить поиск по какому-то определённому региону, конкретно по Якутии.  Я пробовал через SearchControl и boundedBy, предварительно получив границы области через 

 ymaps.regions.load('RU', {
            lang: 'en',
            quality: 1
        })

и получив по коду нужный регион, использовав метод getBounds, но что-то не работает.

Даже, если поставить координаты в SearchControl,

var searchControl = new ymaps.control.SearchControl({boundedBy:[ [71.95152553383006,124.77785662500001],[60.89422088315866,153.51809099999997]], noPlacemark: true, strictBounds: true});
myMap.controls.add(searchControl);

то всё равно можно через автокомплит найти Москву, которой, по идее быть не должно. 

Автоподбор почему-то зависит от видимой области на карте. Например если я смотрю на Москву, то в приоритете будут Московские адреса.

В провайдере стоит # map.

myMap = new ymaps.Map('map', {
  center: [62.15187236180695,129.7922575],
  zoom: 5
}, {
  searchControlProvider: 'yandex#map'
});

В чём может быть беда? И есть ли лёгкий способ ограничить выборку объектов по определённому региону РФ?

1 комментарий
поиск по карте,поиск,Не работает поиск,регион,регионы,карты
Собственный поиск
Иван
6 октября 2016, 11:31

Добрый день. Хочу сделать свой собственный поиск по объектам, но искать нужно не по объектам на карте, а по запросу к другому скрипту. Пишем текст - отправляем строку скрипту, скрипт возвращает ответ в JSON, мы этот ответ обрабатываем и выводим на карте и заполняем список результатов.

В песочнице есть пример поиска по своим объектам на карте: https://tech.yandex.ru/maps/jsbox/2.1/custom_search

Так же в песочнице есть собственное отображение результатов: https://tech.yandex.ru/maps/jsbox/2.1/custom_search_results

Однако в документации API (https://tech.yandex.ru/maps/doc/jsapi/2.1/ref/reference/IGeocodeProvider-docpage/) не описана даже возможность создания своего собственного провайдера.

Как мне реализовать поиск по запросу к другому скрипту?

Кстати результаты лучше выводить через SuggestView, если надо темизировать их по-своему?

7 комментариев
SearchControl,CustomSearchProvider,поиск
Поиск по собственным объектам загруженным с помощью ObjectManager`а
ытя
28 апреля 2016, 16:28

Добрый день, а есть ли у кого пример как реализовать поиск по собственным объектам, которые были загружены на карту с помощью ObjectManager?

Я пытался делать, взяв за основу данный пример: https://tech.yandex.ru/maps/jsbox/2.1/custom_search и даже получаю результат поиска, но не работает самаое главное, при выборе объекта из выпадающего списка я получаю ошибку в консоль "Uncaught TypeError: Cannot read property '1' of undefined" и больше ничего не происходит.

Собственно как я пытался сделать:

Создаю обжект менеджер:

objectManager = new ymaps.ObjectManager({
    clusterize: true,
    gridSize: 32,
    groupByCoordinates: true,
});
myMap.geoObjects.add(objectManager)

И загружаю в него данные (этот момент опустил)

Создаю экземляр класса ymaps.control.SearchControl:

var mySearchControl = new ymaps.control.SearchControl({
    options: {
        provider: new CustomSearchProvider(objectManager),
        noPlacemark: true,
        resultsPerPage: 5,
        size: 'large'
    }
});

И собственно сам провайдер:

function CustomSearchProvider(points)
{
    this.points = points;
}

CustomSearchProvider.prototype.geocode = function (request, options)
{
    var deferred = new ymaps.vow.defer(),
    geoObjects = new ymaps.GeoObjectCollection(),
    offset = options.skip || 0,
    limit = options.results || 20;

    var search_points = this.points.objects.getAll();

    var points = [];
    for (var i = 0, l = search_points.length; i < l; i++)
    {
        var point = search_points[i];

        if(point.properties.search_text.toLowerCase().indexOf(request.toLowerCase()) != -1)
        {
            points.push(point);
        }
    }

    points = points.splice(offset, limit);
    for (var i = 0, l = points.length; i < l; i++)
    {
        var point = points[i],
            coords = point.properties.coords;

        geoObjects.add(new ymaps.Placemark(coords,
        {
            name: point.properties.address,
            description: point.properties.text,
            boundedBy: [coords, coords]
        }));
    }

    deferred.resolve(
    {
        geoObjects: geoObjects,
        metaData: {
            geocoder: {
                request: request,
                found: geoObjects.getLength(),
                results: limit,
                skip: offset
            }
        }
    });
    return deferred.promise();
};

Помогите советом, что я делаю не так?

6 комментариев
ObjectManager,поиск,поиск по коллекции,SearchControl
Действие при выборе подсказки в SearchControl
uksusoff
9 сентября 2015, 12:07

Тут уже задавили этот вопрос, но вдруг что-то изменилось? 

Возможно ли отловить событие клика по подсказке в SearchControl?

10 комментариев
API 2.1,поиск,подсказка,SearchControl
ПКК и координаты по номеру участка
AngelOKES
24 июля 2015, 10:03

По поводу публичной кадастровой карты и наложения слоя я уже как понял вещь практически невозможная, поэтому я решил упростить задачу, мне хотя бы как-нибудь получить координаты одиночного участка по его кадастровом номеру, уж как минимум хотелось бы сделать у себя на сайте поиск по этому номеру и показывать участок, пускай даже без границ, просто координаты центра, думаю я не так многого прошу

7 комментариев
слои,API 2.1,поиск
Закрытие API Поиска по Народной карте и слоя НК в API
Maps API
10 июля 2015, 16:38

В апреле произошло объединение данных Народной карты и Яндекс.Карт. Теперь все изменения, добавленные на Народную карту, после модерации появляются на схеме и гибридном слое карт. Поиск, доступный через JavaScript и HTTP API Яндекс.Карт, также обогатился новыми данными. Добавленные на карту объекты можно находить с помощью геокодера и поиска по организациям. Отдельный слой Народной карты и поиск по Народной карте заморожены и не будут обновляться.

В связи с этими изменениями, мы приняли решение закрыть отдельное API Поиска по Народной карте и предлагаем перейти на использование поиска по организациям и геокодера в JavaScript и HTTP API. Провайдер поиска yandex#publicMap в JavaScript API и HTTP API Поиска по Народной карте перестанут работать с 24 августа 2015 года.

Пользователи JS API могут подключить в качестве провайдера поиска yandex#search, и посетители их сайтов смогут искать топонимы и организации на карте. Пользователям HTTP API Поиска по Народной карте мы предлагаем перейти на HTTP API Поиска по организациям или на HTTP Геокодер в зависимости от искомых типов объектов. Перед использованием, пожалуйста, ознакомьтесь с лимитами и условиями использования геокодера и поиска по организациям.

Слой Народной карты с сентября также не будет доступен через API. Если на вашем сайте был подключен слой со схемой Народной карты, она заменится на обычную схему, а «народный гибрид» — на обычный гибрид.

Если какой-то информации из Народной Карты не хватает, пожалуйста, сообщите об этом нам или в комментариях к этому посту в клубе Народной карты.

15 комментариев
народная карта,API 2.1,http-геокодер,новости,поиск по организациям,поиск,геокодирование
Поиск по карте
Виталий
3 июля 2015, 06:22

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

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

 

В песочнице описан метод поиска только по своим координатам, так же есть общий стандартный поиск, а объединённого поиска нет...

 

Самым красивым вариантом, как бы хотелось бы это видеть, было бы что-то вроде такого:

 

var myData = [

            { coords: [55.77, 37.46], text: 'Гусарова, 61' },
            { coords: [55.66, 37.48], text: 'проспект Мира, 10а' },
            { coords: [55.65, 37.42], text: 'Ленина, 181' }

];

var mySearchControl = new ymaps.control.SearchControl({
        options: {
            includeData: myData,

            noPlacemark: true,
            resultsPerPage: 5
        }});

2 комментария
API 2.1,элементы управления,поиск,контролы
Навигация кнопками по результатам поиска (тем, которые не suggests, а islets).
Удалённый пользователь
11 июня 2015, 20:23

Здравствуйте! Сколько не искал - не нашел ответа на свой вопрос. Подскажите, пожалуйста, куда копать.

Использую API v2.1.26. На карте стандартный searchControl. Если результатов поиска больше одного, то по нажатию Enter открывается ниспадающий список результатов (не подсказок, а именно результатов), при этом выбрать результат с клавиатуры нет никакой возможности: нажатие Tab уводит на следующую после карты ссылку, нажатие стрелки вниз открывает список саджестов. Нет даже возможности выбрать первый результат из списка повторным нажатием Enter (что было бы, вроде, логично). Пробовал ловить нажатия кнопок на инпуте searchControl-а, но это лишено смысла, т.к. элементы списка результатов не являются ссылками, и фокус на них поставить не получается.

Сопутствующий вопрос: почему в searchControl-е значение инпута обновляется по выбору одного из саджестов по нажатию Enter, а не по фокусу на саджесте, как это сделано на maps.yandex.ru? Так было бы гораздо удобнее набирать адреса - нажал пару букв, вниз, затем сразу запятую и дом. Вроде как такой подход сильно распространен, да и на самих Я.Картах он используется, а здесь получается, что жмешь стрелку вниз, затем на рефлексе жмешь запятую, и список саджестов пропадает, т.к. значение не было подставлено.

элементы управления,поиск,controls,API 2.1,SearchControl
Поиск по своим объектам, добавленным при помощи objectManager
Удалённый пользователь
11 июня 2015, 11:02

Собственно, как это реализовать? Пример из песочницы, само собой, не работает.

2 комментария
менеджер объектов,элементы управления,поиск,контролы,API 2.1
Ограничить поиск ('searchControl') Ленинградской областью
akon1982
2 июня 2015, 15:48

Добрый день. Никак у меня не получается ограничить поиск так, чтобы выдавались результаты только в Ленинградской области.

Например, пытался сделать так: 

var LenOblBounds = new YMaps.GeoBounds(new YMaps.GeoPoint(58.42032164, 27.75087718),new YMaps.GeoPoint(61.49507945, 35.74420556));
 var searchControl = new ymaps.control.SearchControl({
     options: {
         //boundedBy : [58.42032164,27.75087718][61.49507945,35.74420556],
         boundedBy : LenOblBounds,
         strictBounds : true
     }
    });
    globus.controls.add(searchControl);

 http://jsfiddle.net/dmfp8jj6/

 globus.controls.add('searchControl',{boundedBy : [58.42032164,27.75087718][61.49507945,35.74420556],strictBounds : true});

 

Но ничего не меняется. Например, ввожу "улица" - выдаёт Приморскую улицу в Одессе

 Ссылка на изображение подтверждающее это

Заранее спасибо.

2 комментария
API 2.1,элементы управления,поиск,область видимости,контролы
Можно ли сделать внешний input на поиск объектов внутри карты?
raketaprod
29 мая 2015, 16:02

Есть много меток на карте, есть searchControl, но он не подходит ввиду того, что остается внутри карты. Можно ли вынести эту строку за пределы карты в какой-нибудь div?

5 комментариев
API 2.1,поиск
Открытый балун при переходе с поиска
Serge
4 мая 2015, 12:25

Использую код из примера: https://tech.yandex.ru/maps/jsbox/2.1/custom_search

Ищу по своим объектам. Но не могу добиться, чтобы при переходе с поиска балун был открыт. Может кто-то знает как рещить эту задачу?

И еще, возможно ли в форме поиска заменить "Адрес или объект" на свой вариант?

3 комментария
API 2.1,события,поиск,контролы,балун,элементы управления
Кастомные точки при использование LoadingObjectManager
Аркадов Вадим
26 апреля 2015, 14:56

Приветствую.

1. Подскажите, пожалуйста, как для меток, подгружаемых с помощью LoadingObjectManager, добавить кастомные иконки. Проблема в том, что если пробежаться по всем загруженным объектам и назначить правильный пресет, то иконке не перерисовываются(

2. Как правильнее сделать кастомный searchControl, т.е. надо сделать инпут поиска объектов как на страндартных картах, только с кастомным видом. Стоит переопределить css для существующего или есть более правильный подход к этому?

 

UPD:

1. Для изменения свойств объекта на лету надо использоваться loadingObjectManager.objects.setObjectOptions

2. Остался открытым 2 вопрос)

 

3 комментария
API 2.1,элементы управления,поиск,контролы
Внешняя форма поиска + suggestView ищет кривовато, нежели встроенный searchControl
Удалённый пользователь
18 апреля 2015, 01:10

Собственно вся проблема описана в заголовке. Уточню лишь то, что искал "Россия, Москва, Авиамоторная улица , дом 2к11".

Первый показал вместо нужного координата "55.756108,37.699651".

Второй показал "55.760748,37.70788".

 

Вроде почти рядом, ан нет, не рядом. Первый ошибся даже улицей. Второй - прав.

 

"Первый" - Внешняя форма поиска + suggestView.

"Второй" - Встроенный searchControl.

 

Вопрос: Как быть?) Это баг или особенность?

 

P.S.: БлагоДарю за то, что оперативны, добры, всегда помогаете. Чего не скажешь о зажравшемся Гугле. :)

4 комментария
API 2.1,элементы управления,поиск,контролы,геокодирование
И еще раз про SuggestView и SearchControl
villord2011
17 апреля 2015, 20:29

Здравствуйте. уважаемое сообщество!

Есть задача. хочу реализовать расчет стоимости с тарифными зонами из точки А в точку Б. 

В блогах есть отличный пример http://ymapsapi.ya.ru/replies.xml?item_no=1165

Но хочу его изменить под свою задачу, нужно получить что-то вот такое

То есть поиск начальной и конечной точки не по клику на карте, а по результатам поиска полей формы с автокомплитом адресов находящихся за пределами карты.

Вот тут возникают вопросы. в примерах есть также вариант когда для это цели используется API Кладр в облаке, но он не подходит. так как автокомплит работает только для города, а улицы и адреса уже не подтягивает, даже если изменить параметр contentType. 

Другой вариант это SuggestView который появился в API 2.1. но почитав документацию и темы связанные с этим параметром. я так понял что нет нативного способа повесить поиск по карте на события SuggestView. Тем более кроме поиска интересует возможность подстановки заготовленных адресов из выпадающего списка. Которые я думал передавать в SearchControl. 

Поэтому прошу подсказать. может я просто уже запутался и что-то не так понимаю? Но есть ли какой-то не костыльный способ передачи данных формы полученных за пределами карты в SearchControl ? Так как пока в голову лезут только страшные костыли

9 комментариев
API 2.1,расчет стоимости доставки,поиск,контролы,маршрутизация,элементы управления
Баги в suggestView
ДедМорозик
17 апреля 2015, 09:13

Всем привет.

Очень понравился инструмент suggestView, но обнаружил два мелких бага.
Берем пример из док-и: http://jsfiddle.net/rmske8d5/

1. Периодически попадаются ошибки с разбиением адресов в подсказках:




2. Если мы выбрали предложенный адрес, а затем начинаем в нем писать окалесицу (например, добавив в начало строки цифру), то окно принимает странный вид (остается тень и высота 0):


Посмотрите, пожалуйста. Может можно что-нибудь придумать.

Спасибо. Всегда ваш, благодарный юзер. ;)

2 комментария
API 2.1,поиск,саджест
Закрыть выдающий результат поиска после клика по нему.
Василий К.
5 марта 2015, 17:46

Задача такая карта на сайте с формой поиска набираю например Санкт Петербург в выпадающем списке результаты поиска нажимаю на тот который мне нужен а список открыт. Как его закрыть? Какое событие реагирует на клик по области списка? И как закрыть SearchControl ?

2 комментария
API 2.1,элементы управления,поиск,контролы
Как вытащить координаты метки из отдельной функции
Андрей Кочанов
5 марта 2015, 12:36

Добрый день, подскажите как можно вытащить координаты метки, которая генерируется с помощью поиска по карте? Хочу передать эти координаты в переменную для определения машрута от этой метки до одной из существующих.

 

var mypoint = SearchAddress.MapView();

var start = mypoint;

 

метка формируется в функции SearchAddress.MapView() насколько я понимаю, но там идет работа с прототипами и из-за этого не могу понять как сделать.

Вот код поиска по адресу (код не мой, брал из свободного источника)

 


function SearchAddress(map, form) {

    this._model = new SearchAddress.Model(map);

    this._formView = new SearchAddress.FormView(form);

    this._mapView = new SearchAddress.MapView(map);

 

    this._attachHandlers();

}

 

SearchAddress.prototype = {

    constructor: SearchAddress,

    _attachHandlers: function () {

        this._formView.events

            .on('searchrequest', $.proxy(this._onSearchRequest, this));

    },

    _detachHandlers: function () {

        this._formView.events

            .off();

    },

    _onSearchRequest: function (e) {

        var promise = this._model.search(e.query);

 

        this._mapView

            .clear();

 

        promise.then(

            $.proxy(this._onSearchSuccess, this),

            $.proxy(this._onSearchError, this)

        );

    },

    _onSearchSuccess: function (result) {

        if(this._model.getResult()) {

            this._mapView

                .render(result);

        }

        else {

            this._formView

                .showMessage("Ничего не найдено.");

        }

    },

    _onSearchError: function (e) {

        this._formView.showMessage(

            this._model.getError()

        );

    },

    getModel: function () {

        return this._formModel;

    }

};

 

SearchAddress.MapView = function (map) {

    this._map = map;

    this._point = null;

};

 

SearchAddress.MapView.prototype = {

    constructor: SearchAddress.MapView,

    render: function (results) {

        var metaData = results.metaData.geocoder,

            result = results.geoObjects.get(0),

            balloonContent = '<p><small>по запросу:</small>&nbsp;<em>' + metaData.request + '</em></p>' +

                '<p><small>найдено:</small>&nbsp;<strong>' + result.properties.get('text') + '</strong></p>';

 

        this._point = new ymaps.Placemark(result.geometry.getCoordinates(), {

            balloonContentBody: balloonContent

        });

 

        this._map.geoObjects

            .add(this._point);

 

        this._setMapBounds(result.properties.get('boundedBy'));

 

        return this;

    },

    clear: function () {

        if(this._point) {

            this._map.geoObjects

                .remove(this._point);

            this._point = null;

        }

 

        return this;

    },

    getPoint: function () {

        return this._point;

    },

    _setMapBounds: function (bounds) {

        this._map.setBounds(bounds, {

            checkZoomRange: true,

            duration: 200,

            callback: ymaps.util.bind(this._onSetMapBounds, this)

        });

    },

    _onSetMapBounds: function () {

        this._point.balloon

            .open();

    }

};

 

SearchAddress.FormView = function (form) {

    this._form = form;

    this._controls = form.find('.control-group');

    this._message = form.find('.help-inline');

    this._input = form.find('.search-query');

 

    this.events = $({});

 

    this._attachHandlers();

};

 

SearchAddress.FormView.prototype = {

    constructor: SearchAddress.FormView,

    _attachHandlers: function () {

        this._form

            .on('submit', $.proxy(this._onFormSubmit, this));

        this._input

            .on('keydown', $.proxy(this._onInputChange, this))

            .typeahead({

                source: $.proxy(this._dataSource, this),

                items: this.getSuggestConfig().limit,

                minLength: 3

            });

    },

    _detachHandlers: function () {

        this._form

            .off("submit");

        this._input

            .off();

    },

    _onFormSubmit: function (e) {

        e.preventDefault();

 

        var value = this._input.val();

 

        if(value) {

            this.events.trigger($.Event('searchrequest', {

                query: value

            }));

        }

        else {

            this.showMessage('Задан пустой поисковый запрос.');

        }

    },

    _onInputChange: function (e) {

        this.hideMessage();

    },

    showMessage: function (text) {

        this._controls

            .addClass('error');

        this._message

            .removeClass('invisible')

            .text(text);

    },

    hideMessage: function () {

        this._controls

            .removeClass('error');

        this._message

            .addClass('invisible')

            .text('');

    },

    _dataSource: function (query, callback) {

        var config = this.getSuggestConfig(),

            request = $.extend({ query: query }, config);

 

        $.ajax({

            url: config.url,

            dataType: 'jsonp',

            data: request,

            context: this,

            success: function (json) {

                var results = [];

 

                for(var i = 0, len = json.result.length; i < len; i++) {

                    var result = json.result[i],

                        parent = result.parents && result.parents[0];

 

                    results.push(

                        (parent && (parent.name + ' ' + parent.type + ', ') || '') +

                        result.type + ' ' + result.name

                    );

                }

 

                callback(results);

            }

        });

    },

    getSuggestConfig: function () {

        return {

            url: 'http://kladr-api.ru/api.php',

            contentType: 'city',

            withParent: 1,

            limit: 5,

            token: '52024d6c472d040824000221',

            key: '6cf033712aa73a4a26db39d72ea02bb682c8e390'

        };

    }

};

 

SearchAddress.Model = function (map) {

    this._map = map;

    this._result = null;

    this._error = null;

};

 

SearchAddress.Model.prototype = {

    constructor: SearchAddress.Model,

    search: function (request) {

        var promise = ymaps.geocode(request, this.getDefaults());

 

        this.clear();

 

        promise.then(

            $.proxy(this._onSearchSuccess, this),

            $.proxy(this._onSearchFailed, this)

        );

 

        return promise;

    },

    clear: function () {

        this._result = null;

        this._error = null;

    },

    _onSearchSuccess: function (result) {

        this._result = result.geoObjects.get(0);

    },

    _onSearchFailed: function (error) {

        this._error = error;

    },

    getDefaults: function () {

        return {

            results: 1,

            boundedBy: this._map.getBounds()

        };

    },

    getResult: function () {

        return this._result;

    },

    getError: function () {

        return this._error;

    }

 

};

 

 

метка,Javascript,поиск,API 2.0,геокодирование