Клуб API Карт

Лаг перед отрисовкой карты

jW00LF
11 марта 2010, 10:23

Перед отрисовкой карты (до отрабатывания моего кода) место под картой серое и до того как начнут грузится картинки бывает задержка до минуты (инет стабильный и широкий). Есть подозрение что в это время идет проверка ключа. Кто-нибудь сталкивался с этим?

 

Код страницы

 

<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title> </title>
  <link type="text/css" rel="stylesheet" href="../css/map.css" />
  <script src="http://api-maps.yandex.ru/1.1/index.xml?key=*****==" type="text/javascript"></script>
  <script type="text/javascript" src="../js/map.js"></script>
</head>
 <body onload="MyLoad();" style="overflow: hidden;" >
  <div id="YMapsID" style="width:100%;height:100%"></div>
 </body>
</html>


function MyLoad() {
    Model.map = new YMaps.Map(document.getElementById("YMapsID"));
    Model.map.setCenter(new YMaps.GeoPoint(74.617072,60.771567), 5);
    Model.map.addControl(new YMaps.MiniMap(), new YMaps.ControlPosition(YMaps.ControlPosition.BOTTOM_LEFT));
    Model.map.addControl(new YMaps.ScaleLine(), new YMaps.ControlPosition(YMaps.ControlPosition.BOTTOM_RIGHT));
    Model.map.enableScrollZoom();
    YMaps.Events.observe(Model.map, Model.map.Events.Update, UpdateView);
}

10 комментариев
Подписаться на комментарии к посту
попробуйте пересесть с onLoad на domReady
В примерах к API приводится такой вариант:

YMaps.JQuery( MyLoad() )
$(document).ready(MyLoad);
или
YMaps.JQuery(document).ready(MyLoad)
$() без загрузки соответствующей библиотеки не будет работать.

YMaps.JQuery(document).ready(MyLoad)
и
YMaps.JQuery(MyLoad)
равноценны.

http://api.jquery.com/ready/
All three of the following syntaxes are equivalent:
    * $(document).ready(handler)
    * $().ready(handler) (this is not recommended)
    * $(handler)
тяжёлое детство, деревянные игрушку, prototype.js
Что вы подразумеваете под проверкой ключа? API загружается долго?

Я попробовал воспроизвести описанную ошибку вот этим кодом:
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
http://www.w3.org/1999/xhtml" style="width:100%;height:100%">

   
   
   
   



 


Ошибка не воспроизвелась, тайлы грузятся с нормальной скоростью.

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

К сожалению нет возможности выложить страничку в открытый доступ :(
Тайлы у меня тоже грузятся довольно шустро и без проблем. Условия опдробнее описать не получается потому как это происходит нерегулярно и повторить специально тоже не получается. Задержка именно перед тем как срабатывает событие onLoad. На странице кроме карты ничего нет. Такое ощущение что долго грузится апи карт, потому как эта страница лежит во фрейме (iframe) и время между тем как отрендерится фрейм и тем когда сработает onLoad доходит до 1.5 минут :( 

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

Вы можете сами найти причину, например, с помощью Firebug, проанализировав вкладку Сеть.

тестирую на другой машине, обращаюсь по IP, да и счетчиков не ставил, но вот мне тоже почему-то кажется что проблема на моей стороне. Странно конечно, что остальной сайт работает нормально, тормоза только на карте.

Вопрос на 5.
Задержка onload или задержка отображения яндекс карт?
Мне известны случаи когда апи грузиться, onLoad наступает, но карта не стартует.
Попробуйте запустить карту в , как я назваю, safe-mode

1.подключаем в head яндекс карты с отложеной загрузкой
2.на domReady( забудьте про onLoad! ) делаем что-то типа
setTimeout(function(){YMaps.load(function(){setTimeout(function(){startMaps()},1)},1);

желательно это все обернуть в конструкцию вида
(function(){
весь ваш код
})();

дабы обезопаситься от всех напастей, которые, как не странно, есть