---
metadata:
  - name: generator
    content: Diplodoc Platform v5.39.1
alternate:
  - https://yandex.com/dev/jsapi-v2-1/doc/ru/v2-1/examples/cases/panorama_events.md
---
> **Documentation Index:** Fetch the complete configuration index at https://yandex.com/dev/jsapi-v2-1/doc/ru/llms.txt

# Обработка клика на маркере панорамы

<iframe id="LIVE-EXAMPLE" style="width:100%;height: 400px;border-radius: 8px;border: 1px solid rgba(92, 94, 102, 0.14);" frameBorder="0" src="https://yastatic.net/s3/front-maps-static/maps-front-jsapi-v2-1/examples/2/out/s3-cases/ru/panorama_events/index.html" allow="fullscreen"></iframe>

<a target="_blank" rel="noopener noreferrer" style="display: inline-block;margin-top: 10px;cursor: pointer;border-radius: 4px;padding: 9px 12px;background: #151515;color: white;text-decoration: none;font-weight: 500" href="https://codesandbox.io/p/sandbox/98pg5k?file=index.html">Open in CodeSandbox</a>

<div id="references">
    <a href="https://yandex.ru/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/ready">ready</a>,
    <a href="https://yandex.ru/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/Map">Map</a>,
    <a href="https://yandex.ru/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/Placemark">Placemark</a>,
    <a href="https://yandex.ru/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoObjectCollection">GeoObjectCollection</a>,
    <a href="https://yandex.ru/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/panorama.Player">panorama.Player</a>,
    <a href="https://yandex.ru/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/panorama.Manager">panorama.Manager</a>
</div>
<p>
    В этом примере показано, как можно подписаться на события плеера панорам и добавлять метки на карту при клике по маркерам панорамы.
</p>
<p>
    У каждой карты есть менеджер панорам <a href="https://yandex.ru/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/panorama.Manager">panorama.Manager</a>, ссылку на который можно получить через метод <a href="https://yandex.ru/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/Map-docpage/#getPanoramaManager">getPanoramaManager()</a>. С помощью методов этого менеджера можно включать и выключать поиск панорам на карте, открывать и скрывать плеер панорам и др.
</p>
<p>
    После получения <a href="https://yandex.ru/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/panorama.Player">panorama.Player</a> вы можете подписаться на события этого плеера.
</p>

{% list tabs %}

-   index.html

    ```html
    <!DOCTYPE html>
    <html lang="ru">
        <head>
            <title>Обработка клика на маркере панорамы</title>
            <meta charset="utf-8" />
            <!--
            Укажите свой API-ключ. Тестовый ключ НЕ БУДЕТ работать на других сайтах.
            Получить ключ можно в Кабинете разработчика: https://developer.tech.yandex.ru/keys/
        -->
            
            
            
        </head>
        <body>
            <p>
                Нажмите на номер дома на панораме, чтобы добавить его на карту
            </p>
            <div id="map"></div>
        </body>
    </html>
    ```

-   panorama_events.js

    ```js
    ymaps.ready(function () {
        var myMap = new ymaps.Map("map", {
                center: [55.759142, 37.639987],
                zoom: 18,
                type: "yandex#map",
                controls: ["typeSelector"],
            }),
            // Создаём коллекцию, в которой будем хранить точки на карте.
            collection = new ymaps.GeoObjectCollection();
        // Добавляем коллекцию на карту.
        myMap.geoObjects.add(collection);

        // Получим менеджер панорамы карты.
        myMap.getPanoramaManager().then(function (manager) {
            // Включаем режим поиска панорам на карте.
            manager.enableLookup();
            // Открываем плеер панорам.
            manager.openPlayer(myMap.getCenter());
            // Подпишемся на событие открытия плеера панорам.
            manager.events.add("openplayer", function () {
                // Получим текущий плеер панорам.
                var player = manager.getPlayer();
                // При закрытии плеера или смене панорамы удаляем добавленные точки.
                player.events.add(["panoramachange", "destroy"], function () {
                    collection.removeAll();
                });
                // При клике по свернутому маркеру добавим метку в коллекцию на карте.
                player.events.add("markerexpand", function (e) {
                    // Получим координаты дома, по которому кликнул пользователь.
                    var position = e.get("marker").getPosition(),
                        coords = position.slice(0, 2);

                    // Добавим в коллекцию метку с координатами дома.
                    collection.add(
                        new ymaps.Placemark(
                            coords,
                            {},
                            {
                                openBalloonOnClick: false,
                                iconLayout: "default#image",
                                iconImageHref: "circle.svg",
                                // Размеры метки.
                                iconImageSize: [10, 10],
                                // Смещение левого верхнего угла иконки относительно точки привязки.
                                iconImageOffset: [-5, -5],
                            }
                        )
                    );
                });
                // При клике по раскрытому маркеру удалим метку из коллекции на карте.
                player.events.add("markercollapse", function (e) {
                    // Получим координаты дома, по которому кликнул пользователь.
                    var position = e.get("marker").getPosition(),
                        coords = position.slice(0, 2);
                    // Найдём метку в коллекции по координатам и удалим её.
                    collection.each(function (obj) {
                        if (
                            ymaps.util.math.areEqual(
                                obj.geometry.getCoordinates(),
                                coords
                            )
                        ) {
                            collection.remove(obj);
                        }
                    });
                });
            });
        });
    });
    ```

{% endlist %}
