2010-07-10 53 views
8

为什么地球上总会有一个机会,如果我们在Google地图上使用“Doctype”,在正确显示Google Map时会出现问题?Google地图不能与XHTML一起使用Doctype(文档类型)

在最近的一个案例中,这个“Doctype”只花了我2天没有任何生产力。多么令人厌恶的情况?这次我得到了我的一位同事(Subhankar Bannerjee)的帮助,并且非常感谢他,因为他及时提供了有效的帮助。他还提到了他曾多次面对过的同样的问题。

任何人都可以告诉我为什么这个Doctype问题与谷歌地图发生?

任何帮助,非常感谢。

Edit(对于@Balus的评论): -
我所用的(X)HTML 1.0过渡文档类型,为Mozilla FF &谷歌的Chrome浏览器。我还没有在IE v6 +中检查过这个Google Map,所以我无法对这些浏览器发表评论。

+1

准确哪个doctype?哪些网页浏览器准确?你知道(并理解)http://hsivonen.iki.fi/doctype/? – BalusC 2010-07-10 05:32:31

+0

@Balus - 提供尼斯链接。谢谢 – 2010-07-10 08:03:00

+2

http://stackoverflow.com/questions/2127601/doctype-error-with-googlemaps – iamgopal 2010-07-17 12:51:58

回答

16

前段时间我和Google Maps API v3有同样的问题,我必须说它不容易调试。

这里的事情是,如果您不在页面上使用DOCTYPE,页面呈现为怪癖模式。基本上这允许使用没有任何额外的CSS或JavaScript的样式。在这种情况下,你可以使用该位加载地图:

<body onload="initialize()"> 
    <div id="map_canvas" style="width:100%; height:100%"></div> 
</body> 

然而,DOCTYPE的页面呈现像DOCTYPE是这么说的。如果设置上面的样式,在使用百分比时没有任何额外的CSS将无法正常工作。这个元素没有大小,所以你最终完全没有任何东西。所以如果你使用XHTML 1.0 Strict,即。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
    "http://www.w3.org/TR/xhtml/DTD/xhtml1-strict.dtd"> 

页面呈现,因为它应该,如果你使用的像素而不是百分比:

<body onload="initialize()"> 
    <div id="map_canvas" style="width:500px; height:400px"></div> 
</body> 

你能做到这一点也是在CSS。

那么你的选择在这里:

  1. 离开DOCTYPE和使用像素而不是百分比指定的宽度,并通过CSS的高度。

  2. 删除DOCTYPE并使用百分比。这是不推荐的,因为文档应该总是说什么DTD它应该呈现。

您可以找到有关怪癖模式从here.更多信息还有这说明浏览器如何不同反应缺乏DTD表。

+1

+1为100%使用此CSS - .map {width:500px;身高:500px;位置:固定!重要;左:0; z-index:1; top:0;} – 2012-06-30 16:29:45

+0

在创建地图对象'document.getElementById(“google-map”)。style.height = $(window).height()+'px' – kushpf 2015-09-25 19:51:24

1
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

我正在使用此doctype,它似乎工作正常。它可能只是你的引导。你如何加载谷歌?你得到什么错误?显示你得到什么样的结果?

0

你的问题说“如果我们使用'Doctype'”。这是否意味着你之前没有?如果你之前没有,那么,基本上,你正在改变网页布局的“规则”。没有一个适当的文档类型,你是在怪癖模式。

0

一个快速的解决办法是按如下方式使用它:

document.getElementById("google-map").style.height = $(window).height()+'px';

var map = new google.maps.Map(document.getElementById("google-map"), myMapOptions);

它工作得很好用的文档类型。尝试和测试! :)

相关问题