javascript - 谷歌地图显示 :None Problem

标签 javascript jquery google-maps

我正在尝试设置一个 Google map ,该 map 将在单击链接时显示,然后在单击另一个链接时隐藏。一切正常,除了当我从 display:none 显示 map 时,它没有正确显示。

我读到了有关使用 google.maps.event.trigger(map, 'resize');但我对 Javascript 和 JQuery 不够熟练,不知道如何添加它。

这是我一直在使用的代码:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 TRANSITIONAL//EN">
<html>
    <head>
        <title></title>
        <style type="text/css">
            #viewmap {
                position:relative;
                width:944px;
                float:left;
                display:none;
            }
            #hidemap {
                position:relative;
                width:944px;
                float:left;
                display:block;
            }
            #map_canvas {
                position:relative;
                float:left;
                width:944px;
                height:300px;
            }
        </style>
        <script type="text/javascript"
            src="http://maps.google.com/maps/api/js?v=3.2&sensor=false">
        </script>
        <script type="text/javascript">
            function initialize() {
                var latlng = new google.maps.LatLng(-27.999673,153.42855);
                var myOptions = {
                    zoom: 15,
                    center: latlng,
                    mapTypeId: google.maps.MapTypeId.ROADMAP,
                    mapTypeControl: true,
                    mapTypeControlOptions: {
                        style: google.maps.MapTypeControlStyle.DROPDOWN_MENU
                    }
                };

                var map = new google.maps.Map(document.getElementById("map_canvas"),myOptions);

                var contentString = 'blah';

                var infowindow = new google.maps.InfoWindow({
                    content: contentString
                });

                var marker = new google.maps.Marker({
                    position: latlng, 
                    map: map
                });

                google.maps.event.addListener(marker, 'click', function() {
                    infowindow.open(map,marker);
                });
            }

            google.maps.event.addDomListener(window, 'load', initialize);
        </script>
        <script type="text/javascript">
            function toggleDiv1(viewmap){
                if(document.getElementById(viewmap).style.display == 'block'){
                    document.getElementById(viewmap).style.display = 'none';
                }else{
                    document.getElementById(viewmap).style.display = 'block';
                }
            }
            function toggleDiv2(hidemap){
                if(document.getElementById(hidemap).style.display == 'none'){
                    document.getElementById(hidemap).style.display = 'block';
                }else{
                    document.getElementById(hidemap).style.display = 'none';
                }
            }
        </script>
    </head>
    <body>
        <div id="viewmap">
            <a href="#" onmousedown="toggleDiv1('viewmap'); toggleDiv2('hidemap');">Hide map</a>
            <div id="map_canvas"></div>
        </div>
        <div id="hidemap">
            <a href="#" onmousedown="toggleDiv1('viewmap'); toggleDiv2('hidemap');">View map</a>
        </div>
    </body>
</html>

任何帮助将不胜感激,

昆汀

最佳答案

我今天遇到了同样的问题,最终在官方Google Maps Javascript API V3 Reference找到了这个问题:

Developers should trigger this event on the map when the div changes size: google.maps.event.trigger(map, 'resize') .

作为display:none相当于离开<div>大小为 0,将其更改为 display:block实际上变成了大小的变化,因此有必要触发 map 调整大小事件。

对我来说就像一个魅力。

2018-05-22 更新

随着 Maps JavaScript API 3.32 版中新渲染器的发布,调整大小事件不再是 Map 的一部分。类。

文档说明

When the map is resized, the map center is fixed

  • The full-screen control now preserves center.

  • There is no longer any need to trigger the resize event manually.

来源:https://developers.google.com/maps/documentation/javascript/new-renderer

google.maps.event.trigger(map, "resize");从 3.32 版本开始没有任何影响

关于javascript - 谷歌地图显示 :None Problem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4700594/

相关文章:

javascript - 使 slider 响应(jQuery)

Android 定位客户端不如谷歌地图应用程序准确

android - 将抽屉导航添加到现有的 Android 谷歌地图

javascript - 搜索字符串并插入新行 javascript

javascript - 将可调整大小的子项保留在父项中

javascript - 替换树结构中的根

JQuery Mobile 用户滚动到底部

javascript - 谷歌地图地理编码器问题

javascript - 如何将 PNG 转换为 JPG(客户端),然后再转换回 PNG(服务器端),同时保留全透明和半透明像素?

javascript - Highstock Y 轴标签相互重叠