The query code underwent major changes between 5.6 and 6.0 and one casualty was query processing like you're doing. On the bright side it's much more straight forward now. The general steps for a layer-based query is now just:
$layer->queryByRect($map, $rect); # layer is left open after a query operation for($i=0; $i<$layer->getNumResults(); $i++) { $shape = $layer->getShape($layer->getResult($)); # much simpler # do something with the shape } I see the MapScript/Swig query docs are woefully out of date. I'll file a ticket on that... Steve -----Original Message----- From: mapserver-users-boun...@lists.osgeo.org [mailto:mapserver-users-boun...@lists.osgeo.org] On Behalf Of Stefan Schwarzer Sent: Friday, August 03, 2012 6:37 AM To: mapserver-users@lists.osgeo.org Subject: [mapserver-users] getShape failing; changes from mapserver 5.6 to 6.0 Hi there, I am struggling with a few changes I need to go through in order to make my code working now with mapserver 6.x. This one concerns the query part, when a user clicks on the map and a window with some metadata is being displayed. An error message occurred: "Catchable fatal error: Argument 1 passed to layerObj::getShape() must be an instance of resultObj, integer given" When I changed the getShape command as indicated here [1], it says: "Fatal error: Call to a member function getShape() on a non-object" This is the code: //Query the Map at the point clicked if (!$imgbox) @$a = $map -> queryByPoint($click_pt, MS_MULTIPLE, -1); else $a = $map -> queryByRect($click_rt); if ($a == MS_SUCCESS) { $numResults = $Layer -> getNumResults(); $oLayer = $map -> getLayer($Layer -> index); // Open layer's table... take the list of fields to display from // the "HEADERRESULT_FIELDS" metadata in the layer object. $oLayer -> open(); $oRes = $oLayer -> getResult(0); //$oShape = $oLayer -> getShape($oRes->tileindex,$oRes->shapeindex); // before $oShape = $layer -> getShape($oLayer -> getResult(0)); // now ?? while(list($key, $val) = each($oShape -> values)) { //echo "<br />x - ".count($selFields)." - ".$key . " = " . $val; if (($key <> "META_DATA") AND ($key <> "oid") AND ($key <> "id") AND ($key <> "uid")) $selFields[count($selFields)] = $key; } Not sure what I should put there... Thanks for any hints, Stefan [1] http://mapserver.org/MIGRATION_GUIDE.html _______________________________________________ mapserver-users mailing list mapserver-users@lists.osgeo.org http://lists.osgeo.org/mailman/listinfo/mapserver-users _______________________________________________ mapserver-users mailing list mapserver-users@lists.osgeo.org http://lists.osgeo.org/mailman/listinfo/mapserver-users