[Cartoweb-users] Make Outline plugin draw a ms_shape_obj
Simon ORTET
simon.ortet at silogic.fr
Fri Oct 12 11:52:53 EDT 2007
Finally I found why the layer was being activated.
When i do the
$styledShape->shape =
$pluginManager->mapquery->queryByIdSelection($mySelection);
in the handlePreDrawing function of my plugin, the
queryLayerByAttributes function of mapQuery plugin do a
// Layer has to be activated for query.
$msLayer->set('status', MS_ON);
I added a
$msLayer->set('status', MS_OFF);
at the end of the function and it's ok.
Do you think that could be a problem for the query plugin?
Simon Ortet
Silogic
Simon ORTET a écrit :
> Well i did something to make it work.
>
> In my plugin server file, instead of
> $pluginManager->outline->draw($this->shapes);
> i make a
> $pluginManager->outline->drawDirect($this->shapes);
>
> And i coded this function in ServerOutline.php like this:
>
> /public function drawDirect($shapes) {/
> / /
> / if (empty($shapes)) {/
> / return 0;/
> / }/
> / /
> / $msMapObj = $this->serverContext->getMapObj();/
> / foreach ($shapes as $shape) {/
> /
> $this->drawFeatureDirect($shape,$this->getConfig()->polygonLayer);/
> / }/
>
> / $this->drawMap($msMapObj);/
>
> / return 0;/
> / }/
>
> The drawFeatureDirect is just like drawFeature except i replaced the
> $f = $this->toShapeObj($shape->shape);
> by
> $f = $shape->shape[0];
>
>
> My problem now is that i've got all the layer drawn and i don't
> understand why.
> the $f variable is a ms_shape_obj extracted from a layer. I see it
> rendered with the correct style on the map. So the modifications work.
> But the plugin activates the whole layer and it's drawn too (whereas i
> didn't activate it) and i don't understand why.
>
> I someone sees why in the code i posted... otherwise i'll keep you
> posted.
>
> Thanks.
>
>
> Simon ORTET a écrit :
>> Hi,
>>
>> I made a plugin that uses outline plugin. It takes coordinates, make
>> a Cartoweb Shape of it and send it to outline with
>>
>> $pluginManager->outline->draw($this->shapes);
>>
>> It works fine. Now i need this plugin to deal with shapes extracted
>> from my postgis database (ms_ShapeObj). Here's what i did to
>> implement this. In Server[myPlugin].php (handlePreDrawing function):
>> $mySelection = new IdSelection();
>> $mySelection->layerId = $this->objTable; // The name
>> of my postgis layer
>> $mySelection->idAttribute = $this->objField;
>> $mySelection->idType = "string";
>> $mySelection->selectedIds = array($this->objValue);
>> $styledShape = new StyledShape();
>> $styledShape->shape =
>> $pluginManager->mapquery->queryByIdSelection($mySelection);
>>
>> $shapeStyle = new StyleOverlay();
>> $shapeStyle->size = 20;
>> $shapeStyle->color->setFromRGB(-1, -1, -1);
>> $shapeStyle->outlineColor->setFromRGB(120, 20, 20);
>>
>> $styledShape->shapeStyle = $shapeStyle;
>> $this->shapes = array($styledShape);
>>
>> And then i do the
>> $pluginManager->outline->draw($this->shapes);
>>
>> So i expected my plugin to deal with both coordinates requests and
>> postgis requests. But i've got an error "unknown shape type". So i
>> guess the outline plugin only takes Cartoweb Shapes.
>>
>> Is there a way to convert my ms_ShapeObj to a cartoweb shape? Or to
>> make outline plugin draw my ms_ShapeObj?
>>
>> Thanks
>>
>> Simon Ortet
>> Silogic
>> _______________________________________________
>> Cartoweb-users mailing list
>> Cartoweb-users at lists.maptools.org
>> http://lists.maptools.org/mailman/listinfo/cartoweb-users
>>
> _______________________________________________
> Cartoweb-users mailing list
> Cartoweb-users at lists.maptools.org
> http://lists.maptools.org/mailman/listinfo/cartoweb-users
>
More information about the Cartoweb-users
mailing list