Яндекс API Панорама - Как автоматически установить взгялд в центр здания?

Использую Яндекс JavaScript API 2.1 для получение панорамы на сайт.

По примеру подставляю координаты здания (123308, г.Москва, 3-я Хорошёвская улица, 20), (55.787644, 37.500477):

ymaps.ready(function () {
    // Для начала проверим, поддерживает ли плеер браузер пользователя.
    if (!ymaps.panorama.isSupported()) {
        // Если нет, то просто ничего не будем делать.
        return;
    }

    // Ищем панораму в переданной точке.
    ymaps.panorama.locate([55.787644, 37.500477]).done(
        function (panoramas) {
            // Убеждаемся, что найдена хотя бы одна панорама.
            if (panoramas.length > 0) {
                // Создаем плеер с одной из полученных панорам.
                var player = new ymaps.panorama.Player(
                        'player1',
                        // Панорамы в ответе отсортированы по расстоянию
                        // от переданной в panorama.locate точки. Выбираем первую,
                        // она будет ближайшей.
                        panoramas[0],
                        // Зададим направление взгляда, отличное от значения
                        // по умолчанию.
                        { direction: [0, 0] }
                    );
            }
        },
        function (error) {
            // Если что-то пошло не так, сообщим об этом пользователю.
            alert(error.message);
        }
    );

Получаю панораму на сайте, но направление взгляда в панораме не в нужное здание. В direction можно менять направление, но как это сделать автоматически, чтобы подставляя координаты здания, получать панораму с взглядом на нужное здание?


Ответы (2 шт):

Автор решения: YaCor'

Такой возможности нет и не будет. Здания имеют сложную форму и высоту, координаты панорам могут быть близко к зданию или между ними и домом будут препятствия.

В какую точку и на какой высоте вы бы направили камеру тут: https://yandex.ru/maps/-/CCUFbFsQtD ? А здесь: https://yandex.ru/maps/-/CCUFbFDxoC ? Почему?

Никакая автоматика не определит, куда вы бы хотели направить взгляд пользователя. И в целом не следует использовать панорамы "просто до кучи". Они тратят в 5 раз больше тарифицируемых запросов. Нужные координаты и угол поворота вы должны задавать специально для заданных вами точек вашей базы объектов.

→ Ссылка
Автор решения: Виктор Карев

У меня тоже возникла необходимость направлять взгляд панорамы в направлении нужной точки. По счастью, объекты можно считать точечными. Вот решение:

if (panoramas.length > 0) {
    var pan = panoramas[0];
    var position = pan.getPosition();
    var az = azimuth(position[0], position[1], coordinates[0], coordinates[1]);
    var player = new ymaps.panorama.Player(
        'player1',
        pan,
        {
            direction: [az, 0],
        }
    );
}

...

function azimuth(x1, y1, x2, y2) {
    let a = Math.atan2(y2 - y1, x2 - x1) * 180 / Math.PI;
    if (a < 0) {
        a += 360;
    }
    return a;
}
→ Ссылка