1. 程式人生 > >arcgis api JavaScript列印地圖圖例顯示不正確

arcgis api JavaScript列印地圖圖例顯示不正確

問題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 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圖層,給圖層增加標註

中文標註亂碼