В ymapml элементам коллекции точек привешиваются properties, которые исользуются в шаблоне для балуна, а также я хочу использовать одно из свойств для назначения иконки конкретной метке. Итак, объекты из xml загружены, добавлены к карте, и я пытаюсь изменить иконку метки (это в then):
res.mapState.applyToMap(myMap);
myMap.geoObjects.add(res.geoObjects);
myMap.geoObjects.each(function (arr) {
arr.each(function (o) {
o.options.set('preset',
'twirl#redStretchyIcon'
);
});
});
Всё замечательно, иконка меняется (и также проверил, что properties из xml передались в свойства объекта карты). Но, увы, клик по меткам теперь не открывает балун со старательно приготовленным содержанием. Без o.options.set('preset', 'twirl#redStretchyIcon') балун работает как надо, но иконки не те...
Где засада?
Добавление. Собственно, засада в том, что опция 'preset' ранее ссылалась на xml, а теперь на стандартное имя, то есть понятие preset включает с себя очень полный set , а именно, не только внешний вид, но и содержание. Что не очень понятно, так как естветсвнно было бы как-то разделить данные и вид.
Таким образом, я делал, конечно, неправильно. А как правильно?
Добавление 2. Нашёл путь, как обмануть, природу Но всё же хочется знать, какой путь легальный-официальный.
myMap.geoObjects.each(function (arr) {
arr.each(function (o) {
var content = o.options
.get(
'balloonContentBodyLayout'
);
o.options.set('preset',
'twirl#redStretchyIcon'
);
o.options.set(
'balloonContentBodyLayout',
content);
});
});