javascript - 将 Google map 嵌入为 CSS 叠加层无法正确加载

标签 javascript css google-maps overlay

我尝试在 CSS 叠加层中显示 Google map 。 问题是:Google map 无法正确加载。标记已设置,但缺少带有街道等的 map 。

我创建了一个 JSFiddle to show my problem .

加载一定有问题。

有人知道为什么会这样吗?

我的 CSS 代码:

        .button {
        width: 150px;
        padding: 10px;
        background-color: #FF8C00;
        box-shadow: -8px 8px 10px 3px rgba(0, 0, 0, 0.2);
        font-weight: bold;
        text-decoration: none;
    }

    #cover {
        position: fixed;
        top: 0;
        left: 0;
        background: rgba(0, 0, 0, 0.6);
        z-index: 5;
        width: 100%;
        height: 100%;
        display: none;
    }

    #loginScreen {
        height: 380px;
        width: 340px;
        margin: 0 auto;
        position: relative;
        z-index: 10;
        display: none;
        border: 5px solid #cccccc;
        border-radius: 10px;
        background-color: white;
    }
    #googlemap{
        height: 200px;
        width: 200px;
    }

    #loginScreen:target,
    #loginScreen:target + #cover {
        display: block;
        opacity: 2;
    }

    .cancel {
        display: block;
        position: absolute;
        top: 3px;
        right: 2px;
        background: rgb(245, 245, 245);
        color: black;
        height: 30px;
        width: 35px;
        font-size: 30px;
        text-decoration: none;
        text-align: center;
        font-weight: bold;
    }

HTML:

<div align="center">
<br>hello
<br><a href="#loginScreen" class="button">
Click here to open Google Map</a></div>
<div id="loginScreen">
<div id="googlemap"></div>
<p>I am just a text for demonstration.</p>
<a href="#" class="cancel">&times;</a> </div>
<div id="cover"> </div>

Javascript:

var label = 'B';
        var overlayContentString = 'Old house here.';
        var infoWindow = new google.maps.InfoWindow({content: overlayContentString});
    var myLatLng = {lat: 51.7124916, lng:8.435252};

    var map = new google.maps.Map(document.getElementById('googlemap'), {
        zoom: 15,
        center: myLatLng
    });

    var marker = new google.maps.Marker({
        position: {lat:51.7124916, lng:8.435252},
        map: map,
        title: 'My home!',
        animation: google.maps.Animation.DROP
    });

    marker.addListener('click', function() { infoWindow.open(map,marker);});

最佳答案

如果您使用 opacity: 0; 而不是 display:none; #loginScreen,它应该可以工作。

如果你想使用display:none;单击并显示 div 时必须重新初始化 map

希望对你有帮助

关于javascript - 将 Google map 嵌入为 CSS 叠加层无法正确加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36740084/

相关文章:

javascript - 正则表达式不允许前导空格,但允许其他任何地方,并且要求至少一个大写字母和一个小写字母

ios - 如何使用谷歌地图获取 map 可见区域中注释/标记的数量?

javascript - 在表单中使用地理编码自动完成功能,这样用户就不需要输入他们所在的位置

javascript - 只有一个功能而不是许多看起来相同的功能?

javascript - 如何为我的 @types/definition 使用版本文件夹

CSS:背景镜面反射

javascript - 将 div 设置为固定在相对位置上的位置

html - Bootstrap CSS bg-success 警报不起作用

google-maps - 折线的 Google map v3 href 链接

javascript - 单击按钮会折叠所有 div,而不是折叠它所属的 div