Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Esri使用Javascript获取映射Scrrenshots_Javascript_Arcgis_Esri - Fatal编程技术网

Esri使用Javascript获取映射Scrrenshots

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

我正在尝试使用JavaScript生成一份pdf报告,其中包含ESRI map的当前地图截图。这是我的密码

    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"
        }

有没有人能给我一些建议,但我还是没有运气收到一些垃圾文本。我发现了问题,实际上地图上的版权文本都是垃圾文本,请帮我弄清楚,在截图时如何在地图上隐藏版权文本。