MS RFC 63:内置Openlayers地图查看器

日期

2010-09-25

作者

丹尼尔·莫里塞特(dmorissette at mapgears.com)

作者

Alan Boudreault(aboudreault,位于mapgears.com)

最后编辑

2010-10-26

状态

2010-10-29通过。完成实施。

版本

MAPServer 6

概述

用户通常要求使用一种简单的方法来测试映射文件。此RFC建议 simple 使用内置的基于Openlayers的地图查看器(将通过CGI触发)预览、测试和导航 Mapfile 的方法。这仅用于测试/开发目的,不用于生产或部署全功能站点。这将使用内置的 openlayers 模板。它将返回一个基于Openlayers的简单HTML查看器。

注意,geoserver已经提供了类似的功能,这就是这个RFC的灵感来源。

实施细节

为了实现此增强,应在MapServer代码库中进行以下更改:

  • 添加内置 openlayers 模板。

  • 需要一些新的模板标记。这些标记将用于构造MapServer CGI URL。

    • [mapserv_onlineresource]

      or

    • [议定书]

    • [主持人]

    • [程序]

    看见 ticket 3552 了解更多详细信息。

将使用以下方法之一触发模板:

  • 使用 模式=浏览&模板=开放层: 查看器将基于mapfile默认值进行初始化,一些传统的mapserv cgi参数也可以工作(如地图大小、图层选择等)。

  • 使用 FORMAT=application/openlayers 在wms getmap请求中:其余getmap参数将用于配置要查看的地图(bbox、宽度、高度、图层等)。

这两种情况都会在内部调用相同的函数,以生成一个简单的Openlayers查看器,其中为带有选定层的整个地图生成一个单平铺层。

下面是可以使用的简单查看器HTML代码:

<html>
<head>
  <title>MapServer Simple Viewer</title>
    <script src="http://www.mapserver.org/lib/OpenLayers-ms60.js"></script>
    </head>
    <body>
      <div style="width:[mapwidth]; height:[mapheight]" id="map"></div>
      <script defer="defer" type="text/javascript">
        var map = new OpenLayers.Map('map',
                                     {maxExtent: new OpenLayers.Bounds([minx],[miny],[maxx],[maxy]),
                                      maxResolution: [cellsize]} );

        var mslayer = new OpenLayers.Layer.MapServer( "MapServer Layer",
            "[mapserv_onlineresource]",
             {layers: '[layers]'},
             {singleTile: "true", ratio:1} );
        map.addLayer(mslayer);
        map.zoomToMaxExtent();
      </script>
</body>
</html>

Openlayers依赖项

显然,这个功能需要Openlayers JavaScript库。将使用最小的构建并托管在MapServer网站http://www.mapserver.org/lib/openlayers-ms60.js上。openlayers-ms60.js文件名中的“ms60”后缀使我们可以在将来需要时增加版本号,以满足未来版本的mapserver的要求。

用户还可以通过以下两种方式之一使用自己的Openlayers库:

  • 使用环境变量:通过设置环境变量ms_openlayers_js_url,mapserver将使用该URL而不是默认的URL。

  • 使用mapfile中的配置设置:通过在mapfile中添加配置变量ms_openlayers_js_url,mapserver将使用该URL而不是默认的URL。

受影响的文件

确定…

进一步考虑

在将来,我们可能会提供一种机制来支持多个框架,并将通用模板与MapServer一起发送。

臭虫识别码

这里可以找到RFC-63(包含实现)的票据。

3549票

门票3552

投票历史

2010年10月29日,史蒂文、丹尼尔、杰夫克、阿塞法伊、汤克、塔玛斯、史蒂文和佩林通过+1。