1. 程式人生 > >ArcGIS API For JavaScript(四)呼叫GP服務--簡單緩衝區分析

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

 rel="stylesheet" href="http://js.arcgis.com/3.9/js/esri/css/esri.css" />

<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