Почему не меняется шаблон метки на карте в фабрике?

Мне нужно при определенном зуме изменить шаблон метки (беру пример из документации) Но в моём случае не работает. А именно:

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

Для начала то, как я размещаю элементы на карте:

  1. Составляю features - json объект, со списком точек, в которые передаю данные (id, тип, геометрия, проперти, опции. В опции определяю макет иконки)
    features[{type: ..., id:..., geometry:{}, options: {iconLayout: pointFunc(zoom)} ... }]
    objectManager.add(feautures);
    map.geoObjects.add(objectManager);
  1. Макет иконки, это класс templateLayoutFactory, в моём случае функция, которая его возвращает ,как в примере документации:

       var pointFunc = function (getZoom) {
       var pointLayoutWithImage = ymaps.templateLayoutFactory.createClass('<div class="map-point-icon-image"><img src="$[properties.data.type_ico]" /><div class="additional-info">$[properties.data.option_cost_prepaid]</div></div>', {
     build: function () {
         pointLayoutWithImage.superclass.build.call(this);
         var element = this.getParentElement().getElementsByClassName('map-point-icon-image')[0];
    
         if (!this.inited) {
             this.inited = true;
    
             logistics.map.events.add('boundschange', function () {
                 var currentZoom = getZoom();
    
                 if (currentZoom > 11) {
                     element.classList.add('big-zoom');
                     element.style.width = '200px';
                     this.rebuild();
                 }
             } , this);
         }
         var options = this.getData().options;
         var shape = {
             type: 'Circle',
             coordinates: [23, 23],
             radius: 23,
         };
         console.log(this.getData().geoObjects);
         options.set('shape', shape);
     },
     });
    
     return pointLayoutWithImage;
     };
    

И вот тут и кроется проблема, в примере this.getData().geoObject.getMap(); возвращает объект карты, а у меня если вызывать в функции шаблона метки - undefined. element доступен, меняет класс, меняет стиль ширины, но в пределах функции, на самом деле на карте не меняется ничего. Воспрос - как заставить карту увидеть эти изменения?

UPD: заставил карту менять класс точки https://jsfiddle.net/yus7z8a0/ но не меняется форма, если не перерендерится тайл. А rebuild принудительный приведет к бесконечной перезагрузке.


Ответы (0 шт):