1.本例中使用的地图服务和GP服务都可以从arcgis server manage中拿到;
2.数据类型,这是GP服务的数据类型。每一个GP服务数据类型和JS数据类型进行对应,比如缓冲区模型制作中使用的FeatureClass,,发布服务说明(对于说明可以参考这里http://www.cnblogs.com/HPhone/archive/2012/11/18/2775860.html)中可以看到Data Type为GPFeatureRecordSetLayer 则arcgis for js api中使用FeatureSet对象进行构造参;
3.输入要素和输出要素名称可以在此处查看
调用代码如下
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>利用GP调用自定义buffer工具实现缓冲区分析功能</title>
<link rel="stylesheet" type="text/css" href="http://localhost:8087/arcgis_js_api/library/3.22/3.22/esri/css/esri.css" />
<script src="http://localhost:8087/arcgis_js_api/library/3.22/3.22/init.js"></script>
<script src="../js/jquery-1.3.1.js"></script>
<style>
html, body, #map {
width: 100%;
height: 100%;
margin: 0;
padding: 0;
}
</style>
<script>
require([
"esri/Color",
"esri/layers/ArcGISTiledMapServiceLayer",
"esri/map",
"esri/symbols/SimpleFillSymbol",
"esri/symbols/SimpleLineSymbol",
"esri/toolbars/draw",
"esri/symbols/SimpleMarkerSymbol",
"esri/graphic",
"esri/geometry/Extent",
"esri/tasks/Geoprocessor",
"esri/SpatialReference",
"esri/tasks/FeatureSet",
"esri/tasks/JobInfo",
"esri/tasks/LinearUnit"
], function(
Color,
ArcGISTiledMapServiceLayer,
Map,SimpleFillSymbol,
SimpleLineSymbol,
Draw,
SimpleMarkerSymbol,
Graphic,
Extent,
Geoprocessor,
SpatialReference,
FeatureSet,
JobInfo,
LinearUnit
) {
var map;
map = new Map("map", {
extent: new Extent({
"xmin":126.08797131337525,"ymin":41.88483304829672,"xmax":130.05572254059723,"ymax":47.20292839632739,
"spatialReference":{"wkid":4326}})
});
var Layer = new ArcGISTiledMapServiceLayer("http://localhost:6080/arcgis/rest/services/itms/MapServer", {
"id": "layer",
"opacity": 0.75,
"showAttribution":false
});
map.addLayer(Layer);
var gpBuffer=new Geoprocessor("http://localhost:6080/arcgis/rest/services/Model/GPServer/bufferModel");
gpBuffer.outSpatialReference=new SpatialReference({wkid:4326});
var bufferParams={};
map.on("click",function (e) {
debugger;
var featureSet=new FeatureSet();
var graphics=new Graphic(e.mapPoint,new SimpleMarkerSymbol());
featureSet.spatialReference=new SpatialReference({wkid:4326});
map.graphics.add(graphics);
featureSet.features=[graphics];
featureSet.geometryType="point";
var Dis = new LinearUnit();
Dis.distance = 0.1;
Dis.units = esri.Units.KILOMETERS;
bufferParams={
Feature_Class:featureSet, //输入要素名称要和发服务的参数名称一致
Distance:Dis //距离名称要和发服务的距离参数一致
};
gpBuffer.submitJob(bufferParams,successResult);
})
function successResult(result){
var jobId = result.jobId;
var status = result.jobStatus;
if(status ===JobInfo.STATUS_SUCCEEDED) {
gpBuffer.getResultData(jobId, "Output_Feature_Class", addResults); //第二个参数要和发服务的结果集名称一致
}
}
function addResults(results){
var features = results.value.features;
if(features.length>0) {
for (var i = 0, length = features.length; i != length; ++i) {
var feature = features[i];
var polySymbolRed = new SimpleFillSymbol();
polySymbolRed.setOutline(new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID, new Color([0, 0, 0, 0.5]), 1));
polySymbolRed.setColor(new Color([255, 0, 0, 0.5]));
feature.setSymbol(polySymbolRed);
map.graphics.add(feature);
}
alert("提示计算成功!");
}
else{
alert("提示计算失败!");
}
}
});
</script>
</head>
<body>
<div id="map"></div>
</body>
</html>版权声明:本文为wo_buzhidao原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。