OpenLayers不使用Doctype声明

时间:2012-05-02 04:11:22

标签: html openlayers

我从netbean生成了以下代码,并对此link进行了一些修改。 删除后,代码运行良好,而不使用它。可能是什么问题? <!DOCTYPE html>

<?xml version="1.0" encoding="UTF-8"?>
<!--
To change this template, choose Tools | Templates
and open the template in the editor.
-->
**<!DOCTYPE html>**
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html">
    <h:head>
        <title>OpenLayers Example</title>
        <script src="http://openlayers.org/api/OpenLayers.js"></script>
    </h:head>
    <body>
        <div style="width:100%; height:100%" id="map"></div>
        <script defer="defer" type="text/javascript">
            var map = new OpenLayers.Map('map');
            var wms = new OpenLayers.Layer.WMS( "OpenLayers WMS",
            "http://vmap0.tiles.osgeo.org/wms/vmap0", {layers: 'basic'} );
            var dm_wms = new OpenLayers.Layer.WMS(
            "Canadian Data",
            "http://www2.dmsolutions.ca/cgi-bin/mswms_gmap",
            {
                layers: "bathymetry,land_fn,park,drain_fn,drainage," +
                    "prov_bound,fedlimit,rail,road,popplace",
                transparent: "true",
                format: "image/png"
            },
            {isBaseLayer: false}
        );
            map.addLayers([wms, dm_wms]);
            map.zoomToMaxExtent();
        </script>

    </body>
</html>

2 个答案:

答案 0 :(得分:2)

回答这个问题可能为时已晚,但它可以帮助其他人,所以我会尝试。

这种行为的原因对我来说仍然未知,但我找到了解决方案:您必须将“ position:fixed; ”属性分配给 div #map 。我没有用XML测试它,但在HTML文档中它可以正常工作。

答案 1 :(得分:0)

您正在使用的API或您使用它的方式依赖于浏览器中的Quirks Mode(即浏览器故意偏离标准和规范的模式,以模拟旧的错误浏览器)。

顺便说一句,独立于模式,Firefox会报告以下错误:

document.getElementsByTagName("head")[0] is undefined
Source: http://openlayers.org/api/OpenLayers.js
Line: 424

此外,该页面在两种模式下都显示为空。这是你所说的“不起作用”吗?