环境:来源于工作过程,使用的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打印地图问题解决汇总的更多相关文章

  1. 基于ArcGIS JS API的在线专题地图实现

    0 引言     专题地图是突出而深入的表示一种或几种要素或现象,即按照地图主题的要求,集中表示与主题有关内容的地图.专题地图的专题要素多种多样,分类方法也多种多样,根据专题地图表现数据的特点可分为定 ...

  2. 关于ueditor与arcgis js api同用会报错的问题

    在ueditor与arcgis js api共用时,需要将ueditor\third-party\zeroclipboard\ZeroClipboard.js中的 if (typeof define ...

  3. geoserver图层属性查询及查询结果转换为arcgis js api能使用的格式

    一个项目使用了ArcGIS JS API开发GIS展示层,但GIS服务使用了Geoserver,这时加载Geoserver数据和查询数据就和之前完全不一样了,以下介绍下我使用ArcGIS JS API ...

  4. 【高德地图API】从零开始学高德JS API(二)地图控件与插件——测距、圆形编辑器、鼠标工具、地图类型切换、鹰眼鱼骨

    原文:[高德地图API]从零开始学高德JS API(二)地图控件与插件——测距.圆形编辑器.鼠标工具.地图类型切换.鹰眼鱼骨 摘要:无论是控件还是插件,都是在一级API接口的基础上,进行二次开发,封装 ...

  5. 【高德地图API】从零开始学高德JS API(一)地图展现——仙剑地图,麻点图,街景,室内图

    原文:[高德地图API]从零开始学高德JS API(一)地图展现——仙剑地图,麻点图,街景,室内图 摘要:关于地图的显示,我想大家最关心的就是麻点图,自定义底图的解决方案了吧.在过去,marker大于 ...

  6. arcgis js 之 渔网工具(调用地图服务)

    arcgis js 之 渔网工具(调用地图服务) 原理: 简历不同级别的网渔网图层,设置显示比例尺.然后发布服务,使用MapImageLayer接收. 过程: 1.在arcmap中用创建渔网工具将不同 ...

  7. Arcgis Android API开发之离线地图

    最近一直在倒腾Arcgis Android API等相关的东西,想把自己的做的图放到地图上去,也就是离线地图,穷人一般是没有钱的,一个月好几十的流量是开不起的,所以就左捉摸,右思考,看着API里面有离 ...

  8. Arcgis js API使用wmts方式加载GeoWebCache中的切片地图(转载)

    使用GeoWebCache的主要目的是其独立安装版能够发布arcgis的切片.我们知道,使用openlayer是调用geoserver最方便的方法,那么在发布完arcgis的切片后,怎么用arcgis ...

  9. ArcGIS JS 学习笔记4 实现地图联动

    1.开篇 守望屁股实在太好玩了,所以最近有点懒,这次就先写个简单的来凑一下数.这次我的模仿目标是天地图的地图联动. 天地的地图联动不仅地图有联动,而且鼠标也有联动,我就照着这个目标进行山寨. 2.准备 ...

随机推荐

  1. Nodejs学习笔记(1) Nodejs安装+借助express模块简单部署服务器

    1 安装 1.1 下载和安装 1.2 什么是REPL?如何使用? 1.3 npm对单一模块的安装和删除功能 1.4 通过package.json自定义模块(安装模块) 1.5 设置全局目录 2 部署网 ...

  2. Python模拟简易版淘宝客服机器人

    对于用Python制作一个简易版的淘宝客服机器人,大概思路是:首先从数据库中用sql语句获取相关数据信息并将其封装成函数,然后定义机器问答的主体函数,对于问题的识别可以利用正则表达式来进行分析,结合现 ...

  3. 让 Java 中 if else 更优雅的几个小技巧

    对于一个高级 crud 工程师‍而言,if else 是写代码时使用频率最高的关键词之一,然而有时过多的 if else 会让我们优雅的 crud 代码显得不那么优雅,并且感到脑壳疼

  4. 自动统计zabbix过去一周监控告警

    # -*- coding:utf-8 -*-import jsonimport requestsimport time,datetimeimport csv,chardetdef getToken(u ...

  5. 为了效率,我们可以用的招数 之 strlen

    如果要你写一个计算字符串长度的函数 strlen,应该怎么写?相信你很容易写出如下实现: 1 int strlen_1(const char* str) { 2 int cnt = 0; 3 4 if ...

  6. docker部署kafka集群

    利用docker可以很方便的在一台机子上搭建kafka集群并进行测试.为了简化配置流程,采用docker-compose进行进行搭建. kafka搭建过程如下: 编写docker-compose.ym ...

  7. MySQL巩固学习记录(一)

    mysql下载安装 一.采用图形化界面安装 (初期只安装server服务端就可以了,别的不多赘述) 二.采用压缩版安装 1.将文件解压缩到自己想要的路径 2. 添加环境变量,即mysql的bin目录 ...

  8. Dynamics CRM证书更换

    Dynamics CRM产品一般有两种认证方式.第一种是基于声明的内部访问也就是无证书单纯用账号密码验证.第二种就是联合身份认证,需要安装网站证书. 对于联合身份认证的情况因为需要安装证书,而且证书是 ...

  9. Dynamic CRM登陆界面的客制化(持续更新)

    Dynamic CRM的登陆页面比较西化,不是很适合中国人使用.目前先把注销跳转的问题解决了. 服务端使用下面命令,将文件导出来 Export-AdfsWebTheme –Name default – ...

  10. CppCon 2019 | Back to Basics: RAII and The Rule of Zero

    本文整理了Arthur O'Dwyer在CppCon 2019上关于RAII的演讲,演讲的slides可以在此链接进行下载. 在C++程序中,我们往往需要管理各种各样的资源.资源通常包括以下几种: A ...