Клуб API Карт

Не устанавливаются стандартные значки для меток для карт 1.x

Topor Alexei
28 июня 2012, 11:45

Дня два назад заметил, что не устанавливается стиль значка отличный от дефолтного.

У меня был такой код:

//создаем новый слой на карту

var ml = new YMaps.YMapsML('http://maps.yandex.ru/export/usermaps/2x4B81wI8Ep7AsnDGVLKuvYyWLBDyoU1/');

map.addOverlay(ml);

// Обработчик неудачной загрузки YMapsML
YMaps.Events.observe(ml, ml.Events.Fault, function (ml, error) {
alert('Ошибка: ' + error);
});

YMaps.Events.observe(ml, ml.Events.Load, function () {

ml.get(0).setStyle('default#houseIcon');

});

 

До не давнего времени он работал. Сейчас перестал.

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

Пробовал изменить код следующим образом:


//создаем новый слой на карту

var ml = new YMaps.YMapsML('http://maps.yandex.ru/export/usermaps/2x4B81wI8Ep7AsnDGVLKuvYyWLBDyoU1/');

map.addOverlay(ml);

// Обработчик неудачной загрузки YMapsML
YMaps.Events.observe(ml, ml.Events.Fault, function (ml, error) {
alert('Ошибка: ' + error);
});

// Создадим стили для меток гостиниц
var hotelStyle = new YMaps.Style();
hotelStyle.iconStyle = new YMaps.IconStyle();
hotelStyle.iconStyle.href = "http://api-maps.yandex.ru/i/0.4/icons/house.png";
hotelStyle.iconStyle.size = new YMaps.Point(18, 18);
hotelStyle.iconStyle.offset = new YMaps.Point(-9, -18);
YMaps.Styles.add('delfin#hotel', hotelStyle);

YMaps.Events.observe(ml, ml.Events.Load, function () {

ml.get(0).setStyle('delfin#hotel');

});


Тоже не помогает.
Кто-нибудь может помочь разобраться в ситуации?
Версия АПИ 1.х

2 комментария
Подписаться на комментарии к посту

Привет

На днях переделали алгоритм стилизации значков, возвращаемых из моих карт.

Исправили по причине того что этот алгоритм не работал с АПИ 2.0 (там были кривые значки)

 

Чтобы поправить тебе нужно перекрыть стиль каждой метке в коллекции.

По сути это 2 строчки

 

YMaps.Events.observe(ml, ml.Events.Load, function () {
    ml.get(0).forEach(function (pl) {
        pl.setStyle('default#houseIcon');
    });
});

Спасибо, заработало.