[mapserver-users] Re: How to set Labels dynamically

Ludwig Kniprath ludwig at kni-online.de
Fri Dec 4 03:43:53 EST 2009


Hi Helen,
this sample-script should work:
---schnipp------
<?php
//1. Map-Object and Image
$blank_map_object = ms_newMapObj('your path to the sample mapfile below');
$blank_map_object->preparequery();
$blank_map_image = $blank_map_object->prepareImage();
//2. LAYER
$draw_layer = ms_newLayerObj($blank_map_object);
$draw_layer->set('type', MS_LAYER_POINT);
$draw_layer->set('status', MS_ON);
//3. CLASS, STYLE and LABEL
$new_class = ms_newClassObj($draw_layer);
$new_style = ms_newStyleObj($new_class);
$label_obj = $new_class->label;
$label_obj->set('size', 25);
$label_obj->set('type', MS_TRUETYPE);
//Path to arial.ttf must be defined in test_fontset.txt
$label_obj->set('font', 'arial');
$label_obj->set('angle', 30);
//0x007E is the "~" sign
$label_obj->set('wrap', 0x007E);
$label_obj->color->setRGB(0,255,0);
$label_obj->backgroundcolor->setRGB(0,0,255);
$label_obj->backgroundshadowcolor->setRGB(200,200,200);
$label_obj->set('backgroundshadowsizex', 15);
$label_obj->set('backgroundshadowsizey', 15);
//...and so on
//4. Shape with label
$draw_shape = ms_shapeObjFromWkt('POINT(2502500 5602500)');
$draw_shape->set('text', ' ~ Hello World!~ Mapserver is cool... ~');
$draw_layer->addFeature($draw_shape);
$draw_layer->draw($blank_map_image);
//5. Shape to Image
$blank_map_object->drawLabelCache($blank_map_image);
$blank_map_object->labelcache->free();
//6. ready
$image_url=$blank_map_image->saveWebImage();
echo "<img src='$image_url'/>";
?>
---schnapp------

With mini-mapfile:
---schnipp------
MAP
    name "test"
    fontset "your path to the fontset"
    units meters
    extent 2500000 5600000 2505000 5605000
    size 800 600
    imagecolor 255 255 255
    WEB
        imagepath "your path to tmp-directory"
        imageurl "your url to tmp-directory"
    END
END
---schnapp------

Regards
Ludwig


Helen Eskina schrieb:
> Hi,
>
> My $daLayer is defined dynamically. How should I define Label-Section in
> this case?
> $daLayer->set("type", MS_LAYER_POINT);
> $daLayer->set("status", MS_ON);
>  $class = ms_newClassObj($daLayer);
>  $style = ms_newStyleObj($class);
>  $style->color->setRGB(255,0,0);
>  $style->set("symbolname", "circle");
>  $style->set("size", 10);
>
> Thank you,
> Helen
> -----Original Message-----
> From: Ludwig Kniprath [mailto:ludwig at kni-online.de]
> Sent: Thursday, December 03, 2009 4:57 PM
> To: Helen Eskina; mapserver-users at lists.osgeo.org
> Subject: Re: How to set Labels dynamically
>
> Oops, you're right, "drawLabelCache" is a method of the map-object, but
> all the same it works for me!
> Perhaps a missing LABEL-Section in the mapfile-definition of your
> $daLayer?
> Regards
> Ludwig
>
> Helen Eskina schrieb:
>   
>> Hi Ludwig,
>>
>> Layer object doesn't have DrawLabelCache method. I've tried this line
>>     
> and
>   
>> got an error. I'm using Mapserver installed with fgs 5.4.2.
>>
>> I've tried
>>  $map-> drawLabelCache($image);
>> But it doesn't make any difference.
>>
>> Helen
>> -----Original Message-----
>> From: Ludwig Kniprath [mailto:ludwig at kni-online.de]
>> Sent: Thursday, December 03, 2009 12:13 PM
>> To: mapserver-users at lists.osgeo.org
>> Cc: heskina at ubitech.com
>> Subject: RE: How to set Labels dynamically
>>
>> Hi,
>> I think there's only one line missing after $daLayer->draw($image):
>>
>> $daLayer->drawLabelCache($image);
>>
>> Regards
>> Ludwig
>>
>>
>>     
>>> Message: 6
>>> Date: Thu, 3 Dec 2009 11:13:10 -0500
>>> From: Helen Eskina <heskina at ubitech.com>
>>> Subject: [mapserver-users] How to set Labels dynamically?
>>> To: mapserver-users at lists.osgeo.org
>>> Message-ID: <5CDE4E2F906F4CE9B22AFEDB42CD00F0 at SkySource>
>>> Content-Type: text/plain; charset="windows-1252"
>>>
>>> Hello,
>>>
>>>
>>>
>>> I couldn't find documentation how to set the text labels dynamically
>>>
>>>       
>> using
>>
>>     
>>> MapScript.
>>>
>>> My application should show points with labels on the map. Points and
>>>
>>>       
>> labels
>>
>>     
>>> are obtained dynamically from the database or some text file.
>>>
>>> I add the points to the layer and draw layer as following:
>>>
>>>
>>>
>>> $my_point = ms_newpointObj();
>>>
>>>
>>>
>>> $my_point->setXY(-75.895, 45.9227);
>>>
>>> $my_point->project($projInObj,$projOutObj);
>>>
>>>
>>>
>>> $line = ms_newLineObj();
>>>
>>> $line->add($my_point);
>>>
>>> $shape = ms_newShapeObj(MS_SHAPE_POINT);
>>>
>>> $shape->add($line);
>>>
>>> $shape->set(text, 'new point');
>>>
>>> $daLayer->addFeature($shape);
>>>
>>>
>>>
>>> $image=$map->draw();
>>>
>>> $daLayer->draw($image);
>>>
>>> $image_url=$image->saveWebImage();
>>>
>>>
>>>
>>> Points are displayed on the map, but no text. What am I doing wrong?
>>>
>>>
>>>
>>> I will appreciate any help,
>>>
>>> Helen
>>>
>>>       



More information about the mapserver-users mailing list