Клуб API Карт

setIconContent увеличивает время обработки скрипта

phmc
21 мая 2010, 10:38

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


Столкнулся с такой проблемой. Есть скрипт вида: 


pm = [

 

new YMaps.Placemark(new YMaps.GeoPoint(gm_lng,gm_lat)),

new YMaps.Placemark(new YMaps.GeoPoint(gm_lng,gm_lat)),

new YMaps.Placemark(new YMaps.GeoPoint(gm_lng,gm_lat)),

new YMaps.Placemark(new YMaps.GeoPoint(gm_lng,gm_lat)),

new YMaps.Placemark(new YMaps.GeoPoint(gm_lng,gm_lat)),

...

];


var gCollection = new YMaps.GeoObjectCollection();

for(var i = 0; i < pm.length; i++) {

    pm[i].setIconContent(i);

    gCollection.add(pm[i]);

}

map.addOverlay(gCollection);

 


Стоит убрать points[i].setIconContent(i); и время обработки скрипта уменьшается в разы - от нескольких секунд до практически мгновенного отображения. С чем связана такая задержка  и как это устранить?

4 комментария
Подписаться на комментарии к посту
Azat Razetdinov
21 мая 2010, 11:38
При пустом содержимом для отображения метки используется одна картинка. При задании контента для той же цели используется резиновая вёрстка. При большом количестве меток она может тормозить. Если хотите, могу поделиться кастомным макетом, который используется на maps.yandex.ru и вместо резиновой вёрстки просто наносит цифру на картинку.
Макет - это было бы неплохо.

Кстати, если вместо резиновой верстки просто наносится цифра на картинку - значит ли это что в случае большого числа оно может просто не уместиться в картинку метки?


Azat Razetdinov
21 мая 2010, 12:11

http://razetdinov.narod2.ru/download/compact-icon.css

http://razetdinov.narod2.ru/download/compact-icon.js

Пример: new YMaps.Placemark(center, {style: 'compact#greenPoint'});

Действительно, при большом числе надпись может не влезть в картинку. Можно допилить макет, чтобы в зависимости от длины надписи использовались картинки разной ширины. Но это уже в ваших руках.

Спасибо