ArcGIS For Server10.1新特性之-服务器端打印服务及前端调用

本文主要是介绍ArcGIS For Server10.1新特性之-服务器端打印服务及前端调用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

ArcGIS For Server10.1新特性之一就是服务器端打印,这个打印功能使用起来非常的方便,因为它是一个现成的GP服务,使用的时候只要输入相应的地图,地图范围,模板的名称等,就可以按需打印出你需要的地图。下面我们来看一下从制作模版到发布服务及服务调用的整个流程吧:

1、自己定义一个打印模板,如下图是布局视图:

   将模版保存到C:\Program Files (x86)\ArcGIS\Desktop10.1\Templates\ExportWebMapTemplates(当然你也可以保存到其他路径下,在发布服务的时候你可以指定你自己的路径)

2、在ArcToolBox中打开Export Web Map工具:

输入参数:Web Map as JSON为空;Output File为默认参数;Format可以自己输入;Layout Templates Folder(optional)选择一个模板文件夹(这里选择ArcGIS安装目录的模板文件夹),然后Layout  Templates (optional)就可以选择一个默认的模板了

点击OK,打开菜单栏Geoprocessing/Results,执行完成后选中Export Web Map右键Share as Geoprocessing services

下一步、下一步:Analyse后如果没有错误,直接点击Publish发布:

ArcCatalog中查看如下:

3、服务发布好后,可一下在Flex中如何调用一把:ArcGIS Flex API3.0也增加了对该打印服务的支持:

代码如下:print.mxml

复制代码
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:esri="http://www.esri.com/2008/ags"xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"><fx:Declarations><!-- 将非可视元素(例如服务、值对象)放在此处 --></fx:Declarations><fx:Script><![CDATA[import mx.managers.PopUpManager;  private function onclick(event:MouseEvent):void{var popWin:printForm = printForm(PopUpManager.createPopUp(this,printForm,false)); popWin.printTask.getServiceInfo();//调用 打印 GP,获取模版和格式参数
                popWin.map = this.myMap;}]]></fx:Script><esri:Map id="myMap">         <esri:ArcGISDynamicMapServiceLayer url="http://localhost:6080/arcgis/rest/services/routTest2/MapServer"/></esri:Map><mx:Button id="button" x="409" y="10" label="打印" click="onclick(event)"/>
</s:Application>
复制代码

printForm.mxml

复制代码
<?xml version="1.0" encoding="utf-8"?>
<mx:TitleWindow xmlns:fx="http://ns.adobe.com/mxml/2009"xmlns:s="library://ns.adobe.com/flex/spark"xmlns:mx="library://ns.adobe.com/flex/mx"xmlns:esri="http://www.esri.com/2008/ags"width="100%" height="100%"close="PopUpManager.removePopUp(this)"><fx:Script><![CDATA[import com.esri.ags.Map;import com.esri.ags.events.PrintEvent;import com.esri.ags.tasks.supportClasses.DataFile;import com.esri.ags.tasks.supportClasses.JobInfo;import com.esri.ags.tasks.supportClasses.ParameterValue;import com.esri.ags.tasks.supportClasses.PrintServiceInfo;import com.esri.ags.tasks.supportClasses.LegendOptions;import com.esri.ags.tasks.supportClasses.LegendLayer;import mx.collections.IList;import mx.controls.Alert;import mx.managers.PopUpManager;import mx.rpc.events.FaultEvent;import com.esri.ags.layers.*;[Bindable]          public  var  map:Map;//打印结束后处理 private function printTask_executeCompleteHandler(event:PrintEvent):void{var paramValue:ParameterValue = event.executeResult.results[0];var dataFile:DataFile = paramValue.value as DataFile;navigateToURL(new URLRequest(dataFile.url));}private function printTask_getResultDataCompleteHandler(event:PrintEvent):void{var dataFile:DataFile = event.parameterValue.value as DataFile;navigateToURL(new URLRequest(dataFile.url));}private function printTask_jobCompleteHandler(event:PrintEvent):void{var jobInfo:JobInfo = event.jobInfo;if (jobInfo.jobStatus == JobInfo.STATUS_SUCCEEDED){printTask.getResultData(jobInfo.jobId);}else{Alert.show(jobInfo.jobStatus);}}//获取打印参数(模版和格式)protected function printTask_getServiceInfoCompleteHandler(event:PrintEvent):void{                initLayoutTemplates(event.serviceInfo);initFormats(event.serviceInfo);printButton.enabled = true;}//获得所有支持的打印格式private function initFormats(serviceInfo:PrintServiceInfo):void{var formatsVisibility:Boolean = true;var formats:IList = serviceInfo.formats;formatsDDL.selectedItem = serviceInfo.defaultFormat;}//获得所有模版private function initLayoutTemplates(serviceInfo:PrintServiceInfo):void{var layoutTemplatesVisibility:Boolean = true;                                layoutTemplatesFI.label = "模版";        var layoutTemplates:IList = serviceInfo.layoutTemplates;                layoutTemplatesDDL.selectedItem = serviceInfo.defaultLayoutTemplate;}//获取打印比例尺private function printButton_exportWebMapClickHandler(event:MouseEvent):void{layoutOptions.title = txtTitle.text;layoutOptions.legendOptions = getLegendOptions();var oldscale:Number;var oldLODs:Array;if (scaleCheckbox.selected){oldscale =map.scale;oldLODs = map.lods;map.lods = null; //prevent LOD snapping
                    map.scale = Number(scaleInput.text);}if (printTask.getServiceInfoLastResult.isServiceAsynchronous){printTask.submitJob(printParameters);}else{printTask.execute(printParameters);}if (scaleCheckbox.selected){map.scale = oldscale;map.lods = oldLODs;}}private function getLegendOptions():LegendOptions{var result:LegendOptions = new LegendOptions();var legendLayers:Array = [];for each (var layer:Layer in map.layers){if (layer.name.indexOf("hiddenLayer_") == -1 && !(layer is GraphicsLayer && !(layer is FeatureLayer))){                        var legendLayer:LegendLayer = new LegendLayer();legendLayer.layerId = layer.id;legendLayers.push(legendLayer);                        }}result.legendLayers = legendLayers;return result;}protected function printTask_faultHandler(event:FaultEvent):void{Alert.show(event.fault.toString());}]]></fx:Script><fx:Declarations><esri:PrintTask id="printTask" url="http://localhost:6080/arcgis/rest/services/ExportWebMap/GPServer/Export%20Web%20Map"    executeComplete="printTask_executeCompleteHandler(event)"fault="printTask_faultHandler(event)"getResultDataComplete="printTask_getResultDataCompleteHandler(event)"getServiceInfoComplete="printTask_getServiceInfoCompleteHandler(event)"jobComplete="printTask_jobCompleteHandler(event)"showBusyCursor="true"/><esri:PrintParameters id="printParameters"format="{formatsDDL.selectedItem}"layoutTemplate="{layoutTemplatesDDL.selectedItem}"map="{map}"preserveScale="{scaleCheckbox.selected}"><esri:layoutOptions><esri:LayoutOptions id="layoutOptions"/></esri:layoutOptions></esri:PrintParameters></fx:Declarations><mx:FormItem id="titleFI"  width="100%" label="标题" >                <s:TextInput id="txtTitle"  width="100%"  text="请输入标题"/>                </mx:FormItem><mx:FormItem id="layoutTemplatesFI"  includeInLayout="true" width="100%" label="模版"  visible="true">                <s:DropDownList id="layoutTemplatesDDL" width="175"     dataProvider="{printTask.getServiceInfoLastResult.layoutTemplates}"requireSelection="true"/>                            </mx:FormItem><mx:FormItem id="formatsFI"  width="100%" label="格式"  visible="true">            <s:DropDownList id="formatsDDL"   dataProvider="{printTask.getServiceInfoLastResult.formats}"    width="100" requireSelection="true"/>                    </mx:FormItem><s:HGroup id="scaleFI"width="100%"horizontalAlign="center"visible="true"><s:CheckBox id="scaleCheckbox" label="打印比例尺"/><s:TextInput id="scaleInput"width="100%"  enabled="{scaleCheckbox.selected}"restrict="0-9"/></s:HGroup><s:HGroup width="100%" horizontalAlign="center" ><s:Button id="printButton" label="打印"      click="printButton_exportWebMapClickHandler(event)"         enabled="false"/></s:HGroup>
</mx:TitleWindow>
复制代码
文章出处:http://www.cnblogs.com/esrichina/archive/2012/12/13/2816501.html

这篇关于ArcGIS For Server10.1新特性之-服务器端打印服务及前端调用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/636113

相关文章

Vue ElementUI中Upload组件批量上传的实现代码

《VueElementUI中Upload组件批量上传的实现代码》ElementUI中Upload组件批量上传通过获取upload组件的DOM、文件、上传地址和数据,封装uploadFiles方法,使... ElementUI中Upload组件如何批量上传首先就是upload组件 <el-upl

前端知识点之Javascript选择输入框confirm用法

《前端知识点之Javascript选择输入框confirm用法》:本文主要介绍JavaScript中的confirm方法的基本用法、功能特点、注意事项及常见用途,文中通过代码介绍的非常详细,对大家... 目录1. 基本用法2. 功能特点①阻塞行为:confirm 对话框会阻塞脚本的执行,直到用户作出选择。②

如何使用CSS3实现波浪式图片墙

《如何使用CSS3实现波浪式图片墙》:本文主要介绍了如何使用CSS3的transform属性和动画技巧实现波浪式图片墙,通过设置图片的垂直偏移量,并使用动画使其周期性地改变位置,可以创建出动态且具有波浪效果的图片墙,同时,还强调了响应式设计的重要性,以确保图片墙在不同设备上都能良好显示,详细内容请阅读本文,希望能对你有所帮助...

CSS3 最强二维布局系统之Grid 网格布局

《CSS3最强二维布局系统之Grid网格布局》CS3的Grid网格布局是目前最强的二维布局系统,可以同时对列和行进行处理,将网页划分成一个个网格,可以任意组合不同的网格,做出各种各样的布局,本文介... 深入学习 css3 目前最强大的布局系统 Grid 网格布局Grid 网格布局的基本认识Grid 网

HTML5中下拉框<select>标签的属性和样式详解

《HTML5中下拉框<select>标签的属性和样式详解》在HTML5中,下拉框(select标签)作为表单的重要组成部分,为用户提供了一个从预定义选项中选择值的方式,本文将深入探讨select标签的... 在html5中,下拉框(<select>标签)作为表单的重要组成部分,为用户提供了一个从预定义选项中

前端 CSS 动态设置样式::class、:style 等技巧(推荐)

《前端CSS动态设置样式::class、:style等技巧(推荐)》:本文主要介绍了Vue.js中动态绑定类名和内联样式的两种方法:对象语法和数组语法,通过对象语法,可以根据条件动态切换类名或样式;通过数组语法,可以同时绑定多个类名或样式,此外,还可以结合计算属性来生成复杂的类名或样式对象,详细内容请阅读本文,希望能对你有所帮助...

Java中将异步调用转为同步的五种实现方法

《Java中将异步调用转为同步的五种实现方法》本文介绍了将异步调用转为同步阻塞模式的五种方法:wait/notify、ReentrantLock+Condition、Future、CountDownL... 目录异步与同步的核心区别方法一:使用wait/notify + synchronized代码示例关键

Rust中的Drop特性之解读自动化资源清理的魔法

《Rust中的Drop特性之解读自动化资源清理的魔法》Rust通过Drop特性实现了自动清理机制,确保资源在对象超出作用域时自动释放,避免了手动管理资源时可能出现的内存泄漏或双重释放问题,智能指针如B... 目录自动清理机制:Rust 的析构函数提前释放资源:std::mem::drop android的妙

禁止HTML页面滚动的操作方法

《禁止HTML页面滚动的操作方法》:本文主要介绍了三种禁止HTML页面滚动的方法:通过CSS的overflow属性、使用JavaScript的滚动事件监听器以及使用CSS的position:fixed属性,每种方法都有其适用场景和优缺点,详细内容请阅读本文,希望能对你有所帮助... 在前端开发中,禁止htm

Vue3中的动态组件详解

《Vue3中的动态组件详解》本文介绍了Vue3中的动态组件,通过`component:is=动态组件名或组件对象/component`来实现根据条件动态渲染不同的组件,此外,还提到了使用`markRa... 目录vue3动态组件动态组件的基本使用第一种写法第二种写法性能优化解决方法总结Vue3动态组件动态