Multiple Symbols and Breadcrumbs

Stephen Woodbridge woodbri at SWOODBRIDGE.COM
Tue Aug 24 11:43:32 EDT 2004


You should create a column that has the heading value in it, like DIR
which has values 0 - 15, then in you map file use CLASSITEM DIR and then
create 16 CLASS ... END blocks, one for each symbol like

LABEL
   ...
   CLASSITEM "DIR"
   CLASS
     EXPRESSION "0"
     STYLE
       SYMBOL "bump0"
     END
   END
   CLASS
     EXPRESSION "1"
     ...
   END
   ...
END

etc for each symbol and mapserver will do all the work for you.

-Steve W.

Antonio Agostini wrote:

> Hi All.
>
> I want to display breadcrumbs showing a vehicle's route. Right now it works
> with one symbol for all points.
>
> How do I go about showing different symbols depending, for example, on the
> vehicle heading?
>
> I have 16 symbols defined in the map file, "bump0" to "bump15". Headings
> are numbers from 0 to 15. At runtime I build the symbol name and change it
> but it is only taking the last one and renders all points with that one.
>
> Here's some of my map file and code. Any help is greatly appreciated. I'm
> still learning and hope to contribute here very soon.
>
> #16 symbols like this
> SYMBOL
>  NAME 'bump0'
>  TYPE PIXMAP
>  IMAGE 'images/bump-green-00.gif'
> END
>
> #This is the layer I currently use for rendering all with the same symbol
> LAYER
>  NAME 'GRAPHIC2'
>  TYPE POINT
>  MINSCALE 0
>  MAXSCALE 55000000000
>  STATUS ON
>  FEATURE
>  END
>    CLASS
>     STYLE
>    SYMBOL 'images/bump8grn.GIF'
>   END
>  END
> END
>
> #PHP Code
>
> //arr is an array with data like (lat,long,heading,lat,long,heading,etc...)
>  $pos=0;
>  $heading=-1;
>  for ($i=0; $i < $size/3; $i++) {
>   //
>   $oShp=ms_newShapeObj(MS_SHAPE_LINE);
>   $oLine=ms_newLineObj();
>                 // do this after the first point
>   if ($pos>0) {
>    if ($arr[$pos+2] <> $heading) {  //detect heading
> change
>     $heading = $arr[$pos+2];
>     $mysymbol=$gpoMap->getSymbolByName
> ("bump".$heading);  //load this heading's symbol from map file
>     $myClass = $dummylayer2->getClass(0);
>     $mystyle = $myClass->getstyle(0);
>     $mystyle->set("symbol", $mysymbol);
>    }
>    $oLine->addXY($arr[$pos+1],$arr[$pos]);
>
>    $oShp->add($oLine);
>    $dummylayer2->addfeature($oShp);
>
>   }
>   else  //do this for the first point
>   {
>    $oLine->addXY($arr[$pos+1],$arr[$pos]);
>
>    $oShp->add($oLine);
>
>    //Set the first point label
>    $oShp->set("text",$Label);
>
>    $dummylayer->addfeature($oShp);
>   }
>   $pos=$pos+3; //skip three places to the next point
>   $oShp->free;
>   $oLine->free;
>  }
>



More information about the mapserver-users mailing list