Собственно говоря, сабж. Использую апи (упрощенно) таким образом:
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. Вопрос знатокам: это я дурак, или лыжи не едут?