1. 程式人生 > >(十一)ArcGIS JS GP服務同步呼叫

(十一)ArcGIS JS GP服務同步呼叫

require(["esri/map", "esri/layers/ArcGISDynamicMapServiceLayer", "esri/layers/GraphicsLayer", "dojo/dom", "dojo/dom-attr", "esri/tasks/Geoprocessor", "esri/tasks/FeatureSet", "esri/symbols/SimpleMarkerSymbol"
, "esri/symbols/SimpleLineSymbol", "esri/toolbars/draw", "esri/symbols/SimpleFillSymbol", "dojo/on","esri/graphic", "esri/tasks/LinearUnit", "dojo/domReady!"], function (Map, ArcGISDynamicMapServiceLayer, GraphicsLayer, dom, domAttr, Geoprocessor, FeatureSet, SimpleMarkerSymbol, SimpleLineSymbol, Draw, SimpleFillSymbol,on,Graphic,LinearUnit)
{
var MyMap = new Map("MyMapDiv"); var layer = new ArcGISDynamicMapServiceLayer ("http://localhost:6080/arcgis/rest/services/firstTest/cityService/MapServer"); MyMap.addLayer(layer); //定義點幾何物件 var pointSet = new FeatureSet(); var
psymbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.STYLE_CROSS, 12, new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID, new dojo.Color([255, 0, 0]), 2), new dojo.Color([0, 255, 0, 0.25])); on(dom.byId("Btn"),"click",function(e){ //定義繪圖物件 var toolBar= new Draw(MyMap, { showTooltips: true }); //啟用繪圖物件 toolBar.activate(Draw.POINT); on(toolBar, "draw-complete", function(result){ //獲得繪圖結束的點物件 var geometry = result.geometry; //根據點物件生成相應的圖形 var graphic = new Graphic(geometry,psymbol); //將點物件儲存在點幾何中 pointSet.features.push(graphic); //將圖形存放在地圖中,然後得以顯示 MyMap.graphics.add(graphic); }); }); on(dom.byId("buffer"),"click",function(e){ //定義GP服務物件 var buffer = new Geoprocessor("http://localhost:6080/arcgis/rest/services/firstTest/bufferExcute/GPServer/buffer"); //構建GP服務引數 var gpParams={}; // //新增fields欄位,為了和後臺服務欄位匹配 // pointSet.fields=[]; //GP服務的Input引數 gpParams.inputFuther =pointSet; //獲取緩衝距離 var bufferDis = domAttr.get(dom.byId("bufferUnit"), "value"); //GP服務的dis引數 var dis=new LinearUnit({ "distance": bufferDis, "units": "esriKilometers" }); gpParams.distance =dis; //執行GP服務 buffer.execute(gpParams, showResult); }); function showResult(results, messages) { var features = results[0].value.features; var countyLayer = new GraphicsLayer(); for (var i = 0; i < features.length; i++) { var graphic = features[i]; //定義線符號 var lineSymbol=new SimpleLineSymbol(SimpleLineSymbol.STYLE_DASHDOT, new dojo.Color([255, 0, 0]), 1); //定義面符號 var PolygonSymbol = new SimpleFillSymbol(SimpleFillSymbol.STYLE_SOLID, lineSymbol, new dojo.Color([255, 255, 0, 0.25])); //設定面符號 graphic.setSymbol(PolygonSymbol); countyLayer.add(graphic); } MyMap.addLayer(countyLayer); } });