Dynamic Layer Creation Problem
Sean Gillies
sgillies at FRII.COM
Sat Oct 29 19:38:18 PDT 2005
Excellent! My only other comment is that your creation of a new
colorObj that is bound to style.color is superfluous. Remember, a
styleObj already has color members, so you can simply do this:
style = mapscript.styleObj(class)
style.color.setRGB(255, 0, 0)
It's too bad that the mapserver-users list is completely walled off
from Google -- the only search engine that matters anymore -- it
seems that I'm doomed to repeat this advice about style colors forever.
Sean
On Oct 29, 2005, at 7:36 PM, Stephen Woodbridge wrote:
> Yeah! Got it to work:
>
> if ($line->{numpoints}) {
> warn "numpoints=$line->{numpoints}\n";
> my $lay = new mapscript::layerObj($map);
> $lay->{status} = 1;
> $lay->{type} = $mapscript::MS_LAYER_LINE;
> $lay->{name} = "tsp_route";
>
> my $class = new mapscript::classObj($lay);
> $class->{status} = 1;
> my $style = new mapscript::styleObj($class);
> $style->{color} = new mapscript::colorObj();
> $style->{color}->setRGB(255,0,0);
> #$style->{size} = 1;
> #$style->{symbol} = 0;
>
> warn "numclasses=$lay->{numclasses}\n";
> warn "numstyles=$class->{numstyles}\n";
> warn "color=" . $style->{color}->toHex() . "\n";
>
> my $shp = new mapscript::shapeObj($mapscript::MS_SHAPE_LINE);
> $shp->{classindex} = 0;
> $shp->add($line);
> $shp->setBounds();
> #$shp->draw($map, $lay, $img); #<<<<< seems this does not
> work!!!
>
> $lay->addFeature($shp); #<<
> my $err = $lay->draw($map, $img); #<< But this does
> warn "draw err=$err\n"; #<<
>
> my $errObj = new mapscript::errorObj();
> while ($errObj) {
> warn "$errObj->{code}:$errObj->{message}:$errObj->{routine}
> \n";
> $errObj = $errObj->next();
> }
> }
>
> -Steve W.
>
>
>
> Stephen Woodbridge wrote:
>
>> Hi Sean,
>>
>> Thank you for the response. I tried adding that and still no joy. The
>> code looks like this now:
>>
>> if ($line->{numpoints}) {
>> warn "numpoints=$line->{numpoints}\n";
>> my $lay = new mapscript::layerObj($map);
>> $lay->{status} = 1;
>> $lay->{type} = $mapscript::MS_LAYER_LINE;
>> $lay->{name} = "tsp_route";
>>
>> my $class = new mapscript::classObj($lay);
>> $class->{status} = 1;
>> my $style = new mapscript::styleObj($class);
>> $style->{color} = new mapscript::colorObj();
>> $style->{color}->setRGB(255,0,0);
>> $style->{size} = 1;
>> $style->{symbol} = 0;
>>
>> warn "numclasses=$lay->{numclasses}\n";
>> warn "numstyles=$class->{numstyles}\n";
>> warn "color=" . $style->{color}->toHex() . "\n";
>>
>> my $shp = new mapscript::shapeObj($mapscript::MS_SHAPE_LINE);
>> $shp->{classindex} = 0;
>> $shp->add($line);
>> $shp->setBounds();
>> $shp->draw($map, $lay, $img);
>> }
>>
>> Any other ideas, would be appreciated.
>>
>> -Steve W.
>>
>> Sean Gillies wrote:
>>
>>
>>> On Oct 29, 2005, at 6:54 PM, Stephen Woodbridge wrote:
>>>
>>>
>>>> Hi all,
>>>>
>>>> I know this has been covered before but I haven't been able to find
>>>> anything that helps. I'm doing perl mapscript.
>>>>
>>>> if ($line->{numpoints}) {
>>>> warn "numpoints=$line->{numpoints}\n"; # reports 257
>>>> my $lay = new mapscript::layerObj($map);
>>>> $lay->{status} = 1;
>>>> $lay->{type} = $mapscript::MS_LAYER_LINE;
>>>> $lay->{name} = "tsp_route";
>>>>
>>>> my $class = new mapscript::classObj($lay);
>>>> #$class->{status} = 1; # doesn't help
>>>>
>>>> my $style = new mapscript::styleObj($class);
>>>> # what should the value for pen be? tried 0 and 1 to no luck
>>>> $style->{color} = new mapscript::colorObj(255,0,0,1);
>>>> #$style->{size} = 1; # doesn't help
>>>> #$style->{symbol} = 1; # doesn't help
>>>>
>>>> warn "numclasses=$lay->{numclasses}\n"; # reports 1
>>>> warn "numstyles=$class->{numstyles}\n"; # reports 1
>>>>
>>>> my $shp = new mapscript::shapeObj($mapscript::MS_SHAPE_LINE);
>>>> $shp->add($line);
>>>> $shp->draw($map, $lay, $img);
>>>> }
>>>>
>>>> This code is running but is not drawing the polyline, $line->
>>>> {numpoints}
>>>> = 257 points.
>>>>
>>>> Yes, I know I can template this in the mapfile, but I would
>>>> rather not.
>>>> We have all these function in mapscript and it seems they should
>>>> just
>>>> work if you do the logical thing like above.
>>>>
>>>> -Steve W.
>>>>
>>>>
>>>
>>> Steve,
>>>
>>> You're neglecting to set the classindex attribute of your "shp"
>>> shapeObj. There are other problems in your code as well, but that's
>>> most likely the main one.
>>>
>>> Sean
>>>
>>>
>>> ---
>>> Sean Gillies
>>> sgillies at frii dot com
>>> http://zcologia.com
>>>
>>>
>>
>
---
Sean Gillies
sgillies at frii dot com
http://zcologia.com
More information about the MapServer-users
mailing list