[Mapserver-users] altering $layer->{symbolscale} before draw()

Nikolai Vladychevski niko at isl.net.mx
Fri Feb 27 07:05:10 PST 2004


Hi, 

I have a perl script that uses mapscript to create a map with many layers. I 
want to dynamicaly alter SYMBOLSCALE of the layer depending on the scale of 
the map, because when user zooms too much, the symbol is too big. I can not 
lower SYMBOLSCALE and leave it fixed in mapfile becasue when user is 
browsing at high scales, the symbols is very small, almost invisible. 

So I have this code, but it isn't giving expected results, nothing happends:
sub drawLayers {
   my $m=shift;  #map
   my $i=shift;  #image 

for ($lidx=0;$lidx<$m->{numlayers};$lidx++) {
       $l=$m->getLayer($lidx);
       if ($m->{scale}<32000 && ($l->{name} eq "emplazamientos")) {
           $l->{symbolscale}=320;  #<- this doesn't make any difference
       }
       $l->draw($m,$i);
   } 

here are some lines in mapfile:
 LAYER
       NAME emplazamientos
       DATA emplazamientos.shp
       CLASSITEM 'ID'
       LABELITEM 'ID'
       SYMBOLSCALE 32000
       CLASS
           NAME 'emplazamientosactivos'
           COLOR 0 0 255
           SYMBOL 'emplazamiento'
           SIZE 10
           TEMPLATE "emplazamiento.html"
       END
       .....
  SYMBOL
       NAME "emplazamiento"
       TYPE TRUETYPE
       FONT transmision
       FILLED true
       ANTIALIAS true
       CHARACTER "F"
  END
...... 

How do I have to change the {symbolscale} variable in order to achieve 
changes in the display, as I do it above, setting it to different values 
doesn't make any difference 

Thanks in advance
Nikolai



More information about the MapServer-users mailing list