谷歌地图部分出现,灰色区域代替谷歌服务器的图像

IT技术 javascript google-maps google-maps-api-2
2021-03-20 22:51:34

有时谷歌地图部分带有其他区域变灰。有一个问题,如果我们启动 Firebug,图像确实会出现在那个灰色区域。不知道为什么会这样。任何人都经历过这个并找到了解决方案,请分享。

6个回答

更新 27/02/2020
不再需要手动触发调整大小事件。

如果您使用的是 v3,请尝试

google.maps.event.trigger(map, "resize");

也看看这里

2015 年,你还在得到它们!
2021-04-27 22:51:34
非常感谢 - 它帮助了我!
2021-04-27 22:51:34
而在 2015 年!非常感谢 :)
2021-04-29 22:51:34
... 然后再次。谷歌搜索google maps api grey space,并得到了这个页面。惊人的。就我而言,我的地图对象是在另一个对象内实例化的,而不是全局实例化,因此请确保map引用正确的对象!
2021-05-11 22:51:34
工作,但我只需要调用 map.panTo(new google.maps.LatLng(lat, lng)) 来恢复位置。同样在 angular 中,两个调用都应该包含在 $timeout(function() { //here }); 中。
2021-05-18 22:51:34

如果您正在调整地图的DIV. 调整大小后,尝试调用gmap.checkResize()函数。

是一个网站的插件
2021-04-22 22:51:34
来自评论:google.maps.event.trigger(<map>, "resize")
2021-04-23 22:51:34
在 V3 中,checkResize 已折旧。V3 的解决方案可以在blog.codebusters.pl/en/entry/google-maps-in-hidden-div找到
2021-05-13 22:51:34

嗨,如果您在带有地图容器的 div 中使用切换,则在函数中调用 resizeMap

associated with the trigger:
        $(".trigger").click(function(){
        $(".panel").toggle("fast");
        $(this).toggleClass("active");
         resizeMap();
        return false;

然后 resizeMap(); 像这样

function resizeMap()
{
google.maps.event.trigger(map,'resize');
map.setZoom( map.getZoom() );
}

不要忘记将地图变量设置为全局 ;) 欢呼

我为部分加载的谷歌地图找到了一个简单的解决方案。通常是由于onLoad()页面的其余部分(包括您的地图元素)未完全加载时被调用造成的这会导致部分地图加载。解决此问题的一个简单方法是更改​​您的onLoad正文标签操作。

旧方法:

onload="initialize()"

新方式:

onLoad="setTimeout('initialize()', 2000);"

这会在 Google Javascript 访问正确的大小属性之前等待 2 秒。在尝试之前,请确保清除浏览器缓存;有时它会卡在那里:)

如果您想知道,这是我最重要的 Javascript 部分(正如 Google 文档中所述,但因为我从 PHP 变量调用LatitudeLongitude,因此是 PHP 代码段。

<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">
function initialize() {
    var myOptions = {
        center: new google.maps.LatLng(<?php echo $my_latitude; ?> , <?php echo $my_longitude; ?>),
        zoom: 14,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    var map = new google.maps.Map(document.getElementById("map_canvas"),
        myOptions);

    var point = new google.maps.LatLng(<?php echo $my_latitude; ?> , <?php echo $my_longitude; ?>);
    var marker = new google.maps.Marker({ position:point, map:map })    
}
</script>
你真是个天才!这应该是最佳答案。
2021-04-30 22:51:34

我只是想添加到这个讨论中,我也有灰色条纹的问题,这与我需要使用 gmap.Resize 函数不同,但它在我的 css 中。在我的 css 中,我有

img { 
max-width:50% 
}

所以当我在我的 css 文件中设置它时

#map-canvas { 
max-width:none;
}

问题消失了!我查遍了谷歌,但找不到这个答案。