Моя команда в настоящее время работает над веб-приложением с угловым интерфейсом 7 и .net core 2.1. Одна из задач, которую мне нужно сделать, - это сделать скриншот и прикрепить его к электронному письму. В веб-приложении есть esri-map.
Для захвата скриншота я использую пакет html2canvas. Он работает, как и ожидалось, за исключением того, что не захватывает содержимое карты esri. Он захватывает все остальное, кроме карты esri.
Для вызова функции html2canvas я установил для свойства allowTaint и свойства useCORS значение true. Я провел дальнейшие исследования и наткнулся на свойство proxy для html2canvas. Это заставило меня задуматься, что может быть причиной того, что карта не генерируется. Я не могу найти какие-либо четкие инструкции о том, как настроить прокси для ArcGIS. Мне было интересно, может ли кто-нибудь помочь мне с этим.
Любое направление или помощь будет принята с благодарностью.
Следующий фрагмент моего вызова html2canvas.
html2canvas
html2canvas(document.getElementById('mapContainer'), { useCORS: true, logging: true, allowTaint: true }).then((canvas) => {
console.log("Document html2canvas");
console.log(document);
screenCapture = canvas.toDataURL();
]);
Обновление от 11 января 2018
Я связался с Эсри по этому поводу, и они ответили: мы не поддерживаем angular 7, мы поддерживаем только Javascript. Я спросил их, что если я использую задачу печати вместо html2canvas.
Это мой фрагмент кода, использующий задание на печать. надеюсь, это кому-нибудь поможет.
Это функция, которую я написал в одном из сервисов для захвата карты. кажется, работает нормально. Я не знаю, есть ли какие-либо издержки использования URL-адреса служебной задачи, предоставленной arcgis, или использования вашего собственного сервера для рендеринга этих скриншотов. По какой-то причине это не сработало, когда я использовал URL-адрес утилиты задачи печати моих серверов.
примечание: во фрагменте кода ниже = & gt - функция стрелки =>
screenCapture(): Promise<any> {
return new Promise((resolve, reject) => {
loadModules(['esri/tasks/PrintTask', 'esri/tasks/support/PrintTemplate', 'esri/tasks/support/PrintParameters']).then(([PrintTask, PrintTemplate, PrintParameters]) => {
try {
var printTask = new PrintTask({
url: 'https://utility.arcgisonline.com/arcgis/rest/services/Utilities/PrintingTools/GPServer/Export%20Web%20Map%20Task/',
updateDelay: '3000'
});
var template = new PrintTemplate({
layout: "map_only",
exportOptions: {
dpi: 96,
width: 1871,
height: 800
},
});
var params = new PrintParameters({
view: this.mapView,
template: template
});
printTask.execute(params).then(res => { console.log(res); resolve(res); });
}
catch (error) {
console.log(error);
reject(error);
}
});
});
} // end ofScreenCapture