Клуб API Карт

Создание элемента управления в API 2.0

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

Пытаюсь перевести пример, приведенный для API 1.x на API 2.0

Споткнулся на п.2 и 3 из примера: создание элемента управления и обработчиков onAddToMap и onRemoveFromMap. Где ошибка, подскажите plz

 

var map;
ymaps.ready(function () {
var map = new ymaps.Map("id123", {center: [55, 37], zoom: 5, type: "yandex#map", behaviors: ["default", "scrollZoom"]});
map.controls.add("zoomControl");

var group = new ymaps.GeoObjectCollection();
var pm = new ymaps.Placemark([55,37], {iconContent: "Метка", balloonContent: "метка", name:'1', description:'Inf-2'});
group.add (pm);
map.geoObjects.add(group);

var grp = new OfficeNavigator (group);
map.controls.add (grp);
});

function OfficeNavigator (offices) {
     this.onAddToMap = function (map,position){
        $('#r1').html('1 шаг'); // флаг того, что обработчик был вызван
     };
     this.onremoveFromMap = function () {
     };
}:

 

4 комментария

В интерфейсе нет методов onAddToMap и onRemoveFromMap. При создании собственных контролов стоит ровняться на заявленные интерфейсы, чтобы не наступить на грабли в будущем. 
 

Пример контрола в API 2.0 можно глянуть здесь, а посмотреть как он работает здесь (это крестик в центре карты).

Аналогичный пример я и в песочнице видел.

Если я правильно понял логику работы примера с офисами под API 1.x, то там при добавлении элемента на карту формируется список офисов ( this._generateList() ). И к каждому объекту списка привязывается слушатель клика, который позиционирует карту на этом объекте (_this.map.panTo (obj.GeoPoint() ).

Воспроизвести этот же алгоритм в API 2.0 у меня не получается.

 

Неужели никто больше идею не подкинет?

Вам же   подкинул пример контрола.

Что именно не получается?