[mapserver-users] HTML Legend with Status Checking...

Mike Smith nospam at cnrit.tamu.edu
Tue Oct 1 12:42:56 PDT 2002


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 cnrit.!
>>>>tamu!
>>>>.edu]
>>>>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/511000d2/attachment.htm>


More information about the MapServer-users mailing list