Для автоматической установки масштаба карты на Яндекс.Картах, чтобы вместить все добавленные маркеры (объекты), вы можете использовать функцию `map.setBounds()`. Для этого вам необходимо создать экземпляр `ymaps.GeoObjectCollection`, добавить в него все ваши маркеры, затем использовать метод `getBounds()` этой коллекции для получения координат, включающих все объекты. Эти координаты можно передать в функцию `map.setBounds()`.
Вот пример кода, демонстрирующего, как это можно реализовать:
```javascript
ymaps.ready(init);
function init() {
var myMap = new ymaps.Map('map', {
center: [55.76, 37.64],
zoom: 10,
controls: ['zoomControl']
});
// Создаем коллекцию геообъектов и добавляем её на карту
var myCollection = new ymaps.GeoObjectCollection();
// Добавляем маркеры в коллекцию
var points = [
[55.8, 37.8],
[55.7, 37.5],
[55.6, 37.7]
// ... добавляйте сюда дополнительные точки ...
];
points.forEach(function(point) {
myCollection.add(new ymaps.Placemark(point));
});
// Добавляем коллекцию на карту
myMap.geoObjects.add(myCollection);
// Вычисляем границы коллекции
var bounds = myCollection.getBounds();
// Меняем положение карты, чтобы отобразить все маркеры
myMap.setBounds(bounds, {
checkZoomRange: true, // проверяем наличие тайлов на заданном уровне масштабирования
zoomMargin: 50 // Отступ краев карты от маркеров (пиксели)
});
}
```
Убедитесь, что в `zoomMargin` установлено подходящее значение отступа, чтобы все маркеры были видимыми и между ними и краями карты было небольшое пространство.
Скрипт пройдет через массив точек, создаст для каждой точки маркер (Placemark), добавит маркеры в коллекцию `myCollection`, а затем коллекция будет добавлена на карту. После это «bounds» всех маркеров в коллекции будет использован для установки новых границ карты, так чтобы все маркеры вошли в пределы видимости.