Here api 此处映射-信息气泡在视口中重新定位

Here api 此处映射-信息气泡在视口中重新定位,here-api,Here Api,我正在从这里升级一个将Javascript API v2映射到v3的应用程序 在v2中,infobubble在视口中重新定位,使其保持在屏幕上(例如,如果它位于视口的左侧,则infobubble将重新定位到右侧,使其不会出现在屏幕外) 这种行为不再存在于Here Maps JS API的v3中。信息泡沫始终保持不变。我找不到这方面的任何设置-有可能恢复这种旧行为吗 干杯我找不到任何解决方案,所以我自己编写了代码来实现它。 在这里,以防它帮助任何人 $(document).ready(functi

我正在从这里升级一个将Javascript API v2映射到v3的应用程序

在v2中,infobubble在视口中重新定位,使其保持在屏幕上(例如,如果它位于视口的左侧,则infobubble将重新定位到右侧,使其不会出现在屏幕外)

这种行为不再存在于Here Maps JS API的v3中。信息泡沫始终保持不变。我找不到这方面的任何设置-有可能恢复这种旧行为吗


干杯

我找不到任何解决方案,所以我自己编写了代码来实现它。 在这里,以防它帮助任何人

$(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);
});
$(文档).ready(函数(){
setInterval(函数(){
如果($('.H_ib_body')是(':visible')){
var top=parseInt($('.H_ib_top').css('transform').split(',')[5]);
var left=parseInt($('.H_ib_top').css('transform').split(',')[4]);
变量高度=$('.H_ib_body').height();
if($('.H_ib_body').attr('data-isBottom')!='1'){//在顶部
如果(高度-顶部>0){
{
$('.H_ib_body').css('bottom','auto').css('top','0em').attr('data-isBottom','1');
$('H_ib_tail').css('transform','rotate(180度));
}
}
}否则{//在底部
var totalHeight=$(“#地图画布”).height();
如果((顶部+高度)>总高度){
$('.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'){//位于左侧
如果(左-$('.H_ib_body').width()<-30){
$('.H_ib_body').css('right','auto').css('left','-20px').attr('data-isRight','1');
}
}否则{//在右边
var totalWidth=$(“#映射画布”).width();
if(左+$('.H_ib_body').width()>totalWidth){
$('.H_ib_body').css('right','0px').css('left','auto').attr('data-isRight','0');
}
}
}
}, 20);
});

我找不到任何解决方案,所以我自己编写了代码来实现它。 在这里,以防它帮助任何人

$(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);
});
$(文档).ready(函数(){
setInterval(函数(){
如果($('.H_ib_body')是(':visible')){
var top=parseInt($('.H_ib_top').css('transform').split(',')[5]);
var left=parseInt($('.H_ib_top').css('transform').split(',')[4]);
变量高度=$('.H_ib_body').height();
if($('.H_ib_body').attr('data-isBottom')!='1'){//在顶部
如果(高度-顶部>0){
{
$('.H_ib_body').css('bottom','auto').css('top','0em').attr('data-isBottom','1');
$('H_ib_tail').css('transform','rotate(180度));
}
}
}否则{//在底部
var totalHeight=$(“#地图画布”).height();
如果((顶部+高度)>总高度){
$('.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'){//位于左侧
如果(左-$('.H_ib_body').width()<-30){
$('.H_ib_body').css('right','auto').css('left','-20px').attr('data-isRight','1');
}
}否则{//在右边
var totalWidth=$(“#映射画布”).width();
if(左+$('.H_ib_body').width()>totalWidth){
$('.H_ib_body').css('right','0px').css('left','auto').attr('data-isRight','0');
}
}
}
}, 20);
});