MapServer TEMPLATE: Difference between revisions
Brian Wilson (talk | contribs) |
Brian Wilson (talk | contribs) |
||
Line 64: | Line 64: | ||
Now here is a link that will push the map through a[http://mapserver.wildsong.biz/demo/shape.template.html template]: | Now here is a link that will push the map through a[http://mapserver.wildsong.biz/demo/shape.template.html template]: | ||
http://mapserver.wildsong.biz/cgi-bin/mapserv?map=../mapserver/html/demo/shape.map&mode=map&layer=Streets%20Benton&layer=Parks&layer=credits&map_web_template=../mapserver/html/demo/shape.template.html | http://mapserver.wildsong.biz/cgi-bin/mapserv?map=../mapserver/html/demo/shape.map&mode=map&layer=Streets%20Benton&layer=Parks&layer=credits&map_web_template=../mapserver/html/demo/shape.template.html&mode=browse |
Revision as of 00:45, 4 August 2005
"Templates" is the simplest way to create an interactive mapserver site. (You can create non-interactive ones without templates but what's the fun of that?)
The non-interacttive example
Without using a template, I (the masterful Web GIS progreammer) can create a .map file and put the appropriate URL onto a Web page, for example,
Reading the URL from left to right. this goes to my mapserver(http://mapserver.wildsong.biz/), invokes the mapserv executable (/cgi-bin/mapserv), telling it read a map file (map=../mapserver/html/demo/hello.map), look for the 'credits' layer("layer=credits"), and finally to display the results by sending the image back to your browser ("mode=map").
I am keeping my files for this project in the html directory tree so that you can download them if you want to look at them. For security normally I would keep them OUTSIDE the tree... just because...
So for example, you can grab the map file with this URL: http://mapserver.wildsong.biz/demo/hello.map
The first template
I walked through the MapServer template reference and created a template file that has many of the template tags in it. You can look at it; click here and do view source: http://mapserver.wildsong.biz/demo/hello.template.html
To tell MapServer to use my template file, I can change mode to browse and add a template specifier:
I have to specify a layer; that example just shows you a blue box;
An aside: If you click reload on the above page several times you will notice the name of the img file changing. Each click causes a new PNG file to be generated. I have to set up a separate program to delete the darned things so that my server does not fill up and keel over.
The template has lots of mapserver template tags in it, which are a word enclosed by square brackets. They look like wiki tags, come to think of it.
The clever idea is that the template can have an HTML form in it, so you can put buttons and whatnot into the form, and voila! interactivity! Each time you click submit, the request is processed by mapserv, pushed through the template, and you get the updated results.
Query templates
But wait, there's more! I started down this path of exploration to debug a problem with queries. I have a MapServer site that has a broken search feature. So next I need to learn how MapServer handles non-spatial queries.
First I have to create a demo that uses a ShapeFile, not just a bit of text. The ShapeFile will have some spatial (vector) data in it, and also some attribute data that I can query.
Here is the map file for your perusal: http://mapserver.wildsong.biz/demo/shape.map
Here is a link that will display the map: http://mapserver.wildsong.biz/cgi-bin/mapserv?map=../mapserver/html/demo/shape.map&mode=map&layer=Streets%20Benton&layer=Parks&layer=credits
Now here is a link that will push the map through atemplate: http://mapserver.wildsong.biz/cgi-bin/mapserv?map=../mapserver/html/demo/shape.map&mode=map&layer=Streets%20Benton&layer=Parks&layer=credits&map_web_template=../mapserver/html/demo/shape.template.html&mode=browse