yandex map 3.0 Zoom при клике на кластер
При клике на кластер необходимо приблизить карту до размеров что бы поместились все маркеры кластера в видимой области.
Для вычисления Bounds использую функцию
_getBounds() {
var x1 = Infinity,
x2 = 0,
y1 = Infinity,
y2 = 0;
for (var i = 0; i < this._props.length; i++) {
var prop = this._props[i];
x1 = Math.min(prop.geometry.coordinates[0], x1);
x2 = Math.max(prop.geometry.coordinates[0], x2);
y1 = Math.min(prop.geometry.coordinates[1], y1);
y2 = Math.max(prop.geometry.coordinates[1], y2);
}
return [[x1, y1], [x2, y2]];
}
//Получение центра
_getCenter(){
var bounds = _getBounds();
var x = bounds[0][0] + (bounds[1][0] - bounds[0][0]) / 2;
var y = bounds[0][1] + (bounds[1][1] - bounds[0][1]) / 2;
return [x, y];
}
Для приближения карты использовал
map.setLocation({bounds: _getBounds(), duration: 1000});
однако в этом случае некоторые маркеры находятся на границе видимой области, так же при использовании такой конструкции меняется видимая область видимости маркеров (они пропадают с карты не доходя до границы видимой области карты).
Подозреваю что нужно использовать метод
map.update({
location: {
center: _getCenter(),
zoom: ???,
duration: 1000,
}
})
но в этом случае как то нужно вычислить zoom, как это сделать? Возможно есть какие то методы?
Источник: Stack Overflow на русском