Клуб API Карт

Как задать margin balloon от края карты

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

Никак не пойму, где и в каком формате задать margin balloon от края карты в preset.

Задача: У меня поверх карты расположен блок (панель фильтра), поэтому мне необходимо избежать ситуации, когда балун открывался бы под ним. Другими словами, изменить margin у balloon'a.

Для решения задачи, можно изменить margin как параметр у всех balloon'ов на карте, либо в preset для меток, который я создал.

Мои варианты:

YMaps.option.presetStorage.add('new#preset', {

    iconImageHref: 'src-to-image.png',

    iconImageSize: [23, 34],

    iconImageOffset: [-10, -15],

    hideIconOnBalloonOpen: true,

    openEmptyBalloon: true,

    balloonOptions: {

        margin: [70, 10, 20, 250],

        maxWidth: 150

    }

 

});

  

YMaps.BalloonOptions.margin = [70, 10, 20, 250];

  

В документации: 

http://api.yandex.ru/maps/doc/jsapi/1.x/ref/reference/balloonoptions.xml#margin

 

Никак не разберусь в каком месте и как указать этот параметр, чтобы решить задачу.

Заранее спасибо, за идеи и помощь.

6 комментариев

Вы какое АПИ используете?

Тогда причем тут документация на 1.х?

В документации: 

http://api.yandex.ru/maps/doc/jsapi/1.x/ref/reference/balloonoptions.xml#margin

Ой, действительно, я как-то не обратил внимание, попал на неё через поиск по документации. Видимо слишком был рад, что нашел то, что искал))

 

В версии 2.0 нашел два упоминания об эффектах, похожих на требуемые

zoomMargin http://api.yandex.ru/maps/doc/jsapi/2.x-stable/ref/reference/Map.xml

autoPanMargin http://api.yandex.ru/maps/doc/jsapi/2.x-stable/ref/reference/Balloon.xml


Оба варианта ошибки не вызывают, но не дают нужного эффекта.

myMap.options.zoomMargin = [70, 10, 20, 250];

myMap.options.autoPanMargin = [70, 10, 20, 250];

Не-не во-первых опции карты это не просто объект с полями.

Это интерфейс с методами:

optionsoption.ManagerОпции карты.

 

Во-вторых надо смотреть на тип передаваемого значения

autoPanMarginNumber Отступ от угла viewport-а карты при действии autoPan.

Number, значит что отступ для всех сторон одинаковый задается, - одним числом, а не массивом

 

В-третьих, если задавать опции балуна не балуну, а карте, их надо префиксировать, добавляя впереди "balloon"

попробуй как-то так:

myMap.options.set('balloonAutoPanMargin', 300);

Да! Отлично, всё работает!

Огромное спасибо, я весь день над этой документацией провёл и пытался по-разному сделать. Всё равно не доконца понимаю всех принципов этого API. Но буду дальше разбираться -- ещё есть задачи.