[Cartoweb-users] Make Outline plugin draw a ms_shape_obj
Oliver Christen
oliver.christen at camptocamp.com
Mon Oct 15 08:32:08 EDT 2007
mmm, im not sure but a layer set to off shouldnt answer to query request.
But since it is not (should not) be visible, that not really a problem.
> 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
>>
> _______________________________________________
> 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