Here Maps - репозиционирование infobubble в окне просмотра - PullRequest
0 голосов
/ 23 октября 2019

Я обновляю приложение из Here Maps Javascript API v2 до v3.

В v2 инфопузыри перемещаются в окне просмотра, поэтому они остаются на экране (например, если он находится слева отобласть просмотра, затем инфопузырь перемещается вправо, чтобы он не появлялся за пределами экрана)

Это поведение больше не существует в v3 API Here Maps JS. Infobubble остается на месте все время. Я не могу найти никаких настроек для этого - возможно ли вернуть это старое поведение?

Cheers

1 Ответ

0 голосов
/ 29 октября 2019

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

$(document).ready(function () {

    setInterval(function () {        
        if ($('.H_ib_body').is(':visible')) {
            var top = parseInt($('.H_ib_top').css('transform').split(',')[5]);
            var left = parseInt($('.H_ib_top').css('transform').split(',')[4]);
            var height = $('.H_ib_body').height();
            if ($('.H_ib_body').attr('data-isBottom') != '1') { // on top
                if (height - top > 0) {
                    {
                        $('.H_ib_body').css('bottom', 'auto').css('top', '0em').attr('data-isBottom', '1');
                        $('.H_ib_tail').css('transform', 'rotate(180deg)');
                    }
                }
            } else { // on bottom
                var totalHeight = $('#map canvas').height();
                if ((top + height) > totalHeight) {
                    $('.H_ib_body').css('bottom', '.5em').css('top', 'auto').attr('data-isBottom', '0');
                    $('.H_ib_tail').css('transform', '');
                }
            }
            if ($('.H_ib_body').attr('data-isRight') != '1') { // on left
                if (left - $('.H_ib_body').width() < -30) {
                    $('.H_ib_body').css('right', 'auto').css('left', '-20px').attr('data-isRight', '1');
                }
            } else { // on right
                var totalWidth = $('#map canvas').width();
                if (left + $('.H_ib_body').width() > totalWidth) {
                    $('.H_ib_body').css('right', '0px').css('left', 'auto').attr('data-isRight', '0');
                }
            }
        }
    }, 20);
});
...