queryByPoint Problem
Rob McCulley
RMcCulley at COUNTY24.COM
Mon Apr 10 09:21:28 PDT 2006
Hi All,
I'm using php mapscript and I'm trying to identify features using queryByPoint at the point of the users click. I have two layers I'm interested in querying. If there are features in the first layer(line) at the click point, then I want to show those attributes, otherwise I want to show the attributes of the second layer(polygon). The possibility exists that the user could click on a point where no features exist in either layer. The script looks like this:
$buffer = 25.0;
$layer = $map->getLayerByName("Pipes");
@$layer->queryByPoint($queryPoint, MS_SINGLE, $buffer);
$results = $layer->getNumResults();
if ($results > '1') {
//Get Pipeline information
$oResult = $layer->getResult(0);
$layer->open();
$oShape = $layer->getShape($oResult->tileindex, $oResult->shapeindex);
//Get attributes and output info
} else {
$layer = $map->getLayerByName("Parcels");
@$layer->queryByPoint($queryPoint, MS_SINGLE, 0);
$results = $layer->getNumResults();
if ($results > '0') {
//Get roll number
$oResult = $layer->getResult(0);
$layer->open();
$oShape = $layer->getShape($oResult->tileindex, $oResult->shapeindex);
//Get attributes and output info
} else {
//Output nothing
}
}
The problem is, I don't get the expected results. I very rarely get any features returned from the first layer, and I always get results from the second layer, even if there isn't a feature at the click point. I have verified that coordinates being calculated are correct. Both layers have templates defined in the mapfile.
When I click directly on a line from the first layer in the map, with a buffer of 25.0, I should get the feature I have clicked on, but I always get the underlying polygon. When I click on a gap between polygons with a buffer of 0, I should get no results, but I always get one of the polygons close by.
Any help is much appreciated!
Rob McCulley
GIS Coordinator
County of Vermilion-River No. 24
More information about the MapServer-users
mailing list