js实现地图打印功能

时间:2022-06-05 10:03:36

注意:js对地图的打印功能在arcgis10.1中才有提供,所以如果要使用esri自带的地图打印功能,必须使用arcgis 10.1或更高版本的地图打印模板。(由于官网和arcgis desktop提供的地图打印模板在打印地图标题时不能显示中文,所以建议自己用arcgis自定义模板,这样就能实现中文标题的打印了。)

 function Print(printTitle) {
//var printTitle = $("#ipttitle").val();
var legend = $("#Checkbox1").prop("checked");
var printTask = new esri.tasks.PrintTask(printUrl); //打印模板
var template = new esri.tasks.PrintTemplate();
template.format = "JPG";
template.label = "Portrait (Image)";
//template.layout = "Letter ANSI A Landscape";
template.layout = "printtemplate";//这是本人自定义的地图模板,不是arcgis系统自带的
//获取所有图层的Id
var arrlegend = [];
for (var j = 0; j < map.layerIds.length; j++) {
var layerid = "layer" + j;
arrlegend.push({ "layerId": layerid });//根据图层id,打印对应的图例
}
var options = {
scaleBarUnit: "Miles",
legendLayers: arrlegend,
titleText: printTitle
};
if (!legend) {
options.legendLayers = [];//图例数组为空时,不打印图例
}
template.layoutOptions = options;
//打印参数
var params = new esri.tasks.PrintParameters();
params.map = map;
params.template = template;
printTask.execute(params, printResult,printError);
}
function printError(error) {
var error = error;
$("#btnPrint").removeAttr("disabled");
}
function printResult(result) {
$("#btnPrint").removeAttr("disabled");
var url = result.url;
var str = "<br/>" + "<a href='" + url + "' target='_blank'>打印输出</a>";
$("#PrintResult").html(str);
}