arcgis api JavaScript列印地圖圖例顯示不正確
阿新 • • 發佈:2019-02-03
問題1:地圖上以圖層樣式以PictureMarkerSymbol的打印不出現或出現被替換
在地圖上使用圖片圖示作為樣式,是一件很正常的事情。
列印的時候,在被列印的地圖上沒有看到這個圖層。
反覆測試後,並沒有找到原因,但是掌握了出現的情況。
背景:查詢時將查詢結果載入到地圖上,其中圖示的樣式使用小氣球圖片png格式。
情況一
設定:圖層的樣式使用PictureMarkerSymbol,生成每一個graphic時,引數symbol為null
列印結果:看不到當前圖層情況二
設定:圖層是否設定樣式都可以,生成每一個graphic時,引數symbol為PictureMarkerSymbol樣式
列印結果:解決辦法:
將圖片樣式替換掉,替換為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圖層,給圖層增加標註