Клуб API Карт

При переходе между метками (всего 2-8 десятка) в ФФ и ИЕ8 тормозит

webdiktor
25 ноября 2010, 09:50
Слева список меток. Если кликнуть на элемент списка - на карте происходит переход к этой метке и она раскрывается.
В Опере и Хроме работает отменно. В ИЕ8 и ФФ тормозит!
Помогите, пожалуйста, как соптимизировать, ускорить.
Спасибо.
Сайт с проблемой - http://kuponator.ru
8 комментариев
Подписаться на комментарии к посту
для начала уберите панельку снизу карты.
насчет тормозов - у вас карта и драгается с тормозми, а в опере и хроме не тормозит потому что браузеры быстрые.

Также динамический резайз карты - это жесть - очень долгая операция
постоянный резайз - смерть


setInterval(function() {
newHeight = document.compatMode=='CSS1Compat'
и так далее


попробуйте прибить пару скриптиков которые просто так работают и проверить как получиться.

Прибил вот почти все скриптики: http://kuponator.ru/moscow/?lite , оставил только отображение предложений слева (работает только один раз) и переключение меток на карте. Динамического ресайза тоже нет. Всё равно очень медленно.


Мне кажется Яндекс.Маркет в ФФ тоже тормозит: http://market.yandex.ru/geo.xml?modelid=6219556&hid=91491&hyperid=6219556&grhow=shop . Особенно если увеличить масштаб и переключать магазины на разных концах карты. По-моему, если бы пришлось "лететь" на большие расстояния, тормозило бы, как у нас. Или я просто себя утешаю, как считаете?


Спасибо.

профайлер говорит что тупят "нутря" jQuery в якартах.
Мне такие весчи для дебага не доступны.
Но давайте попробуем

вариант номер 1.
измените тип документа -

http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
вариант номер 2
попробуйте вынести карты выше по дереву.
Например оставьте карту там где она есть, а настояшую карту накладывайте position:absolute на нее.
Типа как на gdeetotdom.ru/map или esosedi.ru или(вроде как) mirtesen
Ведь чем ближе нода к началу дерева - тем быстрее она "пашет"

Вариант 3 - удостоверьтесь что бы сами "своими" jqueryями в карту не лазиете.
Низя к одному элементу сразу с двух кверь доступ получать
Вы случайно скрыли строку копирайтов и логотип яндекса. Это нарушение пользовательского соглашения. Исправьте, пожалуйста.

Лезть в запедаленные методы мы не рекомендуем. Никто не гарантирует, что это останется неизменным в следующих версиях.
Такой код не очень хорош:

Offer.open($("a", $(map.getBalloon().getContent()._text)).attr("rel"), true);


Советую сделать минимальный набор кода с картой (без лишней обзвяки и верстки). Отключить все дополнительные скрипты. В итоге должно остаться немного верстки и ваш проблемный скрипт, который работает с картой.

Если он также будет работать медленно и не сможете найти причину, то дайте ссылку и посмотрим вместе. Если будет работать быстро, то начинайте постепенно подключать свои дополнительные скрипты и верстку. В итоге сможете локализовать ошибку и причину медленной работы карты.

Всем спасибо, не ожидал такого участия.


На странице http://kuponator.ru/moscow/?lite совсем убрал вёрстку и практически весь яваскрипт. Оставил только список предложений, скрипт, который однажды их отображает, карту и скрипт, который карту показывает.


Сменил doctype на Strict. Неужели это сказывается на производительности? 


#YMapsID в самом верху DOM, никаких своих jQuery кроме начальной загрузки страницы.


Но всё равно очень тормозит. Особенно видно, если отвести карту куда-нибудь в район Звенигорода, а потом нажать на любое предложение слева.


 


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

Пока, временно, на основном сайте вместо


map.panTo(placemark.getGeoPoint(), {                    
flying: 1,                    
callback: function(){ placemark.openBalloon(); }              
});


в IE и ФФ вызываю


map.setCenter(placemark.getGeoPoint());
placemark.openBalloon();


Стало смотреться намного лучше. Но хотелось бы, конечно, наладить анимацию.

эх, сначало хотел сказать что у вас карта в два раза шире чем надо - пофиксил, но не помогло
потом хотел сказать что очень часто в position:fixed яндекс тупит безбожно, ан опять промазал.

Давайте попробуем поступить по пацански - отключим "верхний" jquery, первым скриптом стартовав карты.
после чего говорим

window.$=window.jQuery=YMaps.jQuery;


те перебрасываем jquery карт в свой неймспейс..
Поможет ли?
А что будет если снять кучу ваших live ивентов?

Эхехе, кто обещал версию АПИ с облегченной отладкой

Оставил только jQuery карт, live заменил на обычный $("...").click(func);


К сожалению...