layers = array(); $oMapProjection = $oMap->getProjection(); if ((isset($_REQUEST['queryfile']) && $_REQUEST['queryfile'] != "") || isset($_SESSION['selection_array'])) { if (isset($_REQUEST['queryfile']) && $_REQUEST['queryfile'] != "") $oMap->loadquery($_REQUEST['queryfile']); if (isset($_SESSION['selection_array'])) { //print_r($_SESSION['selection_array']); $bAllLayers = 1; $aLayers = array(); if (isset($_REQUEST['layers']) && $_REQUEST['layers'] !='') { $aLayers = explode(",", $_REQUEST['layers']); $bAllLayers = 0; } $aStartCount = array(); if (isset($_REQUEST['startcount']) && $_REQUEST['startcount'] !='') { $aStartCount = explode(",", $_REQUEST['startcount']); } /* if number of layers and number of startcount should be the same */ if ( count($aStartCount) > 0 && (count($aLayers) != count($aStartCount))) { echo "error : number of layers and number of startcount should be the same"; exit; } $properties = $_SESSION['selection_array']; $aSelectedLayers = $properties->layers; if (count($aSelectedLayers) > 0) { $result->extents = NULL; $result->extents->minx = $properties->extents->minx; $result->extents->miny = $properties->extents->miny; $result->extents->maxx = $properties->extents->maxx; $result->extents->maxy = $properties->extents->maxy; for ($i=0; $i$layerName->numelements > 0) { array_push($result->layers, $layerName); $result->$layerName->propertynames = $properties->$layerName->propertynames; $result->$layerName->propertyvalues = $properties->$layerName->propertyvalues; $result->$layerName->propertytypes = $properties->$layerName->propertytypes; $result->$layerName->metadatanames = $properties->$layerName->metadatanames; $result->$layerName->bbox = getBBox($layerName); /*if start and count are given, validate them. If valid return the valid elements. if not return all elements. */ $start = -1; $count = -1; if (count($aStartCount) > 0) { for ($j=0; $j= $properties->$layerName->numelements || $count > $properties->$layerName->numelements || ($start + $count) > $properties->$layerName->numelements) { $start = -1; $count = -1; } } /* if invalid return all elements*/ if ($start < 0 || $count < 0) { $start =0; $count = $properties->$layerName->numelements; } //print_r($properties->$layerName); $result->$layerName->numelements = $count; $result->$layerName->values = array(); $result->$layerName->metadata = array(); $iIndice = 0; for ($j=$start; $j<($start+$count); $j++) { $szLayerProjection = getLayerProjection($oMap,$layerName); $oLayerExtents = $result->$layerName->bbox; if($szLayerProjection){ if($szLayerProjection != $oMapProjection){ $minx = $oLayerExtents->minx; $miny =$oLayerExtents->miny; $maxx = $oLayerExtents->maxx; $maxy =$oLayerExtents->maxy; reprojectPoint( &$minx, &$miny, $szLayerProjection, $oMapProjection ); reprojectPoint( &$maxx, &$maxy, $szLayerProjection, $oMapProjection ); $result->extents->minx = $minx; $result->extents->miny = $miny; $result->extents->maxx = $maxx; $result->extents->maxy= $maxy; } } $result->$layerName->values[$iIndice] = $properties->$layerName->values[$j]; $result->$layerName->metadata[$iIndice] = $properties->$layerName->metadata[$j]; $iIndice++; } } } } } } header('Content-type: application/json'); header('X-JSON: true'); echo var2json($result); function getBBox($layername){ global $properties; foreach($properties->$layername->metadatanames as $key=>$value){ if($value == "bbox"){ $aBBox = explode(",",$properties->$layername->metadata[0][$key]); $oBBox->minx = $aBBox[0]; $oBBox->miny = $aBBox[1]; $oBBox->maxx = $aBBox[2]; $oBBox->maxy= $aBBox[3]; return $oBBox; } } return false; } function getLayerProjection($oMap,$szLayerName){ $oLayer = &$oMap->getLayerByName($szLayerName); if($oLayer){ $szProjection = $oLayer->getProjection(); if($szProjection){ return $szProjection; } else { return false; } } else { return false; } } function reprojectPoint( &$nX, &$nY, $szFrom, $szTo ) { //echo "reproject $nX,$nY from $szFrom to $szTo\n"; //check to see if reprojection is necessary if ($szFrom == '' || $szTo == '') { return; } if (stristr($szFrom, "epsg") !== false && stristr( $szFrom, "init=") == false) { $szFrom = "init=".strtolower($szFrom); } if (stristr($szTo, "epsg") !== false && stristr( $szTo, "init=") == false) { $szTo = "init=".strtolower($szTo); } if ($szFrom == $szTo) { return; } $oPoint = ms_newPointObj(); $oPoint->setXY( $nX, $nY ); $oPoint->project( ms_newProjectionObj( $szFrom ), ms_newProjectionObj( $szTo ) ); $nX = $oPoint->x; $nY = $oPoint->y; //echo " :".$nX." ,".$nY."
"; } ?>