Не давно начал изучать ya.maps и потребовалось динамически масштабировать карту в зависимости от удаленности объектов друг от друга - чтобы всегда на карте отображалить все объекты (были видны пользователю).
Использую следующий код:
ymaps.ready(markicons);
var oMap;
function init() {
var cData = data.MapCenter;
var CenterPoint = [cData[0].longi, cData[0].lati]
var ZoomV = data.ZoomValue; //попытка установить расчетное значение зума
oMap = new ymaps.Map("map", {
center: CenterPoint,
zoom: ZoomV, //расчетное значение равно 8
controls: ["typeSelector", "zoomControl"]
});
}
function markicons() {
init();
var markers = [];
var aData = data.poi;
for (var i = 0, poiData; poiData = aData[i]; i++) {
var marker =
new ymaps.GeoObject({
geometry: {
type: "Point",
coordinates: [poiData.longi, poiData.lati]
},
properties: {
iconContent: '',
hintContent: '<b>' + poiData.Info + '</b>',
id: poiData.id,
projectId: data.projectId,
anketaId: data.anketaId
}
},
{
preset: 'islands#darkOrangeIcon',
draggable: false
});
oMap.geoObjects.add(marker);
}
oMap.setBounds(oMap.geoObjects.getBounds(), { checkZoomRange: true });
}
По итогу, если выключить
oMap.setBounds(oMap.geoObjects.getBounds(), { checkZoomRange: true });то отображается правильно, но расчетное значение зума не то, что нужно (пока не очень понял как пересчитать зум правильно и стоит ли это делать самому, или же лучше использовать готовое решение)
Если же включить - то вот такая картинка:
Что делаю не так?