queryByPoint() on a dynamic layer

Eric Bridger eric at GOMOOS.ORG
Wed Jan 25 06:08:00 PST 2006


Mark,
You will need to set a value for the 'index' property of your shape
object before calling addFeature($shape).

Not sure how to do this is PHP mapscript but in Perl:
$shape->{index} = $point_id;

Then the point_id should be returned by your query.

Eric


On Fri, 2006-01-20 at 20:18, Mark Brooks wrote:
> I'm trying to queryByPoint on a dynamic point layer.  The points in the 
> layer are added from a mysql database.  When I queryByPoint on this 
> dynamic layer, the resulting shapeindex and tileindex are both -1, which 
> is not what is expected.
> 
> Here is how I ADD the points to the layer:
> $query = mysql_query(" mysql query...  ");
> while ($site = mysql_fetch_assoc($query)){
>     // this draws the dynamic point
>     $mypoint = ms_newPointObj()
>     $mypoint -> setXY($site['lon'],$site['lat']);
>     $mypoint->draw($map,$layer,$image,0,'name');
> 
>     // this adds the feature to the layer so that it
>     // can be queried.  No results are found from a query
>     // by only drawing it above.
>     // Probably not the most efficient and perhaps
>     // where I'm going wrong?
>     $mypoint_shape = ms_newShapeObj(MS_SHAPE_POINT);
>     $mypoint_line = ms_newLineObj();
>     $mypoint_line->add($mypoint);
>     $mypoint_shape->add($mypoint_line);
>     $stations_layer->addFeature($mypoint_shape);
> }
> 
> 
> Then later in my php script, this is how I query:
> // get coordinates to query
> $myclick = ms_newPointObj();
> $myclick -> setXY($geo_lon,$geo_lat);  // set the click point
> 
> // do the query
> $layer -> queryByPoint($myclick,MS_MULTIPLE,100);
> for ($i=0; $i<$layer->getNumResults(); $i++){
>     $result = $layer->getResult($i);
>     // output below shows 'shapeindex' and 'tileindex' are both -1
>     print_r($result);
> }
> 
> 
> What am I doing wrong?  If I queryByPoint on any static layer, tileindex 
> and shapeindex are good values.  But on this dynamic layer, they are 
> always -1.  Any ideas?
> 
> 
> -- 
> 
>    Mark Brooks
>    Environmental Meteorologist
>    State Climate Office of North Carolina
>    Box 7236, NC State University
>    Raleigh, NC 27695-7236
> 
>    E-mail:  mark_brooks at ncsu.edu
>    Phone:  919.515.1446
>    Fax:  919.515.1441



More information about the MapServer-users mailing list