MapServer交互操作:CGI变量及用户接口

使用 MapServer 模板,需要在每个 HTML模板文件中添加 MapServers模板声明。 不然,在使用 GetFeatureInfo (带有 info_format集合)作为 text/html 请求时,会得到下面的错误信息:

Content-type: text/xml isValidTemplate(): Web application error.
Missing magic string, template-file doesn't look like a MapServer template.
需要在每个模板的最开始添加:
<!-- MapServer Template -->
Example the exemplar template query footer.html is:
<!-- MapServer Template -->

到目前为止,只能在创建地图查看地图。 创建Web制图应用程序,通常的意义是创建能够由用户(应用程序的) 改变的地图。 也就是说,一个用户能够改变地图的内容(或者信息)。 要互动的完成这件事情,我们使用MapServer HTML模板。

一个MapServer HTML模板实际上是一个有几个特定MapServer的HTML文件-- 这些表标签是括在"[]"中的MapServer CGI 变量 。 当MapServer CGI程序处理应用时,它首先解析query_string和地图文件,并产生必要的输出 。 这些输出需要写 在 HTML 模板 文件中,必须在 Mapfile 中定义, 通过使用网络模板关键字(或者在一个单独的HTML初始化文件中)。 CGI 程序将取代所有在 HTML 模板中的变量,用适当的值,在将它发送到 Web 浏览器之前。 如果直接在网页浏览器上查看HTML 模板的内容, 将不会有任何地图提供,反而会有空的图像和其它不明意义的字符。

MapServer的网络映射提供了一些变量--the "img"变量, 前面已经有过例子,那里的几个常用的CGI 变量设计作为地图界面初始化的一个部分, 但是实际上所有 MapFile 参数都能够被定义为变量。

CGI变量的明确的参考在: http://www.mapserver.org/cgi/index.html

MapServer 使用的 CGI 变量也可以由开发者进行定义,MapServer将会把它传递到应用程序中。 例如,我们可以创建一个变量叫做"root"来代表我们的 代表本教程的根目录--"root" 的值将会被"/tutorial“。 当MapServer CGI的值处理我们的HTML 模板,它将会代替每一个"[root]" 标记以及"/tutorial"的实例。你将会看到这个在每一个如下例子中的动作中。

现在,让我们为我们的应用建立一个交互式的界面。


下面展示的是使用表单进行提交,各种参数通过 input 控件来传递。效果与上面是一样的:

Proceed to: