[mapserver-users] HTML Legend with Status Checking...
Mike Smith
nospam at cnrit.tamu.edu
Tue Oct 1 13:39:34 PDT 2002
OK, I'll buy that. I'm disappointed to hear that, though, because my
.map file is 3400 lines long and I've got 4 versions of it to alter each
time I make a change because I provide users a java-applet based version
of the page and a non-applet version, as well as large and small map
variations...OUCH! This is going to be very tedious to implement, but I
guess that's what I get paid for! :-)
About the scaleable symbols...I'm not using them because I don't know
what they are? I've got a symbols.sym file defined (that I took from
the maplab tar archive) and it's got a bunch of symbols defined in it
and I scale them with the "SIZE" keyword in my map file...is there
something else I could do? What exactly is a "scaleable symbol"?
Thanks very much for your help!
Martin, Daniel wrote:
> It's all clear now. Sorry for the misunderstanding.
>
>
>
> AFAIK, classes don't have a status you can access in the
> HTML legend like layers (unfortunately). What I know will work
> (because I do it all the time) is creating 4 separate layers each with
> 1 and only 1 class and moving your MINSCALE and MAXSCALE settings to
> the layer object. Give all the layers the same name (very important).
>
>
>
> This will perform exactly the same since you have no crossover of
> scale, and the HTML legend will perform as you expect it to.
>
>
>
> On a separate subject, you might be better off using scaleable symbols
> rather than your current solution. But, perhaps you have reasons for
> not using them.
>
>
>
> -Dan
>
>
>
> -----Original Message-----
> From: Mike Smith [mailto:nospam at cnrit.tamu.edu]
> Sent: Tuesday, October 01, 2002 2:43 PM
> To: Martin, Daniel
> Cc: mapserver-users at lists.gis.umn.edu
> Subject: Re: [mapserver-users] HTML Legend with Status Checking...
>
> LAYER
> NAME Parima_Surveyhouseholds
> GROUP Region
> TYPE Point
> STATUS off
> DATA parima_surveyhouseholds
> HEADER 'parima_surveyhouseholds.shp_header.html'
> TEMPLATE parima_surveyhouseholds.shp_query.html
>
> CLASS
> MINSCALE 20136780
> Name 'Parima Survey Households'
> SYMBOL 'triangle'
> SIZE 5
> COLOR 255 0 0
> OUTLINECOLOR 0 0 0
> END # CLASS
>
> CLASS
> MINSCALE 10068390
> MAXSCALE 20136779
> Name 'Parima Survey Households'
> SYMBOL 'triangle'
> SIZE 8
> COLOR 255 0 0
> OUTLINECOLOR 0 0 0
> END # CLASS
>
> CLASS
> MINSCALE 5034193
> MAXSCALE 10068389
> Name 'Parima Survey Households'
> SYMBOL 'triangle'
> SIZE 11
> COLOR 255 0 0
> OUTLINECOLOR 0 0 0
> END # CLASS
>
> CLASS
> MINSCALE 0
> MAXSCALE 5034192
> Name 'Parima Survey Households'
> SYMBOL 'triangle'
> SIZE 15
> COLOR 255 0 0
> OUTLINECOLOR 0 0 0
> END # CLASS
>
> END # LAYER
>
> Martin, Daniel wrote:
>
>> Could you provide the map file definition for the Parima Survey
>> Households layer?
>>
>>
>>
>> Thanks,
>>
>> Dan
>>
>> -----Original Message-----
>> From: Mike Smith [ mailto:nospam at cnrit.tamu.edu ]
>> Sent: Tuesday, October 01, 2002 11:56 AM
>> To: Martin, Daniel
>> Cc: mapserver-users at lists.gis.umn.edu
>> Subject: Re: [mapserver-users] HTML Legend with Status
>> Checking...
>>
>> Same thing. Now I don't have group header bars seperating my
>> layers, but all the layers still show up and when I click on
>> a layer that has scale-specific classes, the symbols for all
>> scales still show up. By the way, I'm on Mapserver 3.6.1 and
>> here's the page to go to if you want to see what I'm talking
>> about:
>>
>> http://cnrit.tamu.edu/maps/map_init.html
>>
>> Click on the very last button on that page (the one that says
>> "FRAMES VERSION" on it). When the map shows up, expand the
>> "Regional" folder on the left-hand side to display those
>> layers. The one that I'm working on right now is called
>> "Parima Survey Households". Click on that layer to load it
>> into the map, then you'll see the various symbols I'm
>> referring to show up in the legend. I represent the Parima
>> households with red triangle symbols and I have different
>> sized triangles depending on how far zoomed in you are so
>> that they are small at a high scale and larger as you zoom
>> in...but I don't want all versions of that symbol to show up
>> in my legend all the time...just the one that's in scale.
>>
>> Thanks again!
>>
>> Martin, Daniel wrote:
>>
>>> Try this. Take out the leg_group_html section, and the
>>> leg_layer_html section, leaving only the leg_class_html
>>> section. Take them out entirely - don't leave an empty set
>>> of tags. Then, let me know what happens.
>>>
>>>
>>>
>>> -Dan
>>>
>>> -----Original Message-----
>>> From: Mike Smith [ mailto:nospam at cnrit.tamu.edu ]
>>> Sent: Tuesday, October 01, 2002 11:33 AM
>>> To: Martin, Daniel
>>> Cc: mapserver-users at lists.gis.umn.edu
>>> Subject: Re: [mapserver-users] HTML Legend with Status
>>> Checking...
>>>
>>> Gladly. Here is my legend code:
>>>
>>> [leg_group_html]
>>> <tr>
>>> <td colspan=3
>>> bgcolor=#cccccc><b>[leg_group_name]</b></td>
>>> </tr>
>>> [/leg_group_html]
>>>
>>> [leg_layer_html]
>>> [/leg_layer_html]
>>>
>>> [leg_class_html]
>>> <tr>
>>> <td width=15> </td>
>>> <td>
>>> <img src="[leg_icon width=15 height=15]"
>>> width=15 height=15>
>>> </td>
>>> <td>
>>> [leg_class_name]
>>> </td>
>>> </tr>
>>> [/leg_class_html]
>>>
>>>
>>> However, it does not work as you say (and as the
>>> documentation on the web page says!). Layers that are
>>> "off" do not show up (that's as expected and what I
>>> want), that's fine, but layers that are out of SCALE DO
>>> show up, and that's not as expected and that's not as
>>> the documentation states and that's NOT what I want.
>>> For example, I have a layer called
>>> Ethiopia_Rivers...here's what it looks like:
>>>
>>> LAYER
>>> NAME "Ethiopia_Rivers"
>>> TYPE LINE
>>> STATUS off
>>> GROUP Ethiopia
>>> DATA "ethiopia_rivers"
>>> HEADER 'ethiopia_rivers.shp_header.html'
>>> CLASS
>>> MAXSCALE 8710165
>>> Name 'Ethiopia Rivers'
>>> COLOR 102 204 255
>>> TEMPLATE ethiopia_rivers.shp_query.html
>>> END # CLASS
>>> END # LAYER
>>>
>>> Now, when I'm viewing my map at full extent, my scale
>>> factor is 1: 20136789, therefore if I click on the
>>> Ethiopia_Rivers layer at that zoom level, nothing shows
>>> up in the map. This is the exact behavior that I would
>>> expect...I'm out of scale for that layer, so it doesn't
>>> show up in the map until I zoom in. The PROBLEM,
>>> however, is that the "Ethiopia Rivers" icon and label
>>> pop up in my legend...this is counter-intuitive,
>>> contrary to the documented behavior of Mapserver, and
>>> just flat-out frustrating! If the layer is not showing
>>> up in my map (because it's out of scale), then it should
>>> NOT be in my legend either. Grrrr!!! Pardon me for
>>> sounding bitter...I'm not lashing out at you, I'm very
>>> grateful for your help, I'm just frustrated at Mapserver.
>>>
>>> Thanks!
>>>
>>> Martin, Daniel wrote:
>>>
>>>>Perhaps I misunderstood. By default (no opt_flag set) layers that are out
>>>>of scale and layers that have a STATUS off will not show in an HTML legend.
>>>>
>>>>
>>>>A legend exactly like this should do exactly what it sounds like you want:
>>>>
>>>>[leg_class_html]
>>>><TR>
>>>> <TD>
>>>> <img src="[leg_icon]" border=0>
>>>> </TD>
>>>> <TD>
>>>> <font face="arial" size=2>[leg_class_name]</font>
>>>> </TD>
>>>></TR>
>>>>[/leg_class_html]
>>>>
>>>>I'm not sure why you are having trouble getting the default action. Perhaps
>>>>you could provide your current legend.
>>>>
>>>>-Dan
>>>>
>>>>-----Original Message-----
>>>>From: Mike Smith [mailto:nospam at cnrit.tamu.edu]
>>>>Sent: Tuesday, October 01, 2002 10:59 AM
>>>>To: Martin, Daniel
>>>>Cc: mapserver-!
>>>>user!
>>>>
>>>>s at li!
>>>>
>>>>sts.gis.u
>>>>mn.edu
>>>>Subject: Re: [mapserver-users] HTML Legend with Status Checking...
>>>>
>>>>
>>>>Thank you, but this didn't change a thing. Actually, let me correct
>>>>that...it had a negative effect because now all my layers show up too,
>>>>even if they are not displayed in the map. I want only active layers to
>>>>show in the legend and I want only IN-SCALE class symbols to show up in
>>>>the legend, I don't want 4 symbols to show up in the legend for every
>>>>layer that I have which has scale-specific classes...I just don't guess
>>>>I can do that without converting everything over to Mapscript. X-(
>>>>
>>>>Any other ideas?
>>>>
>>>>Martin, Daniel wrote:
>>>>
>>>>>You probably want a bit mask of 2 in your opt_flag. Layers with STATUS off
>>>>>still show, but layers out of scale don't show.
>>>>>
>>>>>[leg_layer_html opt_flag=2]
>>>>>
>>>>>
>>>>>Per http://mapserver.gis.umn.edu/doc36/html-legend-howto.html :
>>>>>
>>>>>1: If set, show layer even if out of scale (default: hide layers out of
>>>>>scale).
>>>>>
>>>>>2: If set, show layer even if status is OFF (default: hide layers with
>>>>>STATUS OFF).
>>>>>
>>>>>4: If set, show layer even if type is QUERY (default: hide layers of TYPE
>>>>>QUERY)
>>>>>
>>>>>8: If set, show layer even if type is ANNOTATION (default: hide layers of
>>>>>TYPE ANNOTATION)
>>>>>
>>>>>
>>>>>In my experience, opt_flag=2 is the most intuitive.
>>>>>
>>>>>-Dan
>>>>>
>>>>>
>>>>>
>>>>>-----Original Message-----
>>>>>From: Mike Smith [mailto:nospam at cn!
>>>>>rit.!
>>>>>tamu!
>>>>>.ed
>>>>>u]
>>>>>Sent: Mo
>>>>>nday, September 30, 2002 5:06 PM
>>>>>To: mapserver-users at lists.gis.umn.edu
>>>>>Subject: [mapserver-users] HTML Legend with Status Checking...
>>>>>
>>>>>
>>>>>Hello,
>>>>>
>>>>> I've seen how you can make legends using PHP Mapscript that check to
>>>>>see whether a layer or class is in scale before displaying it in the
>>>>>legend, but no mention of how to do this if I'm not using Mapscript. I
>>>>>have sub-classed many of my layers so that symbols show up in different
>>>>>sizes depending on how far zoomed in you are. In other words, I'm using
>>>>>"MINSCALE" and "MAXSCALE" in my classes, but all of my classes show up
>>>>>in the legend and that's really annoying! I want ONLY the in-scale
>>>>>symbol to show up in the legend as it does in the map...any tips on how
>>>>>to do this without Mapscript? I see the "if" conditional statements in
>>>>>the HTML Legend How-to, but!
>>>>> there
>>>>>'s no status o
>>>>>f "SCALE" to
>>>>>check with
>>>>>those statements... if I could put an if statement in my legend template
>>>>>that checked whether or not a class or layer was in scale, then I'd be
>>>>>in business...any way to do this?
>>>>>
>>>>>Thanks!
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/mapserver-users/attachments/20021001/8f9d59fe/attachment.htm>
More information about the MapServer-users
mailing list