javascript - 为什么在此设置中 Google map 容器会突然加载为灰色空白?

标签 javascript google-maps

有人能发现下面的错误吗?它对我来说工作得很好,直到我显然做了一些小的改变,现在 map 应该显示的区域是灰色的空白。一种样式似乎也应用于我的 #big-map 容器,我认为在我的代码工作之前它并不存在(但我可能又错了)无论如何,它一直在插入我太疯狂了,我想我自己研究这个问题太久了,所以我想我会分享。 :-)

预先感谢您的帮助!

HTML:

<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<div id="big-map"></div>

CSS/更少:

#big-map {
   float: left;
   width: 100%;
   height: 290px;
   margin-top: 20px;

   >div {
      position: absolute;
      left: -3px !important;
      top: -44px !important;
      width: 103% !important;
      height: 120% !important;
    }
}

Javascript/jQuery:

var maps = {
    addBigMap : function (options)
    {
        // build map
        var bounds = new google.maps.LatLngBounds();
        var hue = options.hue ? options.hue : "#90cef1";          
        var settings = {
            mapTypeId: 'roadmap',
            styles : [{         
                         stylers: [{hue: hue}, {saturation: -20}],
                      },
                      {
                         featureType: "road",
                         elementType: "geometry",
                         stylers: [{lightness: 100}, {visibility: "simplified"}]
                      },
                      {
                         featureType: "road",
                         elementType: "labels",
                         stylers: [{visibility: "off"}]
                      }]
        };
        var map = new google.maps.Map(options.$container[0], settings);
        map.setTilt(45);
    }
};

maps.addBigMap({
    $container: $("#big-map"),
    hue: "#90cef1"
});

DOM 结果:

<div id="big-map" style="position: relative; overflow: hidden; transform: translateZ(0px); background-color: rgb(229, 227, 223);">
   <div class="gm-style" style="position: absolute; left: 0px; top: 0px; overflow: hidden; width: 100%; height: 100%; z-index: 0;">
      <div style="position: absolute; left: 0px; top: 0px; overflow: hidden; width: 100%; height: 100%; z-index: 0; cursor: url(http://maps.gstatic.com/mapfiles/openhand_8_8.cur) 8 8, default;">
         <div style="position: absolute; left: 0px; top: 0px; z-index: 1; width: 100%; transform-origin: 0px 0px 0px; transform: matrix(1, 0, 0, 1, 0, 0);">
            <div style="transform: translateZ(0px); position: absolute; left: 0px; top: 0px; z-index: 100; width: 100%;">
               <div style="position: absolute; left: 0px; top: 0px; z-index: 0;">
                  <div style="position: absolute; left: 0px; top: 0px; z-index: 1;"></div>
               </div>
            </div>
            <div style="transform: translateZ(0px); position: absolute; left: 0px; top: 0px; z-index: 101; width: 100%;"></div>
            <div style="transform: translateZ(0px); position: absolute; left: 0px; top: 0px; z-index: 102; width: 100%;"></div>
            <div style="transform: translateZ(0px); position: absolute; left: 0px; top: 0px; z-index: 103; width: 100%;"></div>
            <div style="position: absolute; z-index: 0;">
               <div style="overflow: hidden;"></div>
            </div>
         </div>
         <div style="position: absolute; left: 0px; top: 0px; z-index: 2; width: 100%; height: 100%;">         </div>
         <div style="position: absolute; left: 0px; top: 0px; z-index: 3; width: 100%; transform-origin: 0px 0px 0px; transform: matrix(1, 0, 0, 1, 0, 0);">
            <div style="transform: translateZ(0px); position: absolute; left: 0px; top: 0px; z-index: 104; width: 100%;"></div>
            <div style="transform: translateZ(0px); position: absolute; left: 0px; top: 0px; z-index: 105; width: 100%;"></div>
            <div style="transform: translateZ(0px); position: absolute; left: 0px; top: 0px; z-index: 106; width: 100%;"></div>
            <div style="transform: translateZ(0px); position: absolute; left: 0px; top: 0px; z-index: 107; width: 100%;"></div>
         </div>
       </div>
    </div>
</div>

最佳答案

centerzoom 选项在 new google.maps.Map 构造函数中没有默认值。另外,mapTypeId 采用 constant as an argument ,而不是字符串。

因此,要解决此问题,请添加 centerzoom 的默认值,并删除 mapTypeId(因为 Google 默认类型为无论如何,路线图)。

最后,删除第一个 stylers 行末尾的逗号。

Here's a jsfiddle如果你愿意的话就可以玩。

maps = {
    addBigMap: function(options) {
        // build map
        var bounds = new google.maps.LatLngBounds();
        var hue = options.hue ? options.hue : "#90cef1";     
        var latlng = new google.maps.LatLng(36.4120739, -82.444035);
        var settings = {
            center: latlng,
            zoom: 8,
            styles : [{         
                         stylers: [{hue: hue}, {saturation: -20}]
                      },
                      {
                         featureType: "road",
                         elementType: "geometry",
                         stylers: [{lightness: 100}, {visibility: "simplified"}]
                      },
                      {
                         featureType: "road",
                         elementType: "labels",
                         stylers: [{visibility: "off"}]
                      }]
        };
		var map = new google.maps.Map(options.$container[0], settings);
        map.setTilt(45);
    },
    init: function() {
        if (document.readyState === 'loading') {
            google.maps.event.addDomListener(window, 'load', maps.init);
            return;
        }
        maps.addBigMap({
            $container: $("#big-map"),
            hue: "#90cef1"
        });
    }
};
#big-map {
   float: left;
   width: 100%;
   height: 290px;
   margin-top: 20px;

   >div {
      position: absolute;
      left: -3px !important;
      top: -44px !important;
      width: 103% !important;
      height: 120% !important;
    }
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://maps.googleapis.com/maps/api/js?callback=maps.init"></script>
<div id="big-map"></div>

关于javascript - 为什么在此设置中 Google map 容器会突然加载为灰色空白?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27002848/

相关文章:

javascript - 即使放入错误的可放置对象,如何禁用可拖动对象

android - ClusterManager Google Map Utility V2 遍历集群

android - map 版本 V1 在 Android 10 中崩溃

javascript - 如何在时钟应用程序中用当前时间自动替换过去的秒/分钟/小时

Javascript图表从数据库中选取总和数据

java - 如何为 Google map 设置特定中心?

java - 获取特定位置的 map View 我选择纬度和经度

javascript - 使用选项卡时 InfoWindow 高度不正确

javascript - 如何将元素的位置设置为在滚动时固定到一定高度,并在不是该高度时使其正常?

javascript - 几秒钟后 Jquery animation() 响应非常缓慢