[Mapserver-users] how to use HTML Legends with Steve Lime's DHTMLinterface

Emilio Mayorga emiliom at u.washington.edu
Mon Dec 15 23:15:42 PST 2003


One thing that bugs me about the HTML legends is that everything outside 
the special legend tags is ignored. When you use iframes (or regular 
frames), the content of the iframe is coming 100% from the legend 
template HTML, so it's hard to create a complete, proper HTML page in 
the iframe. I can't even come up with a way of opening and closing a 
table, with <table> tags surrounding the Mapserver legend tags. I also 
can't figure out how to load an external style sheet into that iframe.

It's very limiting, in that respect. Otherwise, HTML legends are very neat!

-Emilio


Steve Lime wrote:

> Great start! There are kinda 2 legends on that page. What I need is one,
> the layer control and symbology all in one. That would be idea.
> 
> Steve
> 
> 
>>>>Emilio Mayorga <emiliom at u.washington.edu> 12/13/2003 11:28:43 AM
>>>>
> 
> Hi Martin,
> 
> Thanks. You have a very clean and functional site, great job.
> 
> The DHTML interface that Steve Lime developed (Landview?) uses a 
> crossbrowser API called CBE. Unfortunately, I think it'd be too messy
> to 
> try to use two different but similar API's (DynAPI and CBE) in one 
> application. Hopefully Steve will be able to adapt to CBE what you've 
> done with HTML Legends using DynAPI. I don't think I'll advance my own
> 
> DHTML adaptation much further than what I've already done, I don't have
> 
> enough free time!
> 
> By the way, I'm already familiar with the PANGEA project. I read an 
> article that they published last year, and I actually contacted M 
> Diepenbroek several months ago to try learn about their data schema.
> I'm 
> glad to hear they'll be using Mapserver.
> 
> Cheers,
> 
> -Emilio
> 
> 
> Martin Weinelt wrote:
> 
> 
>>Hello ,
>>
>>i happen to use DHTML for an HTML-Legend in a current project. I use
> 
> an DHTML 
> 
>>API (DynAPI, that is) which takes most of the cross browser issues
> 
> off my 
> 
>>back. We do not suport NS4 anymore but Konqueror and Safari.
>>
>>all Mpaserver generated ouput is sent to a hidden frame an then
> 
> copied to the 
> 
>>interface. The hidden frame (called 'mapCache')  has the template.
> 
> Part of 
> 
>>the template is a line 
>>  <input type="hidden" name="legend" value="[legend]">
>>
>>OnLoad the legend is copied to a layer of the interface (dynLeg). (A
> 
> widget in 
> 
>>this case):
>>
>>dynLeg.setContent(<table 
>>
> 
> width=\"100%\">"+top.mapCache.document.forms[0].legend.value+"</table>");
> 
>>setContent is a DynAPI method to set the content of a layer (some
> 
> HTML in most 
> 
>>cases)
>>
>>Take a look at http://mapserver.pangaea.de/ and if the legend is of
> 
> interest 
> 
>>to you , I'll post  code snippets
>>
>>Cheers, Martin
>>
>>
>>On Friday 12 December 2003 05:06, Emilio Mayorga wrote:
>>
>>
>>>Thanks, Steve. That's great to hear.
>>>
>>>I don't have my trusty DHTML book with me, so I can't research this
> 
> too
> 
>>>much right now. I'll do it this weekend (maybe). I want to see if
>>>there's a way to create a new DOM node where the HTML can be brought
> 
> in
> 
>>>from a URL (in this case, the dynamically generated CGI statement
> 
> with
> 
>>>mode=legend), then inserted into a DIV via innerHTML, or something
> 
> like
> 
>>>that.
>>>
>>>Meanwhile, I experimented with an IFRAME. It's not ideal (iframes
> 
> seem
> 
>>>inelegant, in principle!), but I got it to work. If you're curious,
> 
> my
> 
>>>test site is here:
>>>http://basin.ocean.washington.edu/mapserv/mapache/eng/main.html 
>>>It's a very rudimentary site at this point. I don't know how to use
> 
> the
> 
>>>CBE library yet, unfortunately. I'd like to.
>>>
>>>BTW, I took a quick look at cbs.sportsline.com. Without trying to
>>>understand everything, it looks like it uses an IFRAME element, too.
>>>
>>>Here are the relevant bits that I implemented:
>>>** In the HTML page:
>>><iframe id="legendiframe" src="blank.html" width="150" height="200"
>>>scrolling="auto" frameborder="0">
>>>[text for browsers that don't support iframes.]
>>></iframe>
>>>
>>>** Then I have this javascript code:
>>>function postdraw() {
>>>  // update the legend
>>>  var getlegendiframe = document.getElementById('legendiframe');
>>>  getlegendiframe.src = MapServer + "?map=" + mapfile +
>>>"&mode=legend&mapext=0+0+" + (ms.extent[2] - ms.extent[0]) + "+" +
>>>(ms.extent[3] - ms.extent[1]) + "&mapsize=" + ms.width + "+" +
> 
> ms.height;
> 
>>>}
>>>
>>>I hope this is helpful to you. I might call it quits and settle with
>>>this kludge, but I'd love to hear what you come up with.
>>>
>>>-Emilio Mayorga
>>>Central American Ecology & Environment
>>>garrobo.org
>>>
>>>Steve Lime wrote:
>>>
>>>
>>>>Hi Emilio: I'm working on something similar. Just haven't had time
> 
> to
> 
>>>>make progress. Basically I was thinking of a dLegend object. Like
> 
> the
> 
>>>>dBox interface I would use an anchor image to place a DTHML layer
>>>>containing (with scrollbars) on a page. The layer would contain
> 
> exactly
> 
>>>>what you mention below, an HTML legend. There's a good example of
> 
> such a
> 
>>>>control at cbs.sportsline.com, the scores at a glance tool. I want
> 
> to
> 
>>>>implement it using the same library (CBE) as dBox uses.
>>>>
>>>>Bottom line, I have no solution for you, only an idea. If you make
>>>>progress please let me know.
>>>>
>>>>Steve
>>>>
>>>>Stephen Lime
>>>>Data & Applications Manager
>>>>
>>>>Minnesota DNR
>>>>500 Lafayette Road
>>>>St. Paul, MN 55155
>>>>651-297-2937
>>>>
>>>>
>>>>
>>>>>>>Emilio Mayorga <emiliom at u.washington.edu> 12/11/2003 2:49:02 PM
>>>>
>>>>I've implemented Steve Lime's DHTML interface with dBox (javascript
>>>>rubber band). It's working great (thanks!).
>>>>
>>>>Now I'd like to add an HTML legend. I can get my map file to
> 
> generate
> 
>>>>the HTML for the legend using a stand-alone CGI line; that seems to
>>>>work
>>>>fine. But I can't figure out how to use that line to insert the
> 
> HTML
> 
>>>>into my web page.
>>>>
>>>>I know some DHTML/DOM/javascript. What I'd like to know is how to
> 
> take
> 
>>>>the result of something like:
>>>>http://mysite/cgi-bin/mapserv?map=/var/www/html/mymapfile.map&mode=legend
> 
> 
>>>>and insert it into a web page, without using Frames.
>>>>
>>>>Thanks for your help. Cheers,
>>>>
>>>>-Emilio Mayorga
>>>>
>>>>
>>>>_______________________________________________
>>>>Mapserver-users mailing list
>>>>Mapserver-users at lists.gis.umn.edu 
>>>>http://lists.gis.umn.edu/mailman/listinfo/mapserver-users 
>>>
>>>_______________________________________________
>>>Mapserver-users mailing list
>>>Mapserver-users at lists.gis.umn.edu 
>>>http://lists.gis.umn.edu/mailman/listinfo/mapserver-users 
>>
>>
> 
> _______________________________________________
> Mapserver-users mailing list
> Mapserver-users at lists.gis.umn.edu 
> http://lists.gis.umn.edu/mailman/listinfo/mapserver-users




More information about the MapServer-users mailing list