应用场景:Leaflet调用Esri的GP服务。
当GP服务需要的参数是GPFeatureRecordSetLayer 类型的时候,并且传入的要素对象还要包含属性数据。
我们在前台绘制一个Polygon,然后去调用GP服务。
代码实现
map.on(L.Draw.Event.CREATED, function (e) {
var type = e.layerType,
layer = e.layer;
if (type === 'polygon') {
//e.layer只是要素数据,需要人工添加属性数据
var feature = layer.toGeoJSON();
feature.type = "Feature";
//属性数据
feature.properties.A= 30;
//对于GPFeatureRecordSetLayer类型的输入需要传递FeatureCollection类型才可以(具体参考geoJSON格式)
var featureCollection = {"type":"FeatureCollection","features":[]};
featureCollection.features.push(feature);
//输入要素空间参考
gpTask.setParam("env:inSR", 4326);
gpTask.setParam("InputInundation", featureCollection);
//异步的时候需要设置输出参数
gpTask.setOutputParam('ResultTable');
gpTask.run(gpCallback);
}
editableLayers.addLayer(layer);
});
var gpService = L.esri.GP.service({
url: "", //GP服务的地址
useCors:false,
asyncInterval: 1 //异步设置
});
var gpTask = gpService.createTask();
//回调函数
function gpCallback(error, response, raw){
console.log(response.ResultTable);
}