ArcGIS API For JavaScript(四)呼叫GP服務--簡單緩衝區分析
ArcGIS API For JavaScript(四)呼叫GP服務--簡單緩衝區分析
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>緩衝區分析</title>
<link rel="stylesheet"href="http://js.arcgis.com/3.9/js/dojo/dijit/themes/tundra/tundra.css"/>
<link
<script src="http://js.arcgis.com/3.9/"></script>
<style>
#mapDiv {
height: 600px;
width: 900px;
border:1px solid red;
}
</style>
<script>
require(["esri/map",
"esri/layers/ArcGISDynamicMapServiceLayer"
"dojo/dom",
"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,
dom,
Geoprocessor,
FeatureSet,
SimpleMarkerSymbol,
SimpleLineSymbol,
Draw,
SimpleFillSymbol,on,Graphic,LinearUnit) {
var MyMap = new Map("mapDiv");
var layer = new ArcGISDynamicMapServiceLayer("http://localhost:6080/arcgis/rest/services/%E5%90%88%E5%B7%A5%E5%A4%A7%E5%B9%B3%E9%9D%A2%E7%AE%80%E5%9B%BE/MapServer");
MyMap.addLayer(layer);
//定義點幾何物件
var pointSet = new FeatureSet();
//新建簡單點符號,樣式為十字交叉,顏色紅色,線寬2
var psymbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.STYLE_CROSS, 20,
new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID, new dojo.Color([255, 0, 0]), 2));
//新增按鈕點選事件
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/test/easybuffer/GPServer/easybuffer");
//構建GP服務引數
var gpParams={};
//新增fields欄位,為了和後臺服務欄位匹配
pointSet.fields = []; //很重要,為了和引數 一 一匹配
//GP服務的Input引數
gpParams.Input = pointSet;
//GP服務的dis引數
var dis = new LinearUnit({
"distance": 100,
"units": "esriMeters"
});
gpParams.dis=dis;
//執行GP服務
buffer.execute(gpParams, showResult);
});
function showResult(results, messages)
{
var features = results[0].value.features;
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);
MyMap.graphics.add(graphic);
}
}
});
</script>
</head>
<body class="tundra">
<div id="mapDiv" class="MapClass"></div>
<input id="Btn" type="button" value="畫點" />
<input id="buffer" type="button" value="緩衝區分析" />
</body>
</html>
參考資料:(八)ArcGIS API For Javascript呼叫GP服務
https://blog.csdn.net/lovecarpenter/article/details/52673406
地理資訊科學
Writed By NX
QQ:1051926720