ArcGIS JS API使用PrintTask打印地图问题解决汇总
环境:来源于工作过程,使用的API是 arcgis js 3.* 3系API,4.*暂时没测试;
1、数据与打印服务跨域情况下,不能打印问题。
一般情况下,我们发布的数据服务和打印服务是在一台服务器上,但业务中经常会调用别家单位的服务,要实现打印怎么办?
解决:通过设置通用代理,arcgis js api提供了基于.NET /JAVA的代理,在proxy.config里面设置好服务的IP即可。
2、打印中文乱码。
这个情况一般都是服务器的打印模板MXD字体默认是ESRI美国的字体,需要更改为中文编码格式,比如:宋体,
修改路径:安装ArcGIS Server的文件夹,\ArcGIS\Server\Templates\ExportWebMapTemplates\,在下面修改要用到的排版样式的字体和排版布局。
3、PictureMarkerSymbol等一些自定义样式,使用自己的图标无法打印出来。
这里由于打印内部代码没有支持自定义图标,所以一般只能显示在GraphicsLayer中,但无法打印出来。
解决:使用arcgis中SimpleMarkerSymbol的默认样式,虽然图标没有那么明确,但可以打印。
4、图例打印出来显示 override。
一般使用graphicsLayer来显示,如果不过滤那么,打印的时候一般都是以override1、override2的形式来显示图例。
这个问题主要就是因为内部自动使用ColorInfo渲染,可以改变渲染方式来实现。
解决:1) 使用renderer代替setSymbol来渲染颜色;2)还一种方式:设置PrintTemplate的LayoutOptions里面参数LegendLayers为服务图层,即不显示GraphicsLayer的图例。
5、打印服务图层,图例均不能显示,比如一个土地利用规划,N个图例都不显示。
一般我们显示图层都是自己设置图层名称,直接使用Layer.id=图层名称 ,来加载设置,不显示图层都没有特别提示,这个问题估计难倒了一大批GIS开发人员,新手熟手都一直没解决。
终于功夫不误有心人,在GeoNet、stackexchange网上终于摸到了一些蛛丝马迹:【LegendLayer.layerId property stands for the assigned ID string of the layer in the map, not in the service.】
意思就是图例图层layerId 要显示的是默认加载到Map中ID(一般是layer1这样的形式),而不是我们给图层指定的图层名称,这个才是真的关键。
解决:对于要加载图例的动态服务、瓦片服务、要素服务,不指定ID=图层名称,默认加载后获取layer.id,然后赋予给LegendLayer.layerId,即能显示图层图例。

6、图例对一些服务支持的格式不支持,存在漏洞BUG。
Legend images are unsupported for .emf, .gif, .pdf, .svg, .svgz, and .tif image formats. These formats are supported for classic map services (MXD).
ArcGIS JS API使用PrintTask打印地图问题解决汇总的更多相关文章
- 基于ArcGIS JS API的在线专题地图实现
0 引言 专题地图是突出而深入的表示一种或几种要素或现象,即按照地图主题的要求,集中表示与主题有关内容的地图.专题地图的专题要素多种多样,分类方法也多种多样,根据专题地图表现数据的特点可分为定 ...
- 关于ueditor与arcgis js api同用会报错的问题
在ueditor与arcgis js api共用时,需要将ueditor\third-party\zeroclipboard\ZeroClipboard.js中的 if (typeof define ...
- geoserver图层属性查询及查询结果转换为arcgis js api能使用的格式
一个项目使用了ArcGIS JS API开发GIS展示层,但GIS服务使用了Geoserver,这时加载Geoserver数据和查询数据就和之前完全不一样了,以下介绍下我使用ArcGIS JS API ...
- 【高德地图API】从零开始学高德JS API(二)地图控件与插件——测距、圆形编辑器、鼠标工具、地图类型切换、鹰眼鱼骨
原文:[高德地图API]从零开始学高德JS API(二)地图控件与插件——测距.圆形编辑器.鼠标工具.地图类型切换.鹰眼鱼骨 摘要:无论是控件还是插件,都是在一级API接口的基础上,进行二次开发,封装 ...
- 【高德地图API】从零开始学高德JS API(一)地图展现——仙剑地图,麻点图,街景,室内图
原文:[高德地图API]从零开始学高德JS API(一)地图展现——仙剑地图,麻点图,街景,室内图 摘要:关于地图的显示,我想大家最关心的就是麻点图,自定义底图的解决方案了吧.在过去,marker大于 ...
- arcgis js 之 渔网工具(调用地图服务)
arcgis js 之 渔网工具(调用地图服务) 原理: 简历不同级别的网渔网图层,设置显示比例尺.然后发布服务,使用MapImageLayer接收. 过程: 1.在arcmap中用创建渔网工具将不同 ...
- Arcgis Android API开发之离线地图
最近一直在倒腾Arcgis Android API等相关的东西,想把自己的做的图放到地图上去,也就是离线地图,穷人一般是没有钱的,一个月好几十的流量是开不起的,所以就左捉摸,右思考,看着API里面有离 ...
- Arcgis js API使用wmts方式加载GeoWebCache中的切片地图(转载)
使用GeoWebCache的主要目的是其独立安装版能够发布arcgis的切片.我们知道,使用openlayer是调用geoserver最方便的方法,那么在发布完arcgis的切片后,怎么用arcgis ...
- ArcGIS JS 学习笔记4 实现地图联动
1.开篇 守望屁股实在太好玩了,所以最近有点懒,这次就先写个简单的来凑一下数.这次我的模仿目标是天地图的地图联动. 天地的地图联动不仅地图有联动,而且鼠标也有联动,我就照着这个目标进行山寨. 2.准备 ...
随机推荐
- 10、字典dict
字典(dict) 字典是有序,键不重复,元素只能是键值对的可变的容器 dict = {'k1':'v1','k2':'v2'} 容器 元素必须键值对 键不重复,重复则会被覆盖 data = {'k1' ...
- SpringCloud+Nacos实现服务配置中心(Hoxton版本)
关于 Nacos Spring Cloud 的详细文档请参看:Nacos Config和Nacos Discovery. 通过 Nacos Server 和 spring-cloud-starter- ...
- nginx 本地配置(解决跨域问题)
前端做跨域本身就是扯淡的事情.后台人员不配合说什么都是白搭.索性整理了一下心得,(可以直接部署自配置)发不多说上代码: 1 #user nobody; 2 worker_processes 1; 3 ...
- IDEA 主题下载
IDEA中主题可以更换,大家可以直接到 http://www.riaway.com/ 网站或 http://color-themes.com/?view=index 网站,直接下载自己喜欢的主题. ...
- Dapper, Ef core, Freesql 插入大量数据性能比较(二)
在上一篇文章中,我们比较出单表插入9999行数据,Dapper > EfCore > Freesql.在本文中,我们来看看级联插入 构建9999行数据 List<Entity> ...
- 【转载】C# get 与set的一些说明
转载 在面向对象编程(OOP)中,是不允许外界直接对类的成员变量直接访问的,既然不能访问,那定义这些成员变量还有什么意义呢?所以C#中就要用set和get方法来访问私有成员变量,它们相当于外界访问对象 ...
- 记一次metasploitable2内网渗透之2049端口NFS漏洞
0x01.NFS简介 NFS是基于UDP/IP协议的应用,其实现主要是采用远程过程调用RPC机制,RPC提供了一组与机器.操作系统以及低层传送协议无关的存取远程文件的操作.RPC采用了XDR的支持.X ...
- Buuctf刷题:部分
get_started_3dsctf_2016 关键词:ROP链.栈溢出.mprotect()函数 可参考文章(优质): https://www.cnblogs.com/lyxf/p/12113401 ...
- 11. VUE 数组操作
变异方法 Vue 包含一组观察数组的变异方法,所以它们也将会触发视图更新.这些方法如下: push() 添加元素 <ul id="example-1"> <li ...
- 使用Viper读取Nacos配置(开源)
使用Viper读取Nacos配置(开源) 一.前言 目前Viper支持的Remote远程读取配置如 etcd, consul:目前还没有对Nacos进行支持,本文中将开源一个Nacos的Viper支持 ...