Mapscript, SVG and Annotations

Martin Weinelt mweinelt at PLANIGLOBE.COM
Tue Jul 10 12:52:10 EDT 2007


I tried $map->drawLabelCache($SVGImg ), but that returns MS_FAILURE. Actually, there seems a problem with labeling on a SVG-'image'.
I work around with:

open SVGMAP, '>>', '/path/to/saved/svgimg.svg';  
for (my $labnum=0; $labnum < $map->{labelcache}->{numlabels};$labnum++ ) {
      my $next_lab = $map->nextLabel() ;
      my $lab_txt  = $next_lab->{text};
      my $lab_x    = $next_lab->{point}->{x}; my $lab_y = $next_lab->{point}->{y};
      print SVGMAP  '<text x="'.$lab_x.'" y="'.$lab_y.'" font-family="verdana" font-size="10pt" fill="#000000" stroke="#ffffe6" stroke-width="0.5">'.$lab_txt.'</text>' . "\n";
 }
print SVGMAP  '</svg>';
close SVGMAP;  

Of course, I would much more like to make use of MapServers anti-overposting mechanics for labels.

Really nobody else came across that problem?

Martin 

On Montag 09 Juli 2007, Martin Weinelt wrote:
> Hi,
>
> I am using addFeature to dynamically add site locations with a
> label to a map. It's Perl mapscript.
>
> @sites is an array of hash references, $sitesLyr is from the map
> file:
>
> ###############
>  foreach my $site (@sites) {
>    my $site_pt = $$site{'site_loc'};
>       $site_pt =~s/.*\((.*)\)*./$1/;  # extract the points x and y
>    my $line     = new mapscript::lineObj();
>    my $siteShp  = new
> mapscript::shapeObj($mapscript::MS_SHAPE_POINT);
>
>    my $point = new mapscript::pointObj();
>    my($x,$y) = split(/ /, $site_pt);
>       $point->setXY($x,$y);
>       $line->add($point);
>       $siteShp->add($line);
>       $siteShp->{text} = $$site{'site_name'};
>       $siteShp->setBounds();
>       $sitesLyr->addFeature($siteShp);
>   }
>
>  my $img = $map->draw();
>
> #############
>
> This works perfectly for the usual PNG output map. Using the same
> routine for a SVG 'image' results in the symbols/markers getting
> plotted, but the labels are missing. If I switch to a static
> shapefile for this layer, the labels do appear in the SVG.
>
> Is there anything special with SVG output and the 'addFeature'
> method for layers that I am missing?
>
> Thanks,
>
> Martin



-- 
 --- Martin Weinelt 
 --- kk+w - digital cartography 
 --- Kiel, Germany
 --- Tel: +49.431.5791165
 --- http://www.planiglobe.com 



More information about the mapserver-users mailing list