Клуб API Карт

Принадлежность объекта к коллекции

Пост в архиве.

Здравствуйте!

При добавлении объектов на карту объединяю их в коллекции, но данные могут приходить повторно, поэтому нужно проверить, добавлен данный объект в коллекцию или еще нет.

Сейчас есть такой код:

 

setGeoObjects : function (objects) {
  var self = this;
  $.each(objects, function (id, object) {
    if (!self.collections[object.type]) {
      self.collections[object.type] = new ymaps.GeoObjectCollection({}, {
      preset : 'twirl#' + object.type + 'Icon'
    });
  }
  // Сейчас для проверки вынужден записывать в отдельный объект загруженные объекты
  if (!self.geoObjects[id]) {
    var _object = new ymaps.GeoObject({
      geometry : {
        type : object.geometry.type,
        coordinates : object.geometry.coordinates
      },
      properties : {
      hintContent : object.name
    }
  });
 
  self.geoObjects[id] = _object; // Хочется избавиться от этого :-)
  self.collections[object.type].add(_object);
  } }); }

 

И второй вопрос: как правильно удалить конкретный объект из коллекции? 

2 комментария

Можно использовать метод интерфейса IParentOnMap

 

    var placemark = new ymaps.Placemark([55.7, 37.6]),          collection = new ymaps.GeoObjectCollection();
    collection.add(placemark);    map.geoObjects.add(collection);                                                                                                                                                                                                       console.log(placemark.getParent() === collection); // true

 

для удаления объекта из коллекции нужно хранить на него ссылку

collection.remove(placemark);