function OutputLayerInfo($layer, $resourceService, $featureService) { $mappings = GetLayerPropertyMappings($resourceService, $layer); if (!isset($_SESSION['property_mappings'])) { $_SESSION['property_mappings'] = array(); } $_SESSION['property_mappings'][$layer->GetObjectId()] = $mappings; $layerDefinition = $layer->GetLayerDefinition(); $aLayerTypes = GetLayerTypes($featureService, $layer); //echo '<pre>'; print_r($aLayerTypes); echo '</pre>'; exit; echo "propertyMappings:{"; $sep = ''; foreach ($mappings as $name => $value) { echo $sep . "'{$name}':'{$value}'"; $sep = ','; } echo "},"; echo "uniqueId:'" . $layer->GetObjectId() . "',"; echo "layerName:'" . addslashes($layer->GetName()) . "',"; echo 'layerTypes:['; $sep = ''; for ($j = 0; $j < count($aLayerTypes); $j++) { echo $sep . $aLayerTypes[$j]; $sep = ','; } echo '],'; echo "displayInLegend:" . BooleanToString($layer->GetDisplayInLegend()) . ","; echo "expandInLegend:" . BooleanToString($layer->GetExpandInLegend()) . ","; echo "resourceId:'" . $layerDefinition->ToString() . "',"; echo "parentGroup:"; echo $layer->GetGroup() ? "'" . $layer->GetGroup()->GetObjectId() . "'," : 'null,'; echo "legendLabel:'" . addslashes($layer->GetLegendLabel()) . "',"; echo "selectable:" . BooleanToString($layer->GetSelectable()) . ","; echo "visible:" . BooleanToString($layer->GetVisible()) . ","; echo "actuallyVisible:" . BooleanToString($layer->isVisible()) . ","; if (IsLayerEditable($resourceService, $layer)) { echo "editable:true,"; } else { echo "editable:false,"; } echo buildScaleRanges($layer); }
$oLayer = $layers->GetItem($i); $featureResId = new MgResourceIdentifier($oLayer->GetFeatureSourceId()); /* the class that is used for this layer will be used to select features */ $class = $oLayer->GetFeatureClassName(); /* select the features */ $queryOptions = new MgFeatureQueryOptions(); $geomName = $oLayer->GetFeatureGeometryName(); //TODO : seems that property mapping breaks the selection ???? //could it be that $selection->AddFeatures($layerObj, $featureReader, 0) is //the one causing a problem when the properies are limited ? if (isset($_SESSION['property_mappings']) && isset($_SESSION['property_mappings'][$oLayer->GetObjectId()])) { $mappings = $_SESSION['property_mappings'][$oLayer->GetObjectId()]; } else { //This is normally pre-stashed by LoadMap.php, but if the client is using the new //CREATERUNTIMEMAP shortcut, this information does not exist yet, so fetch and stash $mappings = GetLayerPropertyMappings($resourceService, $oLayer); $_SESSION['property_mappings'][$oLayer->GetObjectId()] = $mappings; } if (count($mappings) > 0) { foreach ($mappings as $name => $value) { if ($geomName != $name) { $queryOptions->AddFeatureProperty($name); //echo "$name $value <br>\n"; } } } //Add geometry property in all cases. $queryOptions->AddFeatureProperty($geomName); $filter = $selection->GenerateFilter($oLayer, $class); $queryOptions->SetFilter($filter); $featureReader = $featureService->SelectFeatures($featureResId, $class, $queryOptions);
for ($i = 0; $i < $layers->GetCount(); $i++) { $ldfContent = $layerDefinitionContents->GetItem($i); $ldfdoc = DOMDocument::LoadXML($ldfContent); array_push($layerDocs, $ldfdoc); $fsContent = $featureSourceContents->GetItem($i); $fsDoc = DOMDocument::LoadXML($fsContent); array_push($fsDocs, $fsDoc); } for ($i = 0; $i < $layers->GetCount(); $i++) { //only output layers that are part of the 'Normal Group' and //not the base map group used for tile maps. (Where is the test for that Y.A.???) $layer = $layers->GetItem($i); $layerContent = $layerDocs[$i]; $fsContent = $fsDocs[$i]; $layerObj = NULL; $mappings = GetLayerPropertyMappings($resourceService, $layer, $layerContent); $_SESSION['property_mappings'][$layer->GetObjectId()] = $mappings; $layerObj->uniqueId = $layer->GetObjectId(); $layerObj->layerName = addslashes($layer->GetName()); //$aLayerTypes = GetLayerTypes($featureService, $layer); $aLayerTypes = GetLayerTypesFromResourceContent($layer, $layerContent); $layerObj->layerTypes = $aLayerTypes; $layerObj->resourceId = $layerDefinitionIds->GetItem($i); $layerObj->parentGroup = $layer->GetGroup() ? $layer->GetGroup()->GetObjectId() : ''; $layerObj->selectable = $layer->GetSelectable(); $layerObj->visible = $layer->GetVisible(); $layerObj->actuallyVisible = $layer->isVisible(); $layerObj->editable = IsLayerEditable($resourceService, $layer, $fsContent); $isBaseMapLayer = $layer->GetLayerType() == MgLayerType::BaseMap; $layerObj->isBaseMapLayer = $isBaseMapLayer; if ($isBaseMapLayer) {