I am running MapServer 5.4.2 and PHP 5.3.
As a PHP/Mapscript novice, I am using Kropla's Beginning MapServer (2005) to
learn what I need to create my own mapping application. Chapter 9 describes a
simple dataset of five restaurant locations added to a point layer, then
queried using an input radius from a previously-clicked point. This is supposed
to create a table of all locations(restaurants) within the radius.
This is Kropla's function which finds point locations within the radius. The
arguments to NearbyStores() are point object, map object and radius
value(miles) respectively:
function NearbyStores($point,$map,$radius) {
// get query layer
$qlayer = $map->getLayerByName('poi');
$qlayer->set("tolerance",$radius);
// query the query layer - $radius is set in browser
// queryByPoint ignores TOLERANCE units using native map units
// instead - in this case decimal degrees. The number of miles
// per degree is (approximately of course) 69.04 therefore
// the correction from degrees to miles. This would have to
// change if TOLERANCEUNITS, the map or scale units change.
@$qlayer->queryByPoint($point, MS_MULTIPLE, $radius/69.04);
$numResults = $qlayer->getNumResults();
// we've got results, store id equals shape index
if ($numResults != 0) {
for ($i = 0; $i < $numResults; $i++) {
$query_result = $qlayer->getResult($i);
$StoreList[$i] = $query_result->shapeindex;
}
} else {
$StoreList = ""; // no results
}
return $StoreList;
}
The variable $numResults appears to correctly identify the number of locations
within your input radius. But $query_result->shapeindex behaves strangely. The
array $Storelist[], when populated with all five restaurant store-ids in the
database using function NearbyStores(), should contain 1,2,3,4,5 (there is no
store id 0). However if only 1 location is found, $Storelist[] contains 0, if 2
locations, it contains 0,1 and if all five are found it contains 0,1,1,1,1. In
other words, the first array element of $Storelist becomes zero and any
subsequent elements are always 1. Consequently when you proceed to populate the
display table for all five, you get details of the first location followed by
four duplicates of the second.
Is anyone familiar with Kropla's book, or can anyone explain this behaviour by
the various PHP/Mapserver functions shown above or suggest a reasonable
alternative?
Many Thanks,
Rob Pearce
________________________________
CONFIDENTIALITY - This e-mail and any attached files contain information that
is confidential and/or may be subject of legal privilege, intended only for use
by the addressee(s). If you are not the intended recipient or the person
responsible for delivering the message to the intended recipient, please be
advised that you have received this message in error and that any
dissemination, copying or use of this message or attachment is strictly
forbidden, as is the disclosure of the information therein. If you have
received this message in error please notify the sender immediately and
preserve this confidentiality by deleting the message.
No binding contract will result from this e-mail until and unless an officer,
on behalf of the sender, signs a written document.
Sender accepts no responsibility for the completeness or accuracy of this
message as it has been transmitted over public networks.
Unless otherwise specifically stated any views or opinions are solely those of
the author and do not represent those of the sender Company.
_____________________________________________________________________________________________________________________
This email has been scanned by the MessageLabs Email Security System, on behalf
of the Gardline Group of Companies.
For more information please visit http://www.messagelabs.com/email
____________________________________________________________________________________________________________________________________________________________________
mapserver-users mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/mapserver-users