Клуб API Карт

Выход баллуна за пределы карты и за пределы экрана

D.Abramov8
11 февраля 2015, 15:35
Добрый день!
Использую предложенную Вами функцию observeEvents(map); на сайте ovgrf.ru, но все-таки в ветке Северный Кавказ (переход на главной карте), некоторые баллуны не выходят за предел карты. С чем это может быть связано?

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

С уважением,
Дмитрий А.
20 комментариев
Подписаться на комментарии к посту
Добрый день.
По поводу первого. Заметил небольшую ошибку. Балун правильно позиционирует только, если открывается. Если балун уже был открыт на другом элемент, то он некорректно сработает. В общем, я еще раз посмотрел ваш кейс. Удалите функцию observeEvents и просто поставьте в опции карты balloonPane: 'outerBalloon' - тогда балуны всегда будут открываться поверх краев карты.

По поводу второго, я не очень понял. Чего именно вы хотите добиться.
после добавления опции balloonPane: 'outerBalloon' и отключения observeEvents  все баллуны перестали перекрывать границы карты..т.е. задача не решена..
второй вопрос ...чтобы баллун не выходил за видимые границы дисплея - возможно такое сделать?
Вы поставили "balloonPane" не в опции, а состояние. Поставьте "balloonPane" сразу после "projection" и не забудьте удалить запятую на конце - это может привести к ошибке в IE8.

По поводу второго: Такой возможности по умолчанию в API нет.
первое решил. спасибо
по второму...жаль, а то наполненный баллун выходит вверх за дисплей, что и прокруткой к кнопке закрытия не дотянешься...
Посмотрел текущее решение - не учел кейс, когда балун весь за пределами карты. Все же нужно вернуть метод observeEvents
Обновил, чтобы не было багов.
https://yadi.sk/d/c_VPvqgOeKd8s
Сделал, не работает(..
Вызовите функцию observeEvents после добавления всех элементов на карту.
Нет, к сожалению. не работает...
Еще бы хотел уточнить...как исключить полосу прокрутки в баллуне? - задать параметры maxHeight и maxWidth?
Обновил функцию https://yadi.sk/d/c_VPvqgOeKd8s

>> как исключить полосу прокрутки в баллуне? - задать параметры maxHeight и maxWidth?
да
протестировал код...но баллун все также выходит за установленные рамки дисплея..т.е т.к. карта на сайте ovgrf.ru находится близко к верхней границе дисплея, то баллуны с большим количеством информации открываются и часть контента и кнопка закрытия баллуна уходит вверх, нет возможности закрыть баллун...можно по увеличительным стеклам пройти в Кавказ, а оттуда в Западный Кавказ...тма будет понятно...или просто карту на сайте ниже опускать?
За рамки дисплея он и не должен был перестать выходить. Я поправил функцию, чтобы при увеличенном масштабе карты балун не отображался за пределами карты. За рамки дисплея никак нельзя пофиксить.
Спасибо. По рамкам дисплея нужно самому изобрести?
Да, но я не думаю, что придумаете приемлемое решение. Может имеет смысл открывать балун в режиме панели. Как в этом примере https://tech.yandex.ru/maps/jsbox/2.1/balloon_and_hint балун открывается под картой
Кстати, вариант...только не пойму где там в коде настройки на такое отображение баллуна...задано координатами?
Опция называется balloonPanelMaxMapArea.
https://tech.yandex.ru/maps/doc/jsapi/2.1/ref/reference/Balloon-docpage/#param-options.panelMaxMapArea
По умолчанию балун в зависимости от размера карты сам выбирает внешний вид. Если поставить значение этой опции равной 0, то балун всегда открываться в "классическом" виде, а если Infinity, то всегда в режиме панели.

В этом примере устанавливается отображение в виде классического балуна. Опцию нужно будет задать у карты.
https://tech.yandex.ru/maps/jsbox/2.1/placemark_balloon_layout
Ок, спасибо, протестирую.
Скажите...где еще почитать подробнее о синтаксисе языка...чтоб лучше ориентироваться где опции, где свойства, какой уровень использовать и т.д....спасибо заранее.
например, где научиться писать вот такие выражения:

balloonMaxHeight: '400',

правильно ли я все написал?
Правильно. Но зависит от контекста.
Есть один очень старый и проверенный ресурс. http://javascript.ru/tutorial/foundation