---
metadata:
  - name: generator
    content: Diplodoc Platform v5.37.1
alternate:
  - https://yandex.ru/dev/jsapi-v1-1/doc/ru/dg/concepts/objects_manager.md
---
> **Documentation Index:** Fetch the complete configuration index at https://yandex.ru/dev/jsapi-v1-1/doc/ru/llms.txt

# Диспетчер объектов

Диспетчер объектов [YMaps.ObjectManager](https://yandex.ru/dev/maps/archive/doc/jsapi/1.x/ref/reference/objectmanager.html) предназначен для управления видимостью объектов-оверлеев на карте. Он позволяет показывать или скрывать объекты на карте в зависимости от текущего коэффициента масштабирования и видимой области карты. Диспетчер способен одновременно управлять большим количеством объектов, обеспечивая при этом приемлемую производительность.

Принцип работы диспетчера: карта мира покрывается виртуальной сеткой с квадратными ячейками заданного размера. Объекты, которыми управляет [YMaps.ObjectManager](https://yandex.ru/dev/maps/archive/doc/jsapi/1.x/ref/reference/objectmanager.html), попадают в ячейки, соответствующие их положению на карте. При перетаскивании карты и/или смене масштаба отображаются только объекты из тех ячеек, которые оказываются в пределах текущей видимой области карты. Объекты из остальных ячеек скрываются.


{% note alert %}

Для корректной работы диспетчера, управляемые им объекты должны добавляться на карту только с помощью метода диспетчера [add()](https://yandex.ru/dev/maps/archive/doc/jsapi/1.x/ref/reference/objectmanager.html#add).

{% endnote %}


Чтобы создать диспетчер объектов, используйте конструктор класса [YMaps.ObjectManager()](https://yandex.ru/dev/maps/archive/doc/jsapi/1.x/ref/reference/objectmanager.html). Полученный объект добавьте на карту как объект-оверлей:

```javascript
var objManager = new YMaps.ObjectManager();
map.addOverlay(objManager);
```

Чтобы добавить или удалить объекты из диспетчера используйте методы [add()](https://yandex.ru/dev/maps/archive/doc/jsapi/1.x/ref/reference/objectmanager.html#add), [remove()](https://yandex.ru/dev/maps/archive/doc/jsapi/1.x/ref/reference/objectmanager.html#remove) и [removeAll()](https://yandex.ru/dev/maps/archive/doc/jsapi/1.x/ref/reference/objectmanager.html#removeAll).

Чтобы добавить объект в диспетчер с помощью метода [add()](https://yandex.ru/dev/maps/archive/doc/jsapi/1.x/ref/reference/objectmanager.html#add) укажите следующие параметры:

- ссылку на добавляемый объект;
- минимальный уровень масштабирования, на котором виден объект;
- максимальный уровень масштабирования, на котором виден объект.

Например:

```javascript
objManager.add(new YMaps.Placemark(new YMaps.GeoPoint(37.7,55.7)), 10, 12); 
```

Пример ниже демонстрирует работу диспетчера объектов. В зависимости от текущего коэффициента масштабирования, на карте будет показано различное количество меток разных цветов: для коэффициентов меньше восьми будет показана одна белая метка, от восьми до десяти - десять меток красного цвета, от одиннадцати и выше - сто меток фиолетового цвета. Координаты меток вычисляются с помощью генератора псевдослучайных чисел `Math.random()`.

```javascript
// Создает диспетчер объектов и добавляет его на карту
var objManager = new YMaps.ObjectManager();
map.addOverlay(objManager);

// Добавляет объекты в диспетчер
objManager.add(getPoints(1, "default#whitePoint" ), 1, 7);
objManager.add(getPoints(10, "default#redPoint" ), 8, 10);
objManager.add(getPoints(100, "default#violetPoint" ), 11, 16);

// Генерирует заданное количество меток
function getPoints(count, sKey){
    var arrPoints = [],
        bounds = map.getBounds(),
        pointLb = bounds.getLeftBottom(),
        span = bounds.getSpan();

    // Размещает метки случайным образом в текущей видимой области карты
    for (var i = 0; i < count; i++) {
        var point = new YMaps.GeoPoint(pointLb.getLng() + span.x * Math.random(),
                                       pointLb.getLat() + span.y * Math.random());
        arrPoints.push(new YMaps.Placemark(point, {style:sKey}));
    }
    return arrPoints;
}
```

[Открыть пример в новом окне](https://yandex.github.io/mapsapi-examples-old/html/mapmanager.html)

