Клуб API Карт

Не работает карта в IE8, Google Chrome 19 и Safari 5.0.5

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

Почему то не работает карта в браузерах  IE8, Google Chrome 19 и Safari 5.0.5 на всём портале

http://restorany.mesta3d.ru/samara/?vid=2

 Что не так делаю?  В чём причина?

20 комментариев
Sergey Konstantinov
28 января 2016, 04:37

Вызываете функцию init до готовности API

Замените init(); на ymaps.ready(init);

Благодарю! Заработало в Хроме, в Сафари нет( В IE8 заработало но не загружаются сами картинки карты - пишет что для данной области нет данных... Что делать?

Артем Кккк
28 января 2016, 04:37

А что делать если функции init() в коде яндекс карты нет??

эту функцию должы создать вы сами

назвать ее можно как угодно

Артем Кккк
28 января 2016, 04:37

Что должно быть внутри этой функции?

инициализация карты и работа с ней

Артем Кккк
28 января 2016, 04:37

 Ок. У меня функция называется 

fid_135556942691769636075

допустим после кода карты я пишу

Но ничего не меняется.

ее не надо вызывать, в ymaps.ready надо передать ссылку на функцию

http://api.yandex.ru/maps/doc/jsapi/2.x/dg/concepts/load.xml

Артем Кккк
28 января 2016, 04:37

 

Обернул


 

 Толку ноль. Вообще перестало работать

 

 

зачем параметр ymaps?

function fid_135556942691769636075(ymaps

с ним так точно работать не будет

 

почитайте какую-нибудь книжку по javascript

Артем Кккк
28 января 2016, 04:37

  Вообще-то он автоматом ставит в параметры функции парам. "ymaps".

Но, помещая в ymaps.ready() я пробовал по разному.

возможно в вашем случае проще использовать параметр onload=fid_135556942691769636075

в урле подключения АПИ

Артем Кккк
28 января 2016, 04:37

Именно так изначально и было. Грузит только в опере. В хроме только после открытия средств разработки появляется карта.

 

В любом случае, спасибо.

 

 

 

 

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

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

myMap.container.fitToViewport();

Артем Кккк
28 января 2016, 04:37

Изначально контейнер не скрыт. Он скрывается потом средствами js.

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

Артем Кккк
28 января 2016, 04:37

Частично решен вопрос. 

Убираем onload=fid_135556942691769636075

Подвешиваем на нажатие вкладки подгрузку карты

 fid_135556942691769636075(ymaps) 

Работает. Но способ ни разу не универсальный. В каждой карте функция носит свое название. Заказчик может сам вставлять карты без проблем. Но вносить изменения в код он не должен, иначе что это за автоматизация, когда пользователь должен самостоятельно править код.

 

Но способ ни разу не универсальный. В каждой карте функция носит свое название. Заказчик может сам вставлять карты без проблем. Но вносить изменения в код он не должен, иначе что это за автоматизация, когда пользователь должен самостоятельно править код.

чушь

функция должна называться аналогично тому что вы передаете в параметре onload.

Артем Кккк
28 января 2016, 04:37

О какой функции вы говорите? При чем тут onload? Я писал о том, что поддержка сказала удалить onload вообще. 

прочитайте как JSONP работает

Артем Кккк
28 января 2016, 04:37

Я не уверен что это как-то поможет решить данную проблему, ибо решение, хоть и не идеальное, я уже нашел.

Программно, в моем случае средствами xsl, подменяем название функции fid_******** на собственное, например, initmap. И вызываем её при выборе вкладки.