2010-07-10 56 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);

它工作得很好用的文檔類型。嘗試和測試! :)