Клуб API Карт

Ломается карта после добавления метода setBound()

Елена Чебанная
29 мая 2014, 16:33

 

При загрузке получается то, что на скрине. После клика по иконке кластера карта появляется. Одинаково во всех браузерах.

 

ymaps.ready(init);  

      function init () {

          var myMap = new ymaps.Map("map", {

                  center: [55.585749, 37.915356],

                  zoom: 3

              }),

         clusterer = new ymaps.Clusterer({

             preset: 'islands#invertedDarkOrangeClusterIcons',

             clusterHideIconOnBalloonOpen: false,

             geoObjectHideIconOnBalloonOpen: false

         }); 

   var  geoObjects = [],

     points = [[55.831903,37.411961], [55.763338,37.565466], [55.800584,37.675638], [55.775777,37.442180], [55.811814,37.440448], [55.751841,37.404853]];

     for(var i = 0, len = points.length; i < len; i++) {

         geoObjects[i] = new ymaps.Placemark(points[i]);

     }

     clusterer.add(geoObjects);

     myMap.geoObjects.add(clusterer);

     myMap.setBounds(clusterer.getBounds(), {

         checkZoomRange: true

     });

     }     

 Если setBounds() заменить на какой-нибудь setCenter(), такой проблемы не возникает. Подскажите, пожалуйста, как пофиксить это?

8 комментариев
Подписаться на комментарии к посту

Вы не могли бы дать ссылку на страницу?

Елена Чебанная
29 мая 2014, 17:50

К сожалению, это внутрикорпоративный сайт, поэтому - нет.

В таком случае использование апи противоречит пользовательскому соглашению

Елена Чебанная
29 мая 2014, 18:32

Я уточнила, сайт находится в стадии разработки, поэтому пока закрыт для общего доступа. 

Я скопировала код и вставила в песочницу - все отработало корректно. На картинке я вижу что-то похожее на табы. У вас случайно нет инициализации карты из скрытого контейнера? Если есть, то можно попробовать вызвать map.container.firToViewport();

Елена Чебанная
30 мая 2014, 15:48

Табы есть, да. Пример из песочницы с map.container.fitToViewport() не помог, к сожалению. Понимаю, что где-то налажала =(

Код:

 

   

     

   

   

   

 

 

 

       

  • Списком

       

  • На карте

     

     

     

     

      

    Кстати, в вашем коде забыта закрывающая кавычка, но это не могло повлиять

     

    src="http://api-maps.yandex.ru/2.1/

     

    а еще надо указать параметр языка

    У вас неверный порядок действий, вы выставляете setBounds, когда карта еще имеет контейнер нулевых размеров, отсюда такое поведение.

    Вот такая последовательность корректная 

    $("#active").click(function( ){

         $("#map").show( ) ;

         fix( ) ;

         myMap.setBounds(clusterer.getBounds( ) , {

         checkZoomRange: true

         }) ;

         }) ;