前の例では、メモリ内の画層定義の XML を作成または修正しました。これらの画層をマップに追加するには、次の手順に従います。
この関数では、画層の XML を取得し、その XML からセッション リポジトリにリソースを作成し、画層のリソースをマップに追加します。
<?php
require_once('../common/common.php');
///////////////////////////////////////////////////////////
function add_layer_definition_to_map($layerDefinition,
$layerName, $layerLegendLabel, $mgSessionId,
$resourceService, &$map)
// Adds the layer definition (XML) to the map.
// Returns the layer.
{
// Validate the XML.
$domDocument = new DOMDocument;
$domDocument->loadXML($layerDefinition);
if (! $domDocument->schemaValidate(
"$schemaDirectory\LayerDefinition-1.1.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;
}
この関数では、画層のリソースをマップに追加します。
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; }
この関数では、画層を凡例の画層グループに追加します。
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); }