getElementsByTagName('map-source'); # Array to store the popups found. $content = ''; $totalResults = 0; $firstResult = false; $resultFeatures = array(); for($i = 0; $i < $msXML->length; $i++) { $node = $msXML->item($i); $layers = $node->getElementsByTagName('layer'); for($l = 0; $l < $layers->length; $l++) { $layer = $layers->item($l); $layerName = $layer->getAttribute('name'); $path = $node->getAttribute('name').'/'.$layerName; if(in_array($path, $layersToSearch)) { $file = $node->getElementsByTagName('file')->item(0)->firstChild->nodeValue; # Okay, now it's time to cook if(substr($file,0,1) == '.') { $file = $CONFIGURATION['root'].$file; } $map = ms_newMapObj($file); # Create an array of query layers $queryLayers = array(); if($layerName == 'all') { for($ml = 0; $ml < $map->numlayers; $ml++) { array_push($queryLayers, $map->getLayer($ml)); } } else { # Turn on the specific layer array_push($queryLayers, $map->getLayerByName($layerName)); } # Iterate through the queryLayers... foreach($queryLayers as $queryLayer) { $queryLayer->set('template', $queryLayer->getMetaData('itemquery')); $queryLayer->set('status', MS_DEFAULT); $queryString = $queryLayer->getMetaData('itemquery-filter'); $queryString = str_replace('[qstring]', $queryValue, $queryString); $queryLayer->setFilter($queryString); $filterItem = $queryLayer->getMetaData('itemquery-filteritem'); if($filterItem) { $queryLayer->set('filteritem', $filterItem); } if($queryItem) { $queryLayer->set('filteritem', $queryItem); } $queryLayer->queryByRect($queryLayer->getExtent()); $queryLayer->open(); $numResults = $queryLayer->getNumResults(); if($numResults > 0 and $totalResults == 0) { $res = $queryLayer->getResult(0); $firstResult = $queryLayer->getFeature($res->shapeindex); } for($rx = 0; $rx < $numResults; $rx++) { $res = $queryLayer->getResult($rx); array_push($resultFeatures, $queryLayer->getFeature($res->shapeindex)); } $totalResults += $numResults; $queryLayer->close(); } $results = $map->processquerytemplate(array(), false); $content = $content . $results; } } } if($totalResults == 0) { print implode('', file($CONFIGURATION['itemquery_miss'])); exit(0); } #print " GeoMOOSE.setLayerUrl('/internal/highlight', CONFIGURATION.mapserver_url);"; #print " GeoMOOSE.updateLayerParameters('/internal/highlight', { 'map' : '".$tempDirectory."/".$uniqueId.".map'});"; #print " GeoMOOSE.turnLayerOn('/internal/highlight/all');"; #print " GeoMOOSE.refreshLayers('/internal/highlight/all');"; if($mode == 'search') { header('Content-type: text/xml'); print ""; print ""; print ""; print ""; } elseif($mode == 'map') { $mapext = $_REQUEST['mapext']; $mapsize = $_REQUEST['map_size']; if(!isset($mapsize)) { $mapsize = $_REQUEST['mapsize']; } # $path = '/opt/geomoose/geomoose/moose2-trunk/htdocs/php/'; $path = ''; $highlight_map = ms_newMapObj($path.'itemquery/highlight.map'); $pointsLayer = $highlight_map->getLayerByName('points'); $polygonsLayer = $highlight_map->getLayerByName('polygons'); $linesLayer = $highlight_map->getLayerByName('lines'); #resultFeatures for($i = 0; $i < sizeof($resultFeatures); $i++) { if($resultFeatures[$i]->type == MS_SHAPE_POINT) { $pointsLayer->addFeature($resultFeatures[$i]); } elseif($resultFeatures[$i]->type == MS_SHAPE_POLYGON) { $polygonsLayer->addFeature($resultFeatures[$i]); } elseif($resultFeatures[$i]->type == MS_SHAPE_LINE) { $linesLayer->addFeature($resultFeatures[$i]); } } header('Content-type: image/gif'); $ext = explode(' ', $mapext); $size = explode(' ', $mapsize); $highlight_map->setExtent($ext[0],$ext[1],$ext[2],$ext[3]); $highlight_map->setSize($size[0], $size[1]); $image = $highlight_map->prepareImage(); $image = $highlight_map->draw(); $image->saveImage(''); } else { header('Content-type: text/html'); print 'Error! Unknown mode!'; } function parseBoolean($p) { return($p == 1 || $p == '1' || strtolower($p) == 'true' || strtolower($p) == 'on'); } ?>