Клуб API Карт

Скрытие объектов по 2-м условиям

Мишко Kushchenko
29 марта 2013, 19:16

Имеется модель данных, где объект имеет два свойства - размер и форму

Как скрыть объекты по одному свойству понятно - делить на списки,  создавать по каждому списку коллекцию и  map.geoObjects.add/remove

А как это можно организовать для двух свойств?

 

К примеру объект имеет 6 размеров и 3 формы. В сумме это даст 18 коллекций. При этом для скрытия/показывания нужно использовать 9 кнопок

3 комментария
Подписаться на комментарии к посту

Сделайте вспомогательный класс, который умеет хранить массив геообъектов и добавлять-удалять их на карту. Для каждого признака заведите по такому объекту и раскидайте по ним метки. Метки тогда смогут попадать сразу в 2 таких объекта, и манипулировать ими по признакам станет проще.

Мишко Kushchenko
1 апреля 2013, 16:29

а от кого он будет наследоваться, вспомогательный класс, от GeoObject?

Да не обязательно.

var Set = function (objects) {

       this.objects = objects;

    }

Set.prototype = {

    addToMap: function () {

       for (var i = 0, l = this.objects.length; i < l; i++) { map.geoObjects.add(objects[i]); } 

    },

 

    removeFromMap: function () {

       for (var i = 0, l = this.objects.length; i < l; i++) { map.geoObjects.remove(objects[i]); } 

    }

}

 

var setRed = new Set(redGeoObjects),

    setSquare = new Set(squareGeoObjects)

   ....

 

Что-то в этом стиле.