ArcGIS GP服务之五 JavaScript的调用

ArcGIS GP服务之五 JavaScript的调用

在这里插入图片描述

  1. 帮助说明,这个是在发布服务的时候,手动输入的。也就是说,如果我们想要别人来使用我们的工具,发布服务的时候,尽量让这个帮助写的清楚一些,现在很多懒人都不愿意写。
  2. 参数列表,会列出所有的参数,参数名字是需要记住的,到时候需要写在代码里面的。
  3. 数据类型,这是GP服务的数据类型。每一个GP服务数据类型和JS数据类型进行对应。
    在这里插入图片描述
    之后是js的调用
dojo.require("dijit.layout.BorderContainer");
dojo.require("dijit.layout.ContentPane");
dojo.require("esri.map");
dojo.require("esri.toolbars.draw");
dojo.require("esri.tasks.gp");
var map, toolbar, gp;
function init() {
    map = new esri.Map("map");
    basemap = new esri.layers.ArcGISDynamicMapServiceLayer("http://localhost:6080/arcgis/rest/services/basemap2/MapServer");
    map.addLayer(basemap);
    dojo.connect(map, 'onLoad', function(theMap) {
        dojo.connect(dijit.byId('map'), 'resize', map, map.resize);
        toolbar = new esri.toolbars.Draw(map);
        dojo.connect(toolbar, 'onDrawEnd', drawEnd);
    });
    var button = dojo.byId("polygon");
    dojo.connect(button, 'onclick', drawPolygon);
 
}
 
function drawPolygon() {
    toolbar.activate(esri.toolbars.Draw.POLYGON);
 
}
 
function drawEnd(geometry) {
    toolbar.deactivate();
    var symbol = new esri.symbol.SimpleFillSymbol(esri.symbol.SimpleFillSymbol.STYLE_SOLID, new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_DASHDOT, new dojo.Color([255, 0, 0]), 2), new dojo.Color([255, 255, 0, 0.25]));
    var graphic = new esri.Graphic(geometry, symbol);
    map.graphics.add(graphic);
    tojob(graphic);
}
 
function tojob(graphic) {
    //第一步构造GP
    var gpUrl = 'http://localhost:6080/arcgis/rest/services/GP/ContaminatedAreas/GPServer/ContaminatedAreas';
    gp = new esri.tasks.Geoprocessor(gpUrl);
    //第二步,构造参数
    //我们通过上面,了解到GPFeatureRecordSetLayer对应FeatureSet
    var features = [];
    features.push(graphic);
    var featureset = new esri.tasks.FeatureSet();
    featureset.features = features;
    //构造缓冲长度,这里的单位是可以更改的,我使用的是度,简单一些
    var Dis = new esri.tasks.LinearUnit();
    Dis.distance = 1;
    Dis.units = esri.Units.DECIMAL_DEGREES;
    //Distance__value_or_field_,后悔当时参数名字没有改
    var parms = {
        ContaminatedAreas : featureset,
        Distance__value_or_field_ : Dis
    };
    //这里函数是异步的,使用函数是submitJob,同步的使用的是execute。
    //成功之后,调用jobResult,建议看一下这个参数。
    gp.submitJob(parms, jobResult);
}
 
function jobResult(result) {
    var jobId = result.jobId;
    var status = result.jobStatus;
    if(status === esri.tasks.JobInfo.STATUS_SUCCEEDED) {
        //成功之后,将其中的结果取出来,当然这也是参数名字。
        //在模型中,想要取出中间结果,需要设置为模型参数
        gp.getResultData(jobId, "polygon_Buffer", addResults);
        gp.getResultData(jobId, "resultCity", addResults);
    }
}
//将缓冲添加到地图上
function addBufferResults(results) {
    console.log(results);
    var features = results.value.features;
    for(var i = 0, length = features.length; i != length; ++i) {
        var feature = features[i];
        var polySymbolRed = new esri.symbol.SimpleFillSymbol();
        polySymbolRed.setOutline(new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_SOLID, new dojo.Color([0, 0, 0, 0.5]), 1));
        polySymbolRed.setColor(new dojo.Color([255, 0, 0, 0.5]));
        feature.setSymbol(polySymbolRed);
        map.graphics.add(feature);
    }
}
//将受污染的城市,添加到地图上
function addResults(results) {
    console.log(results);
    var features = results.value.features;
    for(var f = 0, fl = features.length; f < fl; f++) {
        var feature = features[f];
        var polySymbolRed = new esri.symbol.SimpleMarkerSymbol(esri.symbol.SimpleMarkerSymbol.STYLE_SQUARE, 12, new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_SOLID, new dojo.Color([204, 102, 51]), 1), new dojo.Color([158, 184, 71, 1]));
        feature.setSymbol(polySymbolRed);
        map.graphics.add(feature);
    }
}
 
dojo.addOnLoad(init);

转载自一个大佬:https://www.cnblogs.com/HPhone/archive/2012/11/18/2775860.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值