Прокси Esri для проекта Angular 7 на скриншот - PullRequest
0 голосов
/ 08 января 2019

Моя команда в настоящее время работает над веб-приложением с угловым интерфейсом 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

1 Ответ

0 голосов
/ 08 января 2019

Вы можете попробовать эту библиотеку: https://github.com/WSDOT-GIS/arcgis-map-thumbnail-builder

Я не уверен, что он полностью совместим с последним API ArcGIS Javascript, но вы, вероятно, можете изучить источники кода, чтобы он работал с версией, которую вы используете.

...