arcgis api JavaScript打印地图图例显示不正确
2017-09-01 17:19
806 查看
问题1:地图上以图层样式以PictureMarkerSymbol的打印不出现或出现被替换
在地图上使用图片图标作为样式,是一件很正常的事情。打印的时候,在被打印的地图上没有看到这个图层。
反复测试后,并没有找到原因,但是掌握了出现的情况。
背景:查询时将查询结果加载到地图上,其中图标的样式使用小气球图片png格式。
情况一
设置:图层的样式使用PictureMarkerSymbol,生成每一个graphic时,参数symbol为null
打印结果:看不到当前图层
情况二
设置:图层是否设置样式都可以,生成每一个graphic时,参数symbol为PictureMarkerSymbol样式
打印结果:可以看到当前图层,但是每一个对象原本的图片图标被替换,替换为arcgis最基本的样式,显示在打印的地图上。
解决办法:
将图片样式替换掉,替换为arcgis中SimpleMarkerSymbol的样式
问题2:当图层以colorInfo渲染时,图例显示override
图层使用colorInfo渲染方式// parameter var lineWidth = config.symbol.lineWidth, lineColor = config.symbol.lineColor, legendTitle = config.legendTitle, // stopsValue = config.renderer.stopsValue, stopsNum = config.renderer.stopsNum, stopsColor = config.renderer.stopsColor, type = config.renderer.type, field = config.renderer.field, normalizationField = config.renderer.normalizationField; var stopsValue = getStopsValue(data, stopsNum); // symbol var line = new esri.symbol.SimpleLineSymbol().setWidth(lineWidth).setColor(new esri.Color(lineColor)); var symbol = new esri.symbol.SimpleFillSymbol().setOutline(line); var stops = []; for (var i = 0; i < stopsValue.length; i++) { var b = { "value": stopsValue[i], "color": new esri.Color(stopsColor[i]) } stops.push(b); } var r = new esri.renderer.SimpleRenderer({ symbol: symbol, visualVariables: [{ type: type, field: field, normalizationField: normalizationField, legendOptions: { showLegend: false, title: legendTitle }, stops: stops }] });
arcgis api v3.21打印出地图上的图例:
arcgis api v3.21 web系统上的图例:
arcgis api v3.17 web系统上的图例:
使用arcgis api v3.20及以下的API版本进行打印,都会报错:
有可能是版本带来的问题。待解决。
问题3:
当打印服务和打印的图层不在同一个网段时,则不能打印正确可以打印
app.printUrl = "https://sampleserver6.arcgisonline.com/arcgis/rest/services/Utilities/PrintingTools/GPServer/Export%20Web%20Map%20Task"; var permitUrl = "https://sampleserver6.arcgisonline.com/arcgis/rest/services/PoolPermits/MapServer/1";
打印失败
app.printUrl = "https://sampleserver6.arcgisonline.com/arcgis/rest/services/Utilities/PrintingTools/GPServer/Export%20Web%20Map%20Task"; var permitUrl = ""http://172.16.1.183:6080/arcgis/rest/services/js/8"";
问题4. 发布图层使用图片图标,地图和图例均可以正确显示
地图在发布时就使用图片,则发布后的地图可以被正确打印,地图上图标没有发生变化,图例也是正确的。以机场图层为例,图例正确:
地图正确:(忽略文字乱码)
问题5. 中文标注乱码
以机场图层为例,乱码部分本应该是图层的标注名称。待解决图层本身没有标注,增加了labelLayer图层,给图层增加标注
相关文章推荐
- Arcgis API for JavaScript在地图上实现手机定位信息的追踪显示
- ArcGIS API for JavaScript之地图打印
- arcgis api for JavaScript发布切片,地图不显示
- ArcGIS API for javascript开发笔记 —— 地图打印
- ArcGIS API for JavaScript 4.2学习笔记[1] 显示地图
- ArcGIS api for javascript——使用图层定义显示地图
- ArcGIS API For Javascript GP工具 Printing Tools导出地图或者打印地图(二):GP 服务Printing Tools
- ArcGIS Api for javaScript 4.6 实现将一个标注显示在地图上
- web端输出打印地图(ArcGIS api for Javascript)一、地图打印模板的制作
- ArcGIS API For Javascript GP工具 Printing Tools导出地图或者打印地图(一):GP 服务Printing Tools
- ArcGIS For JavaScript API Display map in a dialog(在会话窗口中显示地图)————(七)
- ArcGIS For JavaScript API Show map properties(显示地图信息)————(十二)
- ArcGIS API For Javascript之地图基本加载与显示,地图切换、缩放、定位、比例尺、鹰眼图、坐标显示、查询搜索功能实现
- ArcGIS api for javascript——加入地图并显示当前地图范围
- Arcgis API for JavaScript在地图上实现手机定位信息的追踪显示
- ArcGIS api for javascript——显示地图属性
- ArcGIS For JavaScript API Show map using layer definitions(使用层定义显示地图)————(十三)
- ArcGIS api for javascript——加入地图并显示x,y坐标
- arcgis api for javascript (1) 基本的地图显示及spatialReference
- 深入浅出 Javascript API(二)--地图显示与基本操作