在 Web 应用程序中使用结果地图服务
地理处理服务可创建结果地图服务,以提供异步地理处理任务输出的直观显示。当已定义符号系统以便更好地了解输出数据时,或者具有无法下载的大型数据集输出时,可以启用结果地图服务选项。
可使用与添加动态地图服务类似的方法,将结果地图服务添加到 Web 应用程序中。结果地图服务中的图层与地理处理任务的地理数据集输出相对应。将结果地图服务添加到 Web 应用程序时,结果地图服务中的所有输出图层都将添加到 Web 应用程序中。然而,如果要排除某些输出,可根据需要关闭图层的可见性。如果结果地图服务中存在任何要素图层,则可在 Web 应用程序中将其单独添加为客户端要素图层。客户端要素图层将动态查询要素,并在客户端将其渲染为图形。如果是大型数据集输出,则可以设置客户端要素图层的属性以动态方式下载 Web 应用程序当前范围的要素。
使用结果地图服务作为动态地图服务
使用 URL http://<arcgis rest services>/<GPServiceName>/MapServer/jobs/<jobId>,可以访问结果地图服务。作业 Id 是服务器为异步作业分配的唯一标识符。可以从 jobComplete 事件处理程序返回的 JobInfo 实例中获取作业 Id。以下 JavaScript 代码表示:
- 将事件处理程序连接到异步地理处理任务的 jobComplete 事件
- 根据 jobComplete 事件处理程序中的作业 Id 确定结果地图服务 URL
- 将结果地图服务作为动态地图服务添加至 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 应用程序的三个步骤也同样适用于 Flex 和 Silverlight API。可在 Flex 和 Silverlight API 的相应在线 SDK 中查找 Flex 和 Silverlight API 代码片段。
您可以从在 Web 应用程序中使用地理处理任务中了解有关定义任务参数和其他事件处理程序的详细信息。
使用结果地图服务图层作为客户端要素图层
GPFeatureRecordSetLayer 数据类型的地理处理任务输出参数将在结果地图服务中渲染为要素图层。可以将这些图层添加为客户端要素图层。将图层添加为客户端要素图层时,需要将要素下载到客户端。使用 FeatureLayer 方法,可以创建交互式弹出窗口和信息窗口,或者可创建基于属性值的动态图表和图形。此外,还可以访问 HTML 弹出窗口和附件(若可用于这些图层)。以下 JavaScript 代码显示了如何将要素图层添加至 Web 应用程序。
将要素图层添加至 Web 应用程序
// 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 和 Silverlight API。您可以在 JavaScript、Flex 和 Silverlight SDK 中了解有关创建弹出窗口和信息窗口、图形和图表的详细信息。