有时谷歌地图部分带有其他区域变灰。有一个问题,如果我们启动 Firebug,图像确实会出现在那个灰色区域。不知道为什么会这样。任何人都经历过这个并找到了解决方案,请分享。
9 回答
如果您正在调整地图的DIV
. 调整大小后,尝试调用gmap.checkResize()
函数。
嗨,如果您在带有地图容器的 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 变量调用Latitude
and ,因此是 PHP 片段。Longitude
<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。)我确信这是有充分理由的,但我对此很陌生,所以我不知道。无论如何,我希望这可以帮助某人。