Esri使用Javascript获取映射Scrrenshots
我正在尝试使用JavaScript生成一份pdf报告,其中包含ESRI map的当前地图截图。这是我的密码Esri使用Javascript获取映射Scrrenshots,javascript,arcgis,esri,Javascript,Arcgis,Esri,我正在尝试使用JavaScript生成一份pdf报告,其中包含ESRI map的当前地图截图。这是我的密码 var getCurrentMapScreenShot = function (success, error) { esriLoader.Config.defaults.io.proxyUrl = myAppSettingsModel.SettingsModel.MapSettings.AGSProxyURL; esr
var getCurrentMapScreenShot = function (success, error) {
esriLoader.Config.defaults.io.proxyUrl = myAppSettingsModel.SettingsModel.MapSettings.AGSProxyURL;
esriLoader.Config.defaults.io.alwaysUseProxy = true;
var printTask = new esriLoader.PrintTask("myexportUrl");
var template = new esriLoader.PrintTemplate();
template.exportOptions = {
width: 600,
height: 600,
dpi: 96
};
template.format = "image/png";
template.layout = "MAP_ONLY",
template.preserveScale = true;
template.layoutOptions = {
legendLayers: [], // empty array means no legend
scalebarUnit: "Miles"
};
var params = new esriLoader.PrintParameters();
params.map = map;
params.template = template;
printTask.execute(params, success, error);
}
此函数将为您提供一个包含url的事件,然后我将传递此url以获取map base64数据。
下面是函数调用
map.GetCurrentMapScreenShot(function (event) {
var mapScreenShotURL = event.url;
Factory.GetBase64ForImgUrl(mapScreenShotURL,
function (mapImageBase64Encoded) {});
下面是将url转换为base64image的函数
function getBase64ForImgUrl(url, callback, outputFormat) {
console.log("#################### Summary Report Image " + url);
var canvas = document.createElement('CANVAS');
var ctx = canvas.getContext('2d');
var img = new Image;
img.crossOrigin = 'Anonymous';
img.onload = function () {
canvas.height = img.height;
canvas.width = img.width;
ctx.drawImage(img, 0, 0);
var dataURL = canvas.toDataURL(outputFormat || 'image/png');
callback.call(this, dataURL);
// Clean up
canvas = null;
};
img.src = url;
}
我得到的是地图的base64图像数据,但问题是,我得到的是地图的模糊图像,没有特征层和图标,而且地图包含一些垃圾文本
谢谢我几乎解决了这个问题,现在我得到了包含地图图标和图层图形的地图图像,但不幸的是仍然得到一些垃圾文本 我已将代码更改如下
template.format = "JPG";
template.layout = "A4 Landscape",
template.preserveScale = false;
template.layoutOptions = {
"legendLayers": [], // empty array means no legend
"scalebarUnit": "Miles"
}
有没有人能给我一些建议,但我还是没有运气收到一些垃圾文本。我发现了问题,实际上地图上的版权文本都是垃圾文本,请帮我弄清楚,在截图时如何在地图上隐藏版权文本。