яндекс карты доступ к элементу кластера через балун

315
29 января 2018, 07:29

Добрый день! Существует трудность, добавляю Placemarks на карту, на каждый Placemark навешано событие click, через кластеризатор, точки с одинаковыми координатами кластеризуются, создан макет балуна, в балун выводиться id метки, по клику на строчку в балуне хочу инициировать событие навешанное на Placemark состоящее в кластере. Не могу получить ссылку на точку в кластере.

BalloonContentLayout = ymaps.templateLayoutFactory.createClass(
        '<ul class=list>' + 
        '{% for geoObject in properties.geoObjects %}' + 
        '<li id="{{geoObject.properties.lac}}{{geoObject.properties.cid}}"></li>' +
        '{% endfor %}' + 
        '</ul>', {
        build : function() {
            BalloonContentLayout.superclass.build.call(this);
            geoObjects = this.getData().properties.get('geoObjects');
            var fielsObjects = {};
            for (var i = 0; i < geoObjects.length; i++) {
                var element = document.getElementById(geoObjects[i].properties._data.lac+geoObjects[i].properties._data.cid);
                element.onclick = getSectorClaster;
                element.innerHTML = geoObjects[i].properties._data.hintContent;
            }
        },
        clear : function() {
             this.getElement().innerHTML = '';
            BalloonContentLayout.superclass.clear.call(this);
        }
    });
    clusterer = new ymaps.Clusterer({
        groupByCoordinates : false,
        margin : 0,
        clusterIcons : [{
            href : 'image/1.gif',
            size : [40, 40],
            offset : [-20, -20]
        }, {
            href : 'image/1.gif',
            size : [60, 60],
            offset : [-30, -30]
        }],
        clusterDisableClickZoom : true,
        clusterOpenBalloonOnClick : true,
        clusterBalloonPanelMaxMapArea : 0,
        clusterBalloonContentLayout : BalloonContentLayout,
        hideIconOnBalloonOpen: false
    });
    getPointData = function(iCoord) {
        return {
            id : iCoord.operator,
            az : iCoord.azimut,
            sector : iCoord.corner,
            length : iCoord.length,
            lat : iCoord['latitude'],
            lon : iCoord['longitude'],
            child : false,
            lac : iCoord.lac,
            cid : iCoord.cid,
            hintContent : "lac: " + iCoord.lac + " cid: " + iCoord.cid,
            //          clusterCaption: 'метка <strong>' + iCoord.cid + '</strong>'
        };
    };
    getPointOptions = function() {
        return {
            iconLayout : 'default#image',
            iconImageHref : 'image/1.gif',
            iconImageSize : [20, 40]
        };
    };
    getSector = function(e) {
        if (!e.get('target').properties.get('child')) {
            var sector = getAreaCoord([e.get('target').properties.get('lat'), e.get('target').properties.get('lon')], e.get('target').properties.get('az'), e.get('target').properties.get('sector'), e.get('target').properties.get('length'));
            var triangle = new ymaps.Polygon([[[e.get('target').properties.get('lat'), e.get('target').properties.get('lon')], sector.point2, sector.point3]], {
                id : e.get('target').properties.get('lac') + e.get('target').properties.get('cid'),
                hintContent : "az: " + e.get('target').properties.get('az') + " sec: " + e.get('target').properties.get('sector') + " len: " + e.get('target').properties.get('length')
            }, {  });
            console.log(triangle + "  triangle  ");
            console.log(e.get('target') + "  placemark  ");
            triangle.setParent(e.get('target'));
            e.get('target').properties.set('child', true);
            (e.get('target').getParent()).getParent().add(triangle);
        } else {
            (e.get('target').getParent()).getParent().each(function(item, i) {
                if (item.properties != undefined) {
                    if (item.properties._data.id === (e.get('target').properties.get('lac') + e.get('target').properties.get('cid'))) {
                        item.getParent().remove(item);
                        e.get('target').properties.set('child', false);
                    }
                }
            });
        }
    };
    getSectorClaster = function () {
        console.log(this.id);
        var cluster = objectManager.clusters.balloon.getData();
        console.log(cluster);
    };
    geoObjects = [];
    for (var i = 0; i < coord.length; i++) {
        geoObjects[i] = new ymaps.Placemark([coord[i]['latitude'], coord[i]['longitude']], getPointData(coord[i]), getPointOptions());
        geoObjects[i].events.add('click', function(e) {
            getSector(e)
        });
    }
    clusterer.add(geoObjects);
    this.add(clusterer);
    myMap.geoObjects.add(this);
    clusterer.events.add('balloonopen', function(e) {
        console.log(e.get('cluster').properties);
        console.log(e.get('Placemark').properties);
//      baloonContentData = e.get('cluster').properties;
READ ALSO
TypeError: &#39;undefined&#39; is not a constructor ошибка new Audio() в сафари

TypeError: 'undefined' is not a constructor ошибка new Audio() в сафари

Доброго времени, тестирую скрипт в сафари:

262
Отправка файла через AJAX, используя PHPMailer

Отправка файла через AJAX, используя PHPMailer

Не отправляется прикрепляемый файлС форм данные приходят, но только не сам файл

301
Не одинаковы логические выражения

Не одинаковы логические выражения

Добрый день, хочу спросить, почему здесь в переменной if_2 выражения

205
Запуск loader пока грузиться страница

Запуск loader пока грузиться страница

Здравствуйте, как сделать loader на сайте? Отправляется запрос через AJAX, далее пока грузит вывод, показываем loader, ну типа картинка загрузкиНе...

167