このための 1 つの方法は、JavaScript 関数を作成してから、[スクリプトを起動]コマンドを使用して、またはタスク ペインの onClick イベントの結果として、この関数をビューアから呼び出します。たとえば、Working With Feature Data サンプルのタスク ペインには、onClick によって実行された JavaScript 関数が表示されます。
function listSelection() { xmlSel = parent.parent.mapFrame.GetSelectionXML(); params = new Array("SESSION", parent.parent.mapFrame.GetSessionId(), "MAPNAME", parent.parent.mapFrame.GetMapName(), "SELECTION", xmlSel); pageUrl = "/mapguide/samplesphp/working_with_feature_data/ listselection.php"; parent.parent.formFrame.Submit(pageUrl, params, "taskPaneFrame"); }
これによって要求が listselection.php に送信されます。その内容は次のとおりです。
$map = new MgMap(); $map->Open($resourceService, $mapName); $selection = new MgSelection($map); $selection->Open($resourceService, $mapName); $layers = $selection->GetLayers(); if ($layers) { $queryOptions = new MgFeatureQueryOptions(); for ($i = 0; $i < $layers->GetCount(); $i++) { // Only check selected features in the Parcels layer. $layer = $layers->GetItem($i); if ($layer && $layer->GetName() == 'Parcels') { // Create a filter containing the IDs of the selected // features on this layer $layerClassName = $layer->GetFeatureClassName(); $selectionString = $selection->GenerateFilter($layer, $layerClassName); // Get the feature resource for the selected layer $layerFeatureId = $layer->GetFeatureSourceId(); $layerFeatureResource = new MgResourceIdentifier($layerFeatureId); // Apply the filter to the feature resource for the // selected layer. This returns // an MgFeatureReader of all the selected features. $queryOptions->SetFilter($selectionString); $featureReader = $featureService->SelectFeatures($layerFeatureResource, $layerClassName, $queryOptions); // Process each item in the MgFeatureReader, // displaying the owner name while ($featureReader->ReadNext()) { $val = $featureReader->GetString('NAME') . '<br /> ' . $featureReader->GetString('RPROPAD'); echo $val . '<br />'; } } } } else echo 'No selected layers'; echo '</p>';