Клуб API Карт

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

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

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

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

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

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

>> как исключить полосу прокрутки в баллуне? - задать параметры maxHeight и maxWidth?
да
протестировал код...но баллун все также выходит за установленные рамки дисплея..т.е т.к. карта на сайте ovgrf.ru находится близко к верхней границе дисплея, то баллуны с большим количеством информации открываются и часть контента и кнопка закрытия баллуна уходит вверх, нет возможности закрыть баллун...можно по увеличительным стеклам пройти в Кавказ, а оттуда в Западный Кавказ...тма будет понятно...или просто карту на сайте ниже опускать?
Всеволод Шмыров
18 февраля 2015, 12:04
За рамки дисплея он и не должен был перестать выходить. Я поправил функцию, чтобы при увеличенном масштабе карты балун не отображался за пределами карты. За рамки дисплея никак нельзя пофиксить.
Спасибо. По рамкам дисплея нужно самому изобрести?
Всеволод Шмыров
20 февраля 2015, 17:40
Да, но я не думаю, что придумаете приемлемое решение. Может имеет смысл открывать балун в режиме панели. Как в этом примере https://tech.yandex.ru/maps/jsbox/2.1/balloon_and_hint балун открывается под картой
Кстати, вариант...только не пойму где там в коде настройки на такое отображение баллуна...задано координатами?
Всеволод Шмыров
20 февраля 2015, 17:49
Опция называется 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',

правильно ли я все написал?
Всеволод Шмыров
20 февраля 2015, 23:57
Правильно. Но зависит от контекста.
Есть один очень старый и проверенный ресурс. http://javascript.ru/tutorial/foundation