(十一)ArcGIS JS GP服務同步呼叫
阿新 • • 發佈:2019-02-07
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);
}
});