ObjectManager добавление объекта в текущий слой

226
07 февраля 2018, 14:43

Добрый день! добавляю множество меток на карту чеерез ObjectManager, далее кликаю по одиночному объекту по данным которого должно отрисовываться Polygon, и добавляю в ObjectManager -> в массив объекта который уже выведен на карту. В objects элемент виден, но на карте он не отображается.

var objectTest = {};    // создаю объект для подгрузки его в ObjectManager
objectTest.type = "FeatureCollection";
objectTest.features = [];
for (var i = 0; i < coord.length; i++) {
    var objectPoint = {};
    objectPoint.type = "Feature";
    objectPoint.id = coord[i].id;
    objectPoint.geometry = {
        "type" : "Point",
        "coordinates" : [coord[i].latitude, coord[i].longitude]
    };
    objectPoint.properties = {
        //      "clusterCaption": "У меня нестандартный курсор",
        "hintContent" : "lac: " + coord[i].lac + " cid: " + coord[i].cid,
        "id" : coord[i],
        "az" : coord[i].azimut,
        "sector" : coord[i].corner,
        "length" : coord[i].length,
        "lat" : coord[i]['latitude'],
        "lon" : coord[i]['longitude'],
        "child" : false,
        "lac" : coord[i].lac,
        "cid" : coord[i].cid            
    };
    objectPoint.options = {
        "iconLayout" : "default#imageWithContent",
        "iconImageHref" : "image/1.gif",
        "iconImageSize" : [30, 42]
    };
    objectTest.features[i] = objectPoint;
}
console.log(objectTest);

objectManager = new ymaps.ObjectManager({ // создаю менеджер
    clusterize : true,
    clustergroupByCoordinates : true,
    clustermargin : 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,
    groupByCoordinates : true,
    hideIconOnBalloonOpen : false,
    clusterBalloonContentLayout : BalloonContentLayout
});
//      ################################################################################################################################
objectManager.add(objectTest);   // добавляю объект в ObjectManager
if(myMap.geoObjects.getLength() > 0) {
    myMap.geoObjects.removeAll();
    myMap.geoObjects.add(objectManager);
} else {myMap.geoObjects.add(objectManager);}
objectManager.objects.events.add('click', function(e) {  // навешиваю событие на одиночный объект
    console.log(e.get('objectId'));
    var objectId = e.get('objectId'),
    overlay = objectManager.objects.overlays.getById(objectId);
    overlay.add(setCluster.call(e.get('overlay')._data.properties));
    console.log('overlay');
    console.log(overlay.getData());
    objectTest.features.push(setCluster.call(e.get('overlay')._data.properties));   //  добавляю объект из функции в объект нанесенный на карте
    console.log(objectTest.features);
    console.log(objectManager.objects.overlays.getAll());
});
setCluster = function() {
    console.log(this.child);
 return {
  "type": "Feature",
  "id": 2,
  "options": {"fillColor": "#66ff99", "strokeColor": "#55aa99", "opacity": 0.5},
  "properties": {"balloonContent": "Содержимое балуна", "hintContent": "Текст подсказки"},
  "geometry": {
    "type": "Polygon",
    "coordinates": [
      [
        [
          55.810156563965364,
          37.777862548828125
        ],
        [
          55.82635894724889,
          37.777862548828125
        ],
        [
          55.82635894724889,
          37.81837463378906
        ],
        [
          55.810156563965364,
          37.81837463378906
        ],
        [
          55.810156563965364,
          37.777862548828125
        ]
      ]
    ]
  }
}
};
Answer 1

Вопрос решен, оказалось просто добавить в objectManager.

objectManager.objects.events.add('click', function(e) {
    objectManager.add(setCluster());
});
setCluster = function() {
return {
  "type": "Feature",
  "id": 0,
  "options": {"fillColor": "#255F06", "strokeColor": "#255F06", "opacity": 0.5},
  "properties": {"balloonContent": "Содержимое балуна", "hintContent": "Текст подсказки"},
  "geometry": {
    "type": "Polygon",
    "coordinates": [
      [
        [
          55.801280971180454,
          37.552642822265625
        ],
        [
          55.81285742969946,
          37.518310546875
        ],
        [
          55.8367712028016,
          37.540283203125
        ],
        [
          55.80784138701898,
          37.57118225097656
        ],
        [
          55.801280971180454,
          37.552642822265625
        ]
      ]
    ]
  }
}
};
READ ALSO
Правильно ли я делаю, закрытие блока, JS

Правильно ли я делаю, закрытие блока, JS

Начал знакомство с JSМне необходимо закрывать блок по клику на крестик

240
Не устанавливается проект Gatsby

Не устанавливается проект Gatsby

Я пытаюсь установить проект с помощью Gatsby, но получаю ошибкиИ так со всеми проектами из официального репозитория

188
Создание jquery функции

Создание jquery функции

Всем приветЕсть следующая функция:

274