【问题标题】:Esri Take Map Scrrenshots using JavascriptEsri 使用 Javascript 获取地图截图
【发布时间】:2016-06-09 12:50:44
【问题描述】:

我正在尝试使用 JavaScript 生成包含 ESRI 地图的当前地图截图的 pdf 报告。这是我的代码。

    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 来获取地图 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 图像数据,但问题是,我得到的地图图像很模糊,没有要素图层和图标。而且地图还包含一些垃圾文本。

谢谢

【问题讨论】:

    标签: javascript arcgis esri


    【解决方案1】:

    我几乎解决了这个问题,现在我得到了包含地图图标和图层图形的地图图像,但不幸的是仍然得到一些垃圾文本。

    我已将代码更改如下。

            template.format = "JPG";
            template.layout = "A4 Landscape",
            template.preserveScale = false;
            template.layoutOptions = {
                "legendLayers": [], // empty array means no legend
                "scalebarUnit": "Miles"
            }
    

    【讨论】:

    • 有没有人可以给我一些建议,仍然没有运气,我收到一些垃圾短信..
    • 我发现了问题,实际上地图中的版权文本是垃圾文本,请帮忙弄清楚,截图时如何在地图中隐藏版权文本。
    猜你喜欢
    • 2022-01-06
    • 1970-01-01
    • 2020-04-24
    • 2013-11-13
    • 1970-01-01
    • 2010-09-08
    • 2013-07-26
    • 2017-10-19
    相关资源
    最近更新 更多