Клуб API Карт

как заставить SearchControl корректно работать?

poiradar
7 августа 2009, 17:32

Собственно задача тривиально, серч адреса и позиционирование маркера по выбранному из сеарчКонтрола результату. function addControls( map ){ //map.enableDragging(); map.addControl(new YMaps.TypeControl()); map.addControl(new YMaps.ToolBar()); map.addControl(new YMaps.MiniMap()); map.addControl(new YMaps.ScaleLine()); var searchControl=new YMaps.SearchControl(); map.addControl(searchControl); YMaps.Events.observe(searchControl, searchControl.Events.Select, function () { map.removeOverlay(geoResult); if (this.length()) { geoResult = this.get(1); map.addOverlay(geoResult); map.setBounds(geoResult.getBounds()); }else { alert("Ничего не найдено") } }); map.addControl(new YMaps.Zoom()); } К сожалению, структура объекта передаваемого по Селекту не отвечает оной в документации: у результата нету длинны. Возможно конечно что я делаю что-то не так :) Любая помощь желанна!


выдержка из апи дока.

События

Имя Описание
Select Выбран один из результатов поиска.

В callback-функцию передаются два аргумента:

  • указатель на объект YMaps.SearchControl;
  • указатель на выбранный объект YMaps.GeocoderResult.


 отдых в севастополе 

2 комментария
Подписаться на комментарии к посту
люди, больная тема. Это ведь супермодная фича нового апи.

подскажите как вернуть точку с геолукапа.
Первым параметром передается указательна SearchControl, поэтому обработчик события будет выглядеть примерно так:
YMaps.Events.observe(searchControl, searchControl.Events.Select, function (searchControl, geoResult) {
    map.addOverlay(geoResult);
    map.setBounds(geoResult.getBounds());
});