Клуб API Карт

api 2.x и colorbox

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

не рисуется карта при загрузке во всплывающее окно, поиском по интернету нашел что нужно ее перерисовать, однако для api 2.x я такой функции не нашел. myMap.redraw(); из апи 1.х не работает

 

без скрытого div карта загружается. если же карта находится в скрытом блоке то появляется колесико загрузки колорбокса и все

 

ссылка http://www.elagent.ru/partner/partner_detail.php?ID=10904 

 

помогите решить проблему 

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

map.container.fitToViewport();

 

код получился вот таким. карта все равно не отображается

дайте ссылку на страничку...

 

ссылка выше если не заметили, (карта всплывает при крике по адресу, верней должна всплывать)

уберите для начала с кода myMap.redraw()

 ymaps.ready(function () {
  var myMap = new ymaps.Map("Map", {  center: [57.007666,40.979311], zoom: 12, behaviors: ["scrollZoom"]  });   var myGeocoder = ymaps.geocode('г. Ковров, ул. Шаумяна, д.16');  myGeocoder.then(  function (res) {  if (res.geoObjects.getLength()) {  // point - первый элемент коллекции найденных объектов  var point = res.geoObjects.get(0);  Office = point.geometry.getCoordinates();   myMap.panTo([Office], {delay: 0, duration: 0, flying:true, callback: function () {  myMap.balloon.open([Office], {content: "Вася и К" }, {closeButton: false,autoPan:true});  }});  }  },  function (err) {  //alert("Адрес не найден! Проверьте правильность ввода");  }  );  myMap.redraw();  });

 

Убрал, все равно не работает, никакого эффекта

1. myMap не будет видна в обработчике document.ready

2. document.ready может отработать раньше чем ymaps.ready

убрал myMap из document.ready и пробовал вставить myMap.container.fitToViewport();

в конец ymaps.ready, в колбек panTo и после panTo, в общем куда только можно, все равно не работает! :-(

Вставлять надо осознанно, а не наугад )

Может вам поможет пример "отображение карты в скрытом контейнере"

пример немного помог, карта отображается...

теперь возникла другая проблема: при первом открытии карт становится две, при втором 4, и так далее....

 

 что сделал не так? добавил удаление содержимого div#Map после закрытия колорбокса, теперь катр всегда две, как убрать одну из них?

 

у вас точка всегда одна и таже?

г. Ковров, ул. Шаумяна, д.16

на этой странице да, она по адресу из бд определяется
щас сделал с помощью JQuery чтоб только одна карта была,

$("a.map").colorbox({
inline:true, width:"50%",
onComplete:function(){
$("#Map>ymaps:first").css('display','none');
},
onClosed:function(){
$('#Map').empty();
}
});


можно ли сделать нормальными способами? 

и второй вопрос программистам:  может все такки стоит переписать часть кода апи чтоб разработчикам сайтов не изобретать велосипеды при попытке отобразить карту из скрытых блоков, ведь карта нужна не всем пользователям, а только тем кто очень заинтересовался, и грузить ее вместе со всей страницей я считаю не правильным, кому нужна карта откроют ее отдельно, кому нет пойдут дальше, к тому же ненужное отображение "кушает" дополнительный трафик пользователей.... надеюсь мое предложение не останется без внимания

Карту надо инициализировать (создать) один раз.

А при открытии окна просто менять ей центр myMap.setCenter(coords)

 

А насчет вашего предложения - вы можете уже сейчас загружать карту по-требованию

это то все понятно! может просто много написал что смысл фразы потерелся.

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