Клуб API Карт

Найдено на тему «менеджер отступов»:
map.margin.Accessor.setArea не меняет отступы
Username
21 июня 2017, 12:21

Собственно говоря, сабж. Использую апи (упрощенно) таким образом:

let map = new ymaps.Map('map', {
    center: [55.751574, 37.573856],
    zoom: 10,
    controls: ['zoomControl']
}, {
    searchControlProvider: 'yandex#search'
});
let defaultMargins = {
    search: {
        top: 0,
        left: 0,
        width: "100px",
        height: "50px"
    },
    layers: {
        top: 0,
        left: 0,
        width: "380px",
        height: "100%",
    },
    points: {
        top: 0,
        right: 0,
        width: "380px",
        height: "100%",
    }
};
let margins = {};
let setMargins = function (panelStates) {
    "use strict";
    let newMargins = Object.assign({}, defaultMargins);
    switch (panelStates.layers) {
        case 'open':
            break;
        case 'minimized':
            newMargins.layers.height = "120px";
            break;
        case 'closed':
            newMargins.layers.height = "1%";
            break;
    }
    switch (panelStates.points) {
        case 'open':
            break;
        case 'minimized':
            newMargins.points.height = "120px";
            break;
        case 'closed':
            newMargins.points.height = "1%";
            break;
    }
    Object.keys(defaultMargins).forEach((key) => {
        if (!margins[key]) {
            margins[key] = map.margin.addArea(newMargins[key]);
        } else {
            margins[key] = margins[key].setArea(newMargins[key]);
        }
    });
};
setMargins({
    layers: "open",
    points: "open",
});
let objectManager = new ymaps.ObjectManager({
    clusterize: true,
});
let points = [
    ...
];
let collection = {
    "type": "FeatureCollection",
    "features": points.map((point) => ({
        "type": "Feature",
        "id": point.point_id,
        "geometry": {
            "type": "Point",
            "coordinates": [Number(point.lat), Number(point.lon)]
        },
    })),
};
objectManager.add(collection);
map.geoObjects.add(objectManager);

setMargins({
    layers: "closed",
    points: "open",
});

После исполнения этого кода отступы должны измениться, но этого не происходит, getMargin возвращает одинаковые значения до и после исполнения последнего setMargins. Вопрос знатокам: это я дурак, или лыжи не едут?

4 комментария
менеджер отступов