Клуб API Карт

Часть балуна выходит за пределы карты

greendumb
27 февраля 2011, 20:01

Здравствуйте! Помогите решить проблему: вывожу метки и открываю/закрываю балуны таким кодом

   YMaps.jQuery("#show_arc").bind("click", function(){
map.removeAllOverlays();
var arc = new YMaps.YMapsML("/xml/arc.xml");
map.addOverlay(arc);

   YMaps.Events.observe(arc, arc.Events.Load, function (arc) {
      arc.get(0).forEach(function (obj) {

      YMaps.Events.observe(obj, obj.Events.BalloonOpen, function (obj) {
         map.setZoom(16, { smooth: true, position: obj.getGeoPoint() });
       });

       YMaps.Events.observe(obj, obj.Events.BalloonClose, function (obj) {
         map.panTo(new YMaps.GeoPoint(35.376940479483046, 45.03851500222226), {
             flying: 1,
             callback: function () {
             map.setZoom(13, { smooth: true });
             }
         });
     
       });
  });
});
     
});

Балун получается большой, т.к. в нем много текста - в итоге часть балуна выходит за пределы карты. Вот пример.("Памятники архитектуры..")

Заранее благодарен!

7 комментариев
Подписаться на комментарии к посту
На расширении 1920х1080 всё хорошо
я тоже заметил что через раз работает

можно попробовать повесить обработчик на Click вместо BalloonOpen

и балун открывать после того как плавный зум закончился

в callback-е

Можете, пожалуйста, привести пример кода.

1.  уберите

 

map.addOverlay(arc);

 

 2. вместо BalloonOpen

      arc.get(0).forEach(function (obj) {// превентим оригинальный балун obj.setOptions({hasBalloon: false});
      YMaps.Events.observe(obj, obj.Events.Click, function (obj) {
         map.setZoom(16, {                smooth: true,                position: obj.getGeoPoint(),                callback: function () {obj.openBalloon();         }         });
       });

 

 
// превентим оригинальный балун obj.setOptions({hasBalloon: false});map.addOverlay(obj);
Большое спасибо, все получилось!