The preceding examples have created or modified the XML for layer definitions in memory. To add those layers to a map:
This function adds takes a layer’s XML, creates a resource in the session repository from it, and adds that layer resource to a map.
<?php
///////////////////////////////////////////////////////////
function add_layer_definition_to_map($layerDefinition,
$layerName, $layerLegendLabel, $mgSessionId,
$resourceService, &$map)
// Adds the layer definition (XML) to the map.
// Returns the layer.
{
include('../Common.php');
// Validate the XML.
$domDocument = new DOMDocument;
$domDocument->loadXML($layerDefinition);
if (! $domDocument->schemaValidate(
"$schemaDirectory\LayerDefinition-1.0.0.xsd") )
{
echo "ERROR: The new XML document is invalid.
<BR>\n.";
return NULL;
}
// Save the new layer definition to the session
// repository
$byteSource = new MgByteSource($layerDefinition,
strlen($layerDefinition));
$byteSource->SetMimeType(MgMimeType::Xml);
$resourceID = new MgResourceIdentifier(
"Session:$mgSessionId//$layerName.LayerDefinition");
$resourceService->SetResource($resourceID,
$byteSource->GetReader(), null);
$newLayer = add_layer_resource_to_map($resourceID,
$resourceService, $layerName, $layerLegendLabel,
$map);
return $newLayer;
}
///////////////////////////////////////////////////////////
This function adds a layer resource to a map.
function add_layer_resource_to_map($layerResourceID,
$resourceService, $layerName, $layerLegendLabel, &$map)
// Adds a layer defition (which can be stored either in the
// Library or a session repository) to the map.
// Returns the layer.
{
$newLayer = new MgLayer($layerResourceID,
$resourceService);
// Add the new layer to the map's layer collection
$newLayer->SetName($layerName);
$newLayer->SetVisible(true);
$newLayer->SetLegendLabel($layerLegendLabel);
$newLayer->SetDisplayInLegend(true);
$layerCollection = $map->GetLayers();
if (! $layerCollection->Contains($layerName) )
{
// Insert the new layer at position 0 so it is at
// the top of the drawing order
$layerCollection->Insert(0, $newLayer);
}
return $newLayer;
}
///////////////////////////////////////////////////////////
?>
This function adds a layer to a legend’s layer group.
function add_layer_to_group($layer, $layerGroupName,
$layerGroupLegendLabel, &$map)
// Adds a layer to a layer group. If necessary, it creates
// the layer group.
{
// Get the layer group
$layerGroupCollection = $map->GetLayerGroups();
if ($layerGroupCollection->Contains($layerGroupName))
{
$layerGroup =
$layerGroupCollection->GetItem($layerGroupName);
}
else
{
// It does not exist, so create it
$layerGroup = new MgLayerGroup($layerGroupName);
$layerGroup->SetVisible(true);
$layerGroup->SetDisplayInLegend(true);
$layerGroup->SetLegendLabel($layerGroupLegendLabel);
$layerGroupCollection->Add($layerGroup);
}
// Add the layer to the group
$layer->SetGroup($layerGroup);
}
///////////////////////////////////////////////////////////