Клуб API Карт

API 2.1 - beta: Как изменять порядок элементов управления?

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

Создаю карту со стандарным набором элементов управления, добавляю еще два элемента ("категория товаров" и "тип магазинов") - всегда между ними встает кнопка поиска. Меняю местами - кнопка все равно между ними.

Создаю карту с набором элементов управления, исключаю из этого набора поиск - добавляю свои элементы - все ок (вижу две мои кнопки рядом).
Добавляю отдельно new ymaps.control.SearchControl - все равно встает между двумя моими элементами.



Как их позиционировать то? Уж очень бета своими контролами понравилась!

 

Насколько опасно использовать бету в public проекте? И чем это чревато?

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

Для этого нужно использовать опцию floatIndex, при добавлении контрола в менеджер контролов (myMap.controls)

Если Вы хотите изменить положение уже добавленного, то тут Вас ждет сюрприз.

Разработчики забыли открыть уже задокументированный метод get (вот и пример того что такое бета-версия)

Поэтому, до выхода следующего релиза беты, придется искать этот контрол перебором всех контролов:

 

// myMap.controls.get('searchControl').options.set('floatIndex', 500); // не работаетmyMap.controls.each(function (c) {        if(c instanceof ymaps.control.SearchControl) {            c.options.set('floatIndex', 500);        }    });});

 

Использовать или не использовать бета-версию каждый решает для себя сам.

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

Я где-то читал, что теперь у вас есть возможность при подключении API указывать номер версии. Вы не рассматривали вариант, сделать аналогичное с бетой? Или такое есть уже?

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

Мы версионируем бету, сейчас 2.1-dev это версия 2.1.2. Можете работать по описанной вами схеме. Но только учтите, что ровно в полночь карета превратится в тыкву после релиза мы какое-то время подержим бету, а потом все-таки ее уберем насовсем.

конкретно в вашем случае легче инстанцировать контрол отдельно, чтобы не перебирать все.

var searchControl = new ymaps.control.SearchControl();
myMap.controls.add(searchControl, {
    float: 'left',
    floatIndex: 500
}