arcgis for js实现GP服务创建、发布、调用(调用GP发布服务)

1.本例中使用的地图服务和GP服务都可以从arcgis server manage中拿到;

2.数据类型,这是GP服务的数据类型。每一个GP服务数据类型和JS数据类型进行对应,比如缓冲区模型制作中使用的FeatureClass,,发布服务说明(对于说明可以参考这里http://www.cnblogs.com/HPhone/archive/2012/11/18/2775860.html)中可以看到Data Type为GPFeatureRecordSetLayer 则arcgis for js api中使用FeatureSet对象进行构造参;


3.输入要素和输出要素名称可以在此处查看



调用代码如下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>利用GP调用自定义buffer工具实现缓冲区分析功能</title>
    <link rel="stylesheet" type="text/css" href="http://localhost:8087/arcgis_js_api/library/3.22/3.22/esri/css/esri.css" />
    <script src="http://localhost:8087/arcgis_js_api/library/3.22/3.22/init.js"></script>
    <script src="../js/jquery-1.3.1.js"></script>
    <style>
        html, body, #map {
            width:   100%;
            height:  100%;
            margin:  0;
            padding: 0;
        }
    </style>
    <script>
        require([
            "esri/Color",
            "esri/layers/ArcGISTiledMapServiceLayer",
            "esri/map",
            "esri/symbols/SimpleFillSymbol",
            "esri/symbols/SimpleLineSymbol",
            "esri/toolbars/draw",
            "esri/symbols/SimpleMarkerSymbol",
            "esri/graphic",
            "esri/geometry/Extent",
            "esri/tasks/Geoprocessor",
            "esri/SpatialReference",
            "esri/tasks/FeatureSet",
            "esri/tasks/JobInfo",
            "esri/tasks/LinearUnit"
        ], function(
             Color,
             ArcGISTiledMapServiceLayer,
             Map,SimpleFillSymbol,
             SimpleLineSymbol,
             Draw,
             SimpleMarkerSymbol,
             Graphic,
             Extent,
             Geoprocessor,
             SpatialReference,
             FeatureSet,
             JobInfo,
             LinearUnit
        ) {
            var map;
            map = new Map("map", {
                extent: new Extent({
                    "xmin":126.08797131337525,"ymin":41.88483304829672,"xmax":130.05572254059723,"ymax":47.20292839632739,
                    "spatialReference":{"wkid":4326}})
            });
            var Layer = new ArcGISTiledMapServiceLayer("http://localhost:6080/arcgis/rest/services/itms/MapServer", {
                "id": "layer",
                "opacity": 0.75,
                "showAttribution":false
            });
            map.addLayer(Layer);
            var  gpBuffer=new Geoprocessor("http://localhost:6080/arcgis/rest/services/Model/GPServer/bufferModel");
            gpBuffer.outSpatialReference=new SpatialReference({wkid:4326});
            var bufferParams={};
            map.on("click",function (e) {
                debugger;
                var featureSet=new FeatureSet();
                var graphics=new Graphic(e.mapPoint,new SimpleMarkerSymbol());
                featureSet.spatialReference=new SpatialReference({wkid:4326});
                map.graphics.add(graphics);
                featureSet.features=[graphics];
                featureSet.geometryType="point";
                var Dis = new LinearUnit();
                Dis.distance = 0.1;
                Dis.units = esri.Units.KILOMETERS;
                bufferParams={
                    Feature_Class:featureSet,    //输入要素名称要和发服务的参数名称一致
                    Distance:Dis                  //距离名称要和发服务的距离参数一致
                };
                gpBuffer.submitJob(bufferParams,successResult);
            })
            function successResult(result){
                var jobId = result.jobId;
                var status = result.jobStatus;
                if(status ===JobInfo.STATUS_SUCCEEDED) {
                    gpBuffer.getResultData(jobId, "Output_Feature_Class", addResults);    //第二个参数要和发服务的结果集名称一致
                }
            }
            function addResults(results){
                var features = results.value.features;
                if(features.length>0) {
                    for (var i = 0, length = features.length; i != length; ++i) {
                        var feature = features[i];
                        var polySymbolRed = new SimpleFillSymbol();
                        polySymbolRed.setOutline(new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID, new Color([0, 0, 0, 0.5]), 1));
                        polySymbolRed.setColor(new Color([255, 0, 0, 0.5]));
                        feature.setSymbol(polySymbolRed);
                        map.graphics.add(feature);
                    }
                    alert("提示计算成功!");
                }
                else{
                    alert("提示计算失败!");
                }
            }
        });

    </script>
</head>
<body>
<div id="map"></div>
</body>
</html>



版权声明:本文为wo_buzhidao原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。