javascript - 谷歌地图加载部分隐藏的信息窗口

标签 javascript jquery html css google-maps

所以我有以下代码在 map 加载时显示信息窗口。

 $(document).ready(function() {
   var mapCenter = new google.maps.LatLng(-1.09694,37.01535409999997); //Google map Coordinates
   var map;
    map_initialize(); //load map
    function map_initialize()   
    {
        //Google map option
        var googleMapOptions =
        {
            center: mapCenter, // map center
            zoom: 17, //zoom level, 0 = earth view to higher value
            panControl: true, //enable pan Control
            zoomControl: true, //enable zoom control
            zoomControlOptions: {style: google.maps.ZoomControlStyle.SMALL //zoom control size
        },
            mapTypeControlOptions:
            {
                style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR,
                position: google.maps.ControlPosition.BOTTOM_CENTER
            },
            scaleControl: true, // enable scale control
            mapTypeId: google.maps.MapTypeId.ROADMAP // google map type
        };
        var map = new google.maps.Map(document.getElementById("map"),googleMapOptions);

        var image = '/resource-image-files/brand_full.png';
        var infodata = '<section id="content" style="margin:0px;padding:0px;"><h1 style="margin:0px;padding:0px;"><img style="position:relative;left:0%;" width="15%" height="15%" src="/resource-image-files/brand_full.png" alt="Fair Acres House, Karen"/> Fair Acres House, Karen</h1><article><p>Welcome to Fair Acres House, Karen. Get the best accommodation at our exquisite suites.</p><p>We are located in a Karen, A short drive from Nairobi and at the foot of the Ngong Hills.</p><p>For More information, get <a href="http://fairacres-nairobi.co.ke">Fair Acres site</a> For More Information.</p></article></section>';
        var infowindow = new google.maps.InfoWindow({content: infodata});
        var marker = new google.maps.Marker(
        {
            position: mapCenter,
            map:map,
            title: "FairAcres House, Karen"
            //icon: image
        });
        marker.setMap(map);
    //infowindow.open(map,marker);
    google.maps.event.addListener(window, 'load', function(){infowindow.open(map,marker);});
    }
});

我希望 div 在页面加载时显示 div。好吧,它完美无缺。除了一个小问题。 信息窗口的顶部被#map div 的顶部边框部分隐藏。因此,为了让用户查看带有“关闭”按钮的文本顶部,必须向下滚动。 显然这很无聊,所以我想摆脱它。 问题是, 我如何确保信息窗口在加载时处于全 View 状态。 下面是它如何显示的糟糕图像。 SUCKY INFOWINDOW

最佳答案

看起来(我猜这个问题与 this page 有关)这个问题是由标记引起的。

至少对我来说,一开始信息窗口会加载到正确的位置并进行平移,以便完全可见。然后加载标记(浏览器需要一点时间来加载图像)。当标记可见时,信息窗口会向上跳,部分超出视口(viewport)。

原因:当您打开绑定(bind)到标记的信息窗口时,API 需要知道标记的大小(您可能已经注意到信息窗口的尖端位于标记的顶部,而不是在标记位置....当它被放置在标记位置时它会覆盖标记)。

所以问题是:当信息窗口打开时,API 仍然不知道标记的大小。

可能的解决方案: 在标记位置打开信息窗口并根据标记的大小(您可能事先知道大小)使用 pixelOffset 选项(默认标记有一个大小22x40)将信息窗口放在标记的顶部:

infowindow.setOptions({position:marker.getPosition(),
                       pixelOffset:new google.maps.Size(0,-40),
                       map:map});

关于javascript - 谷歌地图加载部分隐藏的信息窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24702581/

相关文章:

javascript - 如果 RxJS 未更改 HTML 输入元素的值,如何停止管道?

javascript - 当对象的标签也是动态时返回绑定(bind)到动态元素的对象

javascript - insertHTML 与隐藏元素

javascript - 使用 var id 获取图像位置

javascript - javascript问题中的全局变量

图片中的 html/css 面包屑

html - 调整网站以适应移动设备

javascript - 如何为响应式菜单的下拉设置动画?

javascript - 将 js 对象转换为 csv 不起作用,并且没有显示错误

html - 更改 div 中的背景