@sabanovvv

Как балун яндекс карты сделать открытым по умолчанию?

uni.webj.esy.es
Вывожу метки на яндекс карте.нужно при загрузке сайта один конкретный балун сделать открытым,как это сделать?
п.с. на яндекс мап апи нужной информации не нашел
код js карты
function init () {
    // Создание экземпляра карты и его привязка к контейнеру с
    // заданным id ("map")
    var myMap = new ymaps.Map('map2', {
        // При инициализации карты, обязательно нужно указать
        // ее центр и коэффициент масштабирования
        center: [56.317222,44.002149],
        zoom: 4
    });
    //Добавляем элементы управления
    myMap.controls.add('smallZoomControl', {
        left: 15,
        top: 15
    })
    myMap.behaviors.enable('scrollZoom');
    myPlacemarkOpera = new ymaps.Placemark([55.851209,37.541246], {
        name: 'Адрес: ООО ЛАНИКС M',
        address: '125438 г. Москва, ул. Лихоборская набережная, д. 18, стр. 1',
        telefon: 'Тел.: +7 (495) 726-57-07, +7 (495) 726-57-10',
        faks: 'Факс: +7 (499) 153-76-31'
    }),

        myPlacemarkDramma = new ymaps.Placemark([59.9174455,30.3250575], {
            name: 'Адрес: ООО ЛАНИКС M',
            address: '125438 г. Санкт-Петербург',
            telefon: 'Тел.: +7 (495) 726-57-07, +7 (495) 726-57-10',
            faks: 'Факс: +7 (499) 153-76-31'
        }),

        myPlacemarkKomedia = new ymaps.Placemark([53.8838884,27.594974], {
            name: 'Адрес: ООО ЛАНИКС M',
            address: '125438 г. Минск',
            telefon: 'Тел.: +7 (495) 726-57-07, +7 (495) 726-57-10',
            faks: 'Факс: +7 (499) 153-76-31'

        }),

        // Создаем коллекцию, в которую будем добавлять метки
        myCollection = new ymaps.GeoObjectCollection();

    //Добавляем метки в коллекцию геообъектов.
    myCollection
        .add(myPlacemarkOpera)
        .add(myPlacemarkDramma)
        .add(myPlacemarkKomedia);

    // Создаем шаблон для отображения контента балуна
    var myBalloonLayout = ymaps.templateLayoutFactory.createClass(
        '<div class="sd1"><p>$[properties.name]</p></div>' +
        '<div class="sd2"><p>$[properties.address]</p></div>' +
        '<div class="sd3"><p>$[properties.telefon]</p></div>' +
        '<div class="sd4"><p>$[properties.faks]</p></div>'
    );
    // Помещаем созданный шаблон в хранилище шаблонов. Теперь наш шаблон доступен по ключу 'my#theaterlayout'.
    ymaps.layout.storage.add('my#theaterlayout', myBalloonLayout);
    // Задаем наш шаблон для балунов геобъектов коллекции.
    myCollection.options.set({
        balloonContentBodyLayout:'my#theaterlayout',
        // Максимальная ширина балуна в пикселах
        balloonMaxWidth: 380
    });
    // Добавляем коллекцию геообъектов на карту.
    myMap.geoObjects.add(myCollection);
}
  • Вопрос задан
  • 8941 просмотр
Решения вопроса 1
Пригласить эксперта
Ответы на вопрос 1
@vitalso78
Не получаеться задать ширину самого балуна в открытом окне по умолчанию вот тут
var myMap;

ymaps.ready(function () {
    myMap = new ymaps.Map('map', {
        zoom: 15,
        center: [53.21402707119357,50.22476249999997],
        controls: []
    }, {
        searchControlProvider: 'yandex#search'
    });
    var myPlacemark = new ymaps.Placemark([53.21402707119357,50.22476249999997], {
        balloonContentHeader: 'Компания «UVEB.RU» <img  width = "200" height ="100" src="http://www.uveb.ru/UVEB.RU.png" alt="" />',
                    balloonContentBody: 'Россия, Самара, ул. 22 Партсъезда, 46,<br>строение 10, 1 этаж, оф.№ 4<br> Email@uveb.ru',
                    balloonContentFooter: '+7 (927) 737 61-69'
    }, {
        balloonPanelMaxMapArea: 0,
        
    });
    myMap.geoObjects.add(myPlacemark);
   
    observeEvents(myMap);
    
    myPlacemark.balloon.open();
});

function observeEvents (map) {
    var mapEventsGroup;
    map.geoObjects.each(function (geoObject) {
        geoObject.balloon.events
            // При открытии балуна начинаем слушать изменение центра карты.
            .add('open', function (e1) {
                var placemark = e1.get('target');
                // Вызываем функцию в двух случаях:
                mapEventsGroup = map.events.group()
                    // 1) в начале движения (если балун во внешнем контейнере);
                    .add('actiontick', function (e2) {
                        if (placemark.options.get('balloonPane') == 'outerBalloon') {
                            setBalloonPane(map, placemark, e2.get('tick'));
                        }
                    })
                    // 2) в конце движения (если балун во внутреннем контейнере).
                    .add('actiontickcomplete', function (e2) {
                        if (placemark.options.get('balloonPane') != 'outerBalloon') {
                            setBalloonPane(map, placemark, e2.get('tick'));
                        }
                    });
                // Вызываем функцию сразу после открытия.
                setBalloonPane(map, placemark);
            })
            // При закрытии балуна удаляем слушатели.
            .add('close', function () {
                mapEventsGroup.removeAll();
            });
    });
}

function setBalloonPane (map, placemark, mapData) {
    mapData = mapData || {
        globalPixelCenter: map.getGlobalPixelCenter(),
        zoom: map.getZoom()
    };

    var mapSize = map.container.getSize(),
        mapBounds = [
            [mapData.globalPixelCenter[0] - mapSize[0] / 2, mapData.globalPixelCenter[1] - mapSize[1] / 2],
            [mapData.globalPixelCenter[0] + mapSize[0] / 2, mapData.globalPixelCenter[1] + mapSize[1] / 2]
        ],
        balloonPosition = placemark.balloon.getPosition(),
    // Используется при изменении зума.
        zoomFactor = Math.pow(2, mapData.zoom - map.getZoom()),
    // Определяем, попадает ли точка привязки балуна в видимую область карты.
        pointInBounds = ymaps.util.pixelBounds.containsPoint(mapBounds, [
            balloonPosition[0] * zoomFactor,
            balloonPosition[1] * zoomFactor
        ]),
        isInOutersPane = placemark.options.get('balloonPane') == 'outerBalloon';

    // Если точка привязки не попадает в видимую область карты, переносим балун во внутренний контейнер
    if (!pointInBounds && isInOutersPane) {
        placemark.options.set({
            balloonPane: 'balloon',
            balloonShadowPane: 'shadows'
        });
        // и наоборот.
    } else if (pointInBounds && !isInOutersPane) {
        placemark.options.set({
            balloonPane: 'outerBalloon',
            balloonShadowPane: 'outerBalloon'
           
        });
    }
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы