有时候 Google 地图会部分缺失,其他区域会变成灰色。但是有个问题,如果我们打开 Firebug,在灰色区域的图片就会出现。不知道为什么会出现这种情况。 如果有人经历过并找到解决方案,请分享。
有时候 Google 地图会部分缺失,其他区域会变成灰色。但是有个问题,如果我们打开 Firebug,在灰色区域的图片就会出现。不知道为什么会出现这种情况。 如果有人经历过并找到解决方案,请分享。
map
指向正确的对象! - Julian H. Lamwindow.onload = function(){google.maps.event.trigger(map, "resize")}
- openwonk如果您调整地图的 DIV
大小,可能会出现此错误。调整大小后,请尝试调用 gmap.checkResize()
函数。
google.maps.event.trigger(
<map>, "resize")
- Ujjwal Singh嗨,如果您在带有地图容器的div中使用toggle,则需要在函数中调用resizeMap。
associated with the trigger:
$(".trigger").click(function(){
$(".panel").toggle("fast");
$(this).toggleClass("active");
resizeMap();
return false;
function resizeMap()
{
google.maps.event.trigger(map,'resize');
map.setZoom( map.getZoom() );
}
我找到了一个简单的解决部分加载谷歌地图的方法。通常这是由于在页面(包括您的地图元素)没有完全加载时调用 onLoad()
导致的部分地图加载。解决此问题的简单方法是更改您的 onLoad
body 标签操作。
旧方法:
onload="initialize()"
新的方式:
onLoad="setTimeout('initialize()', 2000);"
在 Google Javascript 访问正确的大小属性之前,需要等待 2 秒。在尝试之前确保清除浏览器缓存;有时它会卡住 :)
这是我最重要的 Javascript 部分,如果你好奇的话(完全按照 Google 文档描述,但因为我从 PHP 变量中调用了 Latitude
和 Longitude
,所以包含了 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>
我想补充一下,我也遇到了灰色条纹的问题,但这并不是需要使用gmap.Resize函数的同一个问题,而是我的CSS中存在问题。在我的CSS中,我有
img {
max-width:50%
}
当我在我的CSS文件中设置这个时
#map-canvas {
max-width:none;
}
#map_canvas img { max-width: none !important; }
这将强制浏览器允许地图宽度尽可能宽 - !important
实际上意味着“不要覆盖此样式”。
以上解决方案对我无效。
我使用了display:none
来隐藏我的地图,将其更改为visibility:hidden
后,它对我有效。
更改:
display:none
为
visibility:hidden
$scope.orientation = function(){
var supportsOrientationChange = "onorientationchange" in window,
orientationEvent = supportsOrientationChange ? "orientationchange" : "resize";
window.addEventListener(orientationEvent, function() {
$interval(function(){
google.maps.event.trigger(map, 'resize');
},100);
});
};
$scope.orientation();
我在处理网站的其他部分时遇到了这个问题,所以一开始没有注意到它。经过检查我在过去一个小时内所做的每一个更改后,我找到了罪魁祸首:
div
{
[... other css ...]
overflow: auto;
}
在我的CSS中。 我把它移除了,哇,它就可以工作了。(当然,我也可以改变我的地图div上的溢出属性,但我只需要在几个div上使用overflow: auto。)我相信这背后有一个很好的原因,但我还是比较新手,所以不知道。无论如何,我希望这能帮助到某些人。