html用按钮来放大地图,WebGIS教程 MapServer的CGI交互 浏览及缩放控制

MapServer交互操作:浏览及缩放控制

如何进行浏览及缩放控制

与前面地图一样,我们通过传递我们的mapfile路径和其他参数(map=/ms4w/apps/tutorial/htdocs/example2-1.map&mode=browse )

初始化我们的应用程序MapServ(/cgi-bin/mapserv)。

这里有一个链接:

打开示例地图1

在 Mapfile 中, 需要添加: TEMPLATEPATTERN '.' , 不然可能会出现:

loadWeb(): General error message. URL-based TEMPLATE configuration failed pattern validation. 。

为了清晰起见,使用 Python 代码,将参数作成列表,如下:>>> paras = [

... ['map', '/owg/mdca.map'],

... ['mode', 'browse'],

... ['root', '/oswebgis'],

... ['program', '/cgi-bin/mapserv'],

... ['layer', 'modis'],

... ['zoom', '0'],

... ['map_web', 'template+example2-1.html']

... ]

>>> url_para = '&'.join(x for x in ['='.join(x ) for x in paras])

>>> url_para

'map=/owg/mdca.map&mode=browse&root=/oswebgis&program=/cgi-bin/mapserv&layer=topo&zoom=0&map_web=template+example2-1.html'

打开示例地图2

如果要使用多个图层,则要多次使用 layer 参数 。 但是可以使用同一个模板文件。

>>> paras = [

... ['map', '/owg/mdca.map'],

... ['mode', 'browse'],

... ['root', '/oswebgis'],

... ['program', '/cgi-bin/mapserv'],

... ['layer', 'modis'],

... ['layer', 'states_line'],

... ['zoom', '0'],

... ['map_web', 'template+example2-1.html']

... ]

>>> url_para = '&'.join(x for x in ['='.join(x ) for x in paras])

>>> url_para

'map=/owg/mdca.map&mode=browse&root=/oswebgis&program=/cgi-bin/mapserv&layer=topo&layer=states_line&zoom=0&map_web=template+example2-1.html'

打开示例地图

这次我们使用 browse 模式而不是 map 模式。

browse模式告诉 MapServer 在 /tmp/ 目录上创建一个地图(图片)。

图像的路径和名称由 MapServer 引用,名称为 img 。

当 MapServer 解析 HTML 模板时,

它会将 [img] 标记替换为图像的正确路径:img。

可以使用此地图执行一些操作。 首先,单击图像的任何部分,地图将刷新并使单击的点居中。

这是平移。 如果单击Map Control 下拉框,则可以选择 zoom in或zoom out 值。

如果您将其设置为Zoom In 2x,然后单击地图的任何部分,则地图将被刷新,放大,并且点击的点居中。

如果缩小,则会发生相反的情况。

当选择“放大”或“缩小”值并单击“刷新”按钮时,地图以上一个地图的中心进行放大或缩小。

您可以随时使用刷新按钮刷新地图。

缩放/平移控件使用内部MapServer CGI变量。 此示例显示如何使用“缩放”变量。 zoom的值决定了放大或缩小的距离。 如果值为“0”,则MapServer会根据用户的鼠标单击重新定位图像。

如果该值大于“0”,则CGI程序放大(地图的当前比例乘以缩放值)。 如果它是负数,则CGI程序缩小(将当前比例除以缩放值)。 可用于控制缩放和平移的其他变量是“zoomdir”和“zoomsize”。

这两个变量几乎与“缩放”相同 - “zoomdir”控制缩放方向,“zoomsize”控制放大或缩小的距离。 请查看OSGeo Gallery或MapServer wiki中的其他示例,了解其他缩放/平移控制选项。

尝试将“地图模式”从 browse 更改为 map。 点击刷新后会发生什么?

请记住,当我们使用 mode=map时,MapServer会返回一个静态地图......它会忽略HTML模板,只是将地图图像直接流式传输到浏览器。

虽然添加了更多数据层,但它仍然类似于第一部分中的 Mapfile。

现在,看看HTML模板文件。 您会注意到它本质上是一个调用MapServer CGI程序的HTML表单。

因为它是一个表单,您可以使用单选按钮和复选框以及下拉框来实现您的界面。

不要被这个例子所限制 - 创造性很好。 ;)有关更多信息,请查看HTML模板参考页面。

在WebGIS地图中平移和缩放地图:POST表单提交

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

1: 浏览及缩放控制

查看 Mapfile

这里看一下 Mapfile :

01 MAP

02 NAME "mapv1a"

03 TEMPLATEPATTERN "."

04 IMAGETYPE "PNG24"

05 EXTENT -180 -90 180 90

06 SIZE 600 300

07 SHAPEPATH "/gdata"

08 SYMBOLSET "../symbols/symbols35.sym"

09 FONTSET "../fonts/fonts.list"

10 IMAGECOLOR 255 255 255

11 WEB

12 TEMPLATE "example1-a.html"

13 IMAGEPATH "/owg/ms_tmp/"

14 IMAGEURL "/ms_tmp/"

15 END

16 LAYER

17 NAME "topo"

18 DATA "land_shallow_topo_8192.tif"

19 STATUS OFF

20 TYPE RASTER

21 PROCESSING "BANDS=1,2,3"

22 END

23 LAYER

24 NAME "states_line"

25 DATA "wcountry.shp"

26 STATUS OFF

27 TYPE LINE

28 CLASS

29 NAME "State Boundary"

30 STYLE

31 SYMBOL "line5"

32 COLOR 255 255 0

33 SIZE 1

34 END

35 END

36 END

37 END

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值