Skip To Content

Web アプリケーションでの結果マップ サービスの使用

このトピックの内容

ジオプロセシング サービスは、非同期ジオプロセシング タスク出力を視覚的に表現するために結果マップ サービスを作成します。結果マップ サービスのオプションは、出力データをより良く理解するためにシンボルを定義した場合や、ダウンロードできない大規模データセット出力が存在する場合に有効化できます。

ダイナミック マップ サービスを追加する方法と同様に、結果マップ サービスを Web アプリケーションに追加できます。結果マップ サービスのレイヤーは、ジオプロセシング タスクのジオプロセシング出力に対応しています。結果マップサービスを Web アプリケーションに追加すると、結果マップ サービスのすべての出力レイヤーが Web アプリケーションに追加されますが、出力の一部を除外したい場合は、必要に応じてレイヤーの表示設定をオフにすることができます。結果マップ サービスにフィーチャ レイヤーが存在する場合は、それらのフィーチャ レイヤーをクライアント側のフィーチャ レイヤーとして個別に Web アプリケーションに追加できます。クライアント側のフィーチャ レイヤーは動的にフィーチャを検索して、それらのフィーチャをクライアント側でグラフィックスとしてレンダリングします。大規模データセット出力の場合は、Web アプリケーションの現在の範囲のフィーチャを動的にダウンロードするようにクライアント側のフィーチャ レイヤーのプロパティを設定できます。

ダイナミック マップ サービスとしての結果マップ サービスの使用

結果マップ サービスには、URL http://<ArcGIS REST サービス>/<GP サービス名>/MapServer/jobs/<ジョブ ID> を使用してアクセスできます。jobId は、サーバーによって非同期ジョブに割り当てられる一意の ID です。jobId は、jobComplete イベント ハンドラーから返される JobInfo インスタンスから取得できます。次の JavaScript コードが示す操作手順:

  1. イベント ハンドラーを非同期ジオプロセシング タスクの jobComplete イベントに接続します。
  2. jobComplete イベント ハンドラー内の jobId から結果マップ サービスの URL を特定します。
  3. ダイナミック マップ サービスとして結果マップ サービスを Web アプリケーションに追加します。

JavaScript API での結果マップ サービスの使用

//connect eventhandlers and submitJob.
function myGPSubmitJob(){ 
    // Connect event handler onJobComplete 
    dojo.connect(gpTask, "onJobComplete",onTaskComplete);
    dojo.connect(gpTask, "onError",onTaskFailure);
    dojo.connect(gpTask, "onStatusUpdate",onTaskStatus);
    //params is assumed as a name-value pair instance of gpparameter values.
    gpTask.submitJob(params);
}

// On Job Complete Callback add a dynamic map service using ResultMapService
function onTaskComplete(jobInfo){
    //replace mapservice url with your url and append jobid
    var mapurl = "http://..../<MyGPServiceName>/MapServer/jobs/" + jobinfo.jobId;
    //create a dynamic map service
    var gpResultLayer = new esri.layers.ArcGISDynamicMapServiceLayer(mapurl, {
                id: "gpLayer",
                opacity: 0.5
            });
    //add to web application.
     map.addLayer(gpResultLayer);
}

結果マップ サービスを Web アプリケーションに追加するための上記の 3 つのステップは Flex と Silverlight の API にも適用できます。FlexSilverlight API のコード スニペットはそれぞれのオンライン SDK で探すことができます。

タスク パラメーターおよび他のイベント ハンドラーの定義に関する詳細については、「Web アプリケーションでのジオプロセシング タスクの使用」をご参照ください。

クライアント側のフィーチャ レイヤーとしての結果マップ サービスの使用

データ タイプ GPFeatureRecordSetLayer のジオプロセシング タスク出力パラメーターは、結果マップ サービスのフィーチャ レイヤーとしてレンダリングできます。これらのレイヤーをクライアント側のフィーチャ レイヤーとして追加できます。レイヤーがクライアント側のフィーチャ レイヤーとして追加されると、それらのフィーチャがクライアントにダウンロードされます。FeatureLayer メソッドを使用すると、対話型のポップアップ ウィンドウや情報ウィンドウを作成したり、属性値に基づいて動的なチャートやグラフを作成したりできます。また、HTML ポップアップ ウィンドウとアタッチメントにもアクセスできます (これらのレイヤーで利用可能な場合)。次の JavaScript コードは、フィーチャ レイヤーを Web アプリケーションに追加する方法を示しています。

Web アプリケーションへの featureLayers (フィーチャ レイヤー) の追加

// On Job Complete Callback add a featurelayer using ResultMapService
function onTaskComplete(jobInfo){
    //replace mapservice url with your url and append jobid
    var mapurl = "http://..../<MyGPServiceName>/MapServer/jobs/" + jobinfo.jobId;
    //the code snippet assumes the featureLayer is the first layer in the result map service
    var fLayerUrl = mapurl + “/0”;
    
    //create a feature layer 
    //the MODE_ONDEMAND property allows the client to restrictively download features for current web app extent
    var featurelayer=new esri.layers.FeatureLayer(fLayerUrl, {
                id: "gpfLayer",
                mode: esri.layers.FeatureLayer.MODE_ONDEMAND,
                outFields: ["*"]
            });
    map.addLayer(featurelayer);	

    
}

また、このコード スニペットのロジックは Flex API と Silverlight API にも適用可能です。ポップアップ ウィンドウ/情報ウィンドウ、グラフ、およびチャートの作成に関する詳細情報は JavaScriptFlex、および Silverlight の SDK で参照できます。

関連トピック