在使用arcgis JavaScript截取当前地图的截图时,我可以看到我们有两种方法可以截取屏幕截图。
I could see same question asked here
使用print task api
var printTask = new esriLoader.PrintTask(PrintTaskServiceUrl);
esriLoader.Config.defaults.io.proxyUrl = proxyUrl;
esriLoader.Config.defaults.io.alwaysUseProxy = true;
var template = new esriLoader.PrintTemplate();
template.exportOptions = {
width: 1015,
height: 633,
dpi: 96 // if 200 ,map image will get good quality
};
template.format = "JPG";
template.layout = "MAP_ONLY",
template.preserveScale = false;
template.showLabels = true;
template.showAttribution = false;
template.layoutOptions = {
"legendLayers": [], // empty array means no legend
"scalebarUnit": "Miles",
"copyrightText": "<div>xxx</div>",
}
var params = new esriLoader.PrintParameters();
params.map = map;
params.template = template;
printTask.execute(params, success, error);
那么,这两种方法有什么区别?
答案 0 :(得分:2)
PrintTask
将使用REST api中的Export Web Map Task
生成地图图像。 PrintTask提供了一种创建图像的简单方法。另一方面,如果要直接使用REST API,可以使用esri\request
对象,但必须按照API的描述生成所有必需的参数。
答案 1 :(得分:1)
免责声明:我刚加入并且没有声誉可以发表评论;因此我必须将其作为原始问题的答案发布,以下不是。
直接使用REST API是否有任何优势,反之亦然?
正如T Kambi所说,使用PrintTask(如果可用)更容易。在某些情况下,直接访问Export Web Map Task
REST端点可能是有益的,例如:
Web_Map_as_JSON
参数需要在请求之前修改
发送到导出Web地图任务地理处理服务。例如,需要添加地图中不存在的资源,图层&#39;需要更改可见性,需要提供安全服务的令牌等。Layout Template
。可以从客户端或服务器端访问“导出Web地图”任务。在后一种情况下,一种&#34;打印任务代理&#34;可能有助于打印安全服务;例如,在使用Long-lived Tokens
的应用程序中消除了对自定义打印服务的需求。
答案 2 :(得分:1)
现在回答原来的问题。
Export Map
REST端点特定于MapServer服务,允许为给定范围,指定图层,空间参考等生成服务图像。
最终,PrintTask向Export Web Map Task
REST端点发送请求。 Export Web Map Task
是用于生成地图图像的界面,可能包含每个提供的Web_Map_as_JSON
参数的多个服务和图形。它还提供了一个用布局包围地图图像的选项,该布局预定义为ArcGIS模板(存储在服务器上)。例如:
执行后,提供的结果中url
的值是对地图图像的引用。
Export Web Map Task interface results
注意:在API发送PrintTask请求后,可以在浏览器的开发人员工具中观察Web Map as JSON
参数。在这种情况下,它取自ESRI的Print Dijit示例:
(不能发布另一个链接)