[Chameleon] Adding Points

Eric Bridger eric at gomoos.org
Mon Aug 9 16:09:51 EDT 2004


I am a new to Chameleon also, so can't answer most of your questions,
but I created a custom widget is used to add labels to a map. Below is
some code which should work with minor modifications to put a symbols on
the map. This is done in the ParseURL() method of a widget which extends
CWCWidget.

$oLayer = $this->moMapObject->oMap->getLayerByName('contaminant_label');
$oLayer->set("status", MS_ON);

$pt = ms_newPointObj();
$ln = ms_newLineObj();
$shp = ms_newShapeObj(MS_SHAPE_POINT);
// we need a single point line since shapeObj can't add just points.
$pt->setXY($label_x,$label_y);
$ln->add($pt);
$shp->add($ln);
$shp->set("text", $theLabel);
$oLayer->addFeature($shp);

I let Chameleon do the drawing, just turn the layer on and add a FEATURE
at the correct place.  It also works when adding mulitple FEATURE's to
the LAYER, i.e. more than one point.

Here is the definition of the contaminant_label layer:

LAYER
  NAME "contaminant_label"
  STATUS OFF
  TRANSFORM FALSE
  TYPE ANNOTATION
  CLASS
    STYLE
    END
    LABEL
      TYPE TRUETYPE
      FONT arial
      SIZE 12
      COLOR 0 0 0
      ANTIALIAS TRUE
      POSITION LR
      PARTIALS FALSE
      BUFFER 0 
    END
  END
END 


Note: I have TRANSFORM FALSE, since my x, y are pixels not geographic
coordinates. You could make the layer TYPE POINT, add a SYMBOL, etc. and
don't set the 'text' of the FEATURE it should work.

Eric


On Mon, 2004-08-09 at 15:29, Ken Sanderson wrote:
> Thanks Will for the reply.
> 
> I have sorta been a bit down this road before and I am having a problem
> with the classes. I really don't have a lot of experience with PHP
> classes so I find it hard to follow all the dependancies, but from what
> I can tell $this->moMapObject->oMap needs to be with a widget that's an
> extend of the CWCWidget?
> 
> My widget I have created does the following:
> 1) loads the button image with the other Navigation tools, sets the
> appropriate NavCommand when its selected.
> 2) user clicks on the map, it gets the pixel coords, converts to
> geographic coords, then sends to a PHP script that loads up a userform
> to collect some specific information about the point.
> 3) this is the part I am struggling with: want to display a point on the
> map where the user clicked and add another if they click again. I have
> the coords from step 2, but still need to find a way of adding the
> point.
> 
> For parts one and two I have it setup so that my widget class extends
> NavTool. I assume you can't extend to more then one object? So my
> question is how do I access both the NavTool and CWCWidget in order to
> use $this->moMapObject->oMap? 
> 
> Thanks again,
> 
> Ken
> 
> -----Original Message-----
 
> To: Ken Sanderson
> Cc: chameleon at lists.maptools.org
> Subject: Re: [Chameleon] Adding Points
> 
> 
> Hi Ken,
> 
> Ken Sanderson wrote:
> > A few more questions in regards to adding a point, or points, to the 
> > map within Chameleon. Been tossing around various ideas so my 
> > questions are a bit mixed:
> > 
> > 1) I have been looking over the mapscript examples, which are fairly 
> > clear, what I don't understand is how I hook into the map/image that 
> > chameleon is going to return vs returning another image with my points
> 
> > on it. Is there a way to reference the map object that chameleon is 
> > using from another widget and add points to it?
> Widgets have access to the map object by using:
> $this->moMapObject->oMap.
> 
> There are a number of widgets to look at that reference the map object. 
>   Take a look at the expressionbuilder.widget.php file for example 
> (specifically the parseURL function).
> 
> > 
> > 2) Another method I found an exmaple on was the MapImageSharedResource
> 
> > in conjunction with SQLQuery Widget, only in my case I would likely 
> > create a widget to build the array of points in another method. It 
> > says in the example: "where you want your map, you should include the 
> > MapImageSharedResource". Where is that supposed to be? In the 
> > MAPDHTMLWIDGET table?
> Sorry, I'm not too familiar with using the SQLQuery widget.  I'll leave 
> that to someone else to answer.
> 
> > 
> > 3) Lastly while poking around in the drawmap.php file I found some 
> > references to pulling points from the URL, specifically: "Draw points 
> > from URL if necessary" section. Has anyone used this or knows if there
> 
> > is any functions/widgets/documentation on how this might be used?
> To the best of my knowledge there is nothing in Chameleon that is making
> 
> use of that point drawing functionality.  The drawmap.php file has a 
> fairly long history and this code, I believe, was added pre-Chameleon.
> 
> Although I don't think there is a way in Chameleon to access this 
> functionality, it appears that the code is a complete example of how to 
> add points to a new layer in your mapfile (although I haven't tried it -
> 
> it looks like it should).
> 
> In a nutshell, what you'll need to do is create a new widget and copy 
> the point creation code to it.  This will involve referencing the map 
> object as indicated in question 1 ($this->moMapObject->oMap) as well as 
> collecting point information (possibly as indicated in question 2 - or 
> some other way).
> 
> Hope that helps.
> 
> Regards,
> Bill
> 
> -- 
> ________________________________________________
> 
>   William A. Bronsema, C.E.T.
>   Applications Developer,
>   DM Solutions Group Inc.
 



More information about the Chameleon mailing list