iNickolay
@iNickolay

Из- за чего может не показываться карта по клику?

Здравствуйте!

Подскажите пожалуйста, в чём может проблема:

Имеем:
Подгружаем ajax'ом слой div1, в этом слое есть ссылка link и ещё один скрытый слой div2, при клике на link (id слоя карты получаем из ссылки) мы показываем скрытый слой div2 и инициализируем карту.
<div id="div1">
  <a href="#" id="link"><!-- По клику на эту ссылку мы создаём/показываем карту --></a>
  <div id="div2"><!-- Сюда грузится карта --></div>
</div>


Вырезка из кода:
function init() {
    var myMap
        tcName = $(this).attr('class'),
        tid = tcName.split(/\s+/)[1];
        // ... и другие переменные

    $('#show_fmap').bind({
        click: function(e) {
           e.preventDefault();

           // здесь идёт код (если надо, могу выложить)

           myMap = new ymaps.Map(tid, {
               center: [55.75399400, 37.62209300],
               zoom: 9,
               controls: ["trafficControl", "typeSelector", "rulerControl"]
           });
           // здесь идёт код (если надо, могу выложить)
    });
}
​
ymaps.ready(init);

У меня, на локальном сервере (сервер на apache, страничка без ajax'а) всё работает шикарно.
В продакшне (сервер на nginx, страничка как раз-таки с ajax'ом) всё может:
  • не работать,
  • работать с первого раза,
  • работать раза с 10 (после "обновить")


Теряюсь в догадках: это из-за ajax'а, или что с сервером? х_Х
  • Вопрос задан
  • 329 просмотров
Решения вопроса 1
@IceJOKER
Web/Android developer
Какой-то странный у вас код, но вот действия, как нужно поступать:
1. Изначально скрываем кнопку показа карты
2. В вызове функции init показываем кнопку и вешаем обработчик(обработчик можно и раньше вешать, но смысла не вижу, пока карта не подготовится)
3. По клику создаем карту и показываем

Если все правильно сделаете и по порядку, то все должно работать правильно
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы