Arcgis Api for JavaScript4.x 打印地图

先打开你的arcgis service,点击Utilities。如果没有这个选项。去http://localhost:6080/arcgis/manager/ 里面把Utilities服务打开
如图所示。
在这里插入图片描述

在这里插入图片描述
点击Utilities/PrintingTools (GPServer)
在这里插入图片描述
在这里插入图片描述
如图:需要这个地址
在这里插入图片描述

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <!-- 引用在线arcgis api -->
    <link rel="stylesheet" href="https://js.arcgis.com/4.16/esri/themes/light/main.css" />
    <script src="https://js.arcgis.com/4.16/"></script>
    <!-- 引用在线Jquery -->
    <script src="http://libs.baidu.com/jquery/2.1.4/jquery.min.js"></script>
    <style>
        html,
        body,
        #viewDiv {
            height: 100%;
            width: 100%;
            margin: 0;
            padding: 0;
        }
    </style>
    <script>
        require([
            "esri/Map",
            "esri/Basemap",
            "esri/views/MapView",
            "esri/geometry/Extent",
            "dojo/dom",
            "dojo/on",
            "dojo/domReady!"
        ], function(
            Map,
            Basemap,
            MapView,
            Extent,
            dom,
            on) {
            var startExtent = new Extent({
                xmin: 120.236368,
                ymin: 36.043567,
                xmax: 120.579018,
                ymax: 36.196569,
                spatialReference: {
                    wkid: 4549
                }
            });
            var map = new Map({
                basemap: "hybrid"
            });
            var view = new MapView({
                container: "viewDiv",
                map: map,
                zoom: 11,
                Extent: startExtent,
                center: [120.369174, 36.097245]
            });
            $(".btn").click(function() {
                print();
            });
        });
    </script>
</head>

<body>
    <div id="viewDiv">
        <button class="btn">点击打印</button>
    </div>
</body>

</html>
<script>
    require([
        "esri/Map",
        "esri/Basemap",
        "esri/views/MapView",
        "esri/tasks/PrintTask",
        "esri/tasks/support/PrintTemplate",
        "esri/tasks/support/PrintParameters",
        "dojo/dom",
        "dojo/on",
        "dojo/domReady!"
    ], function(
        Map,
        Basemap,
        MapView,
        PrintTask,
        PrintTemplate,
        PrintParameters,
        dom,
        on) {
        function print() {
            var printTask = new PrintTask({
                url: "http://localhost:6080/arcgis/rest/services/Utilities/PrintingTools/GPServer/Export%20Web%20Map%20Task"
            });
            var template = new PrintTemplate({
                format: "pdf",
                exportOptions: {
                    dpi: 300
                },
                layout: "a4-portrait",
                layoutOptions: {
                    titleText: "打印一张地图",
                    authorText: "Sam"
                }
            });
            var params = new PrintParameters({
                view: view,
                template: template
            });
            printTask.execute(params).then(function(data) { //printResult printError
                window.open(data.url, "_blank");
                //console.log(data["url"]);
            }, function() {
                console.log(Error);
            });
        };
    });
</script>

tip:遇到一个坑,为什么打印不出来地图????

在这里插入图片描述
打印出来:上面的图控制台的地址是 打印图纸出来地图的地址,点进去。
没图,啥也没有,以为是代码写错了,但检查了几遍,发现代码没问题。后来我在想,是不是由于,地图还没完全加载出来,就执行了打印,导致打印一个空白的东西。后来我试了一下,把打开写在一个按钮click事件里面。等地图加载出来,再点击打印按钮。一试,果然是这样。确实是地图没加载完成,就执行打印,结果就是打印不出来地图。
在这里插入图片描述

粘贴上错误的代码:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <!-- 引用在线arcgis api -->
    <link rel="stylesheet" href="https://js.arcgis.com/4.16/esri/themes/light/main.css" />
    <script src="https://js.arcgis.com/4.16/"></script>
    <!-- 引用在线Jquery -->
    <script src="http://libs.baidu.com/jquery/2.1.4/jquery.min.js"></script>
    <style>
        html,
        body,
        #viewDiv {
            height: 100%;
            width: 100%;
            margin: 0;
            padding: 0;
        }
    </style>

    <script>
        require([
            "esri/Map",
            "esri/Basemap",
            "esri/views/MapView",
            "esri/geometry/Extent",
            "esri/tasks/PrintTask",
            "esri/tasks/support/PrintTemplate",
            "esri/tasks/support/PrintParameters",
            "dojo/dom",
            "dojo/on",
            "dojo/domReady!"
        ], function(
            Map,
            Basemap,
            MapView,
            Extent,
            PrintTask,
            PrintTemplate,
            PrintParameters,
            dom,
            on) {
            var startExtent = new Extent({
                xmin: 120.236368,
                ymin: 36.043567,
                xmax: 120.579018,
                ymax: 36.196569,
                spatialReference: {
                    wkid: 4549
                }
            });
            var map = new Map({ //属性:allLayers、ground、layers
                basemap: "topo-vector"
            });
            var view = new MapView({
                container: "viewDiv",
                map: map,
                zoom: 11,
                Extent: startExtent,
                center: [120.369174, 36.097245] // longitude, latitude
            });
            var printTask = new PrintTask({
                url: "http://localhost:6080/arcgis/rest/services/Utilities/PrintingTools/GPServer/Export%20Web%20Map%20Task"
            });
            var template = new PrintTemplate({
                format: "pdf",
                exportOptions: {
                    dpi: 300
                },
                showLabels: true,
                layout: "a4-portrait",
                layoutOptions: {
                    titleText: "Warren Wilson College Trees",
                    scalebarUnit: "Miles",
                    authorText: "Sam"
                }
            });
            var params = new PrintParameters({
                view: view,
                template: template
            });
            printTask.execute(params).then(function(data) {
                console.log(data["url"]);
            }, function() {
                console.log(Error);
            });
        });
    </script>
</head>

<body>
    <div id="viewDiv"></div>
</body>

</html>

对view添加on事件。
view.on(“mouse-wheel”, function(event) {
var num = view.scale;
console.log(num);
});
前提:事先在view初始化的时候,添加scale属性,不然获取不到比例尺,

var view = new MapView({
container: “viewDiv”,
map: map,
zoom: 4,
scale: 24000,
center: [15, 65]
});
随着鼠标滚轮滑动,比例尺也变动。
在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: ArcGIS API for JavaScript 4.x 是由 Esri 公司提供的 JavaScript API,用于在 web 应用程序中使用 ArcGIS 地图和地理空间数据。它提供了一组用于创建丰富地图应用程序的工具,包括地图显示、图控制、查询和分析等功能。 ### 回答2: ArcGIS API for JavaScript 4.x 是由 Esri 公司开发的一款基于 web 的地理信息系统(WebGIS)开发工具集。它提供丰富的功能和工具,可以用来构建高质量的地图、应用程序和应用程序界面。 ArcGIS API for JavaScript 4.x 引入了许多新特性和改进,包括以下内容: 1. 优化性能:ArcGIS API for JavaScript 4.x 是基于 WebGL 技术实现的,可以更快速地加载和渲染地图。这个版本还引入了 SceneView 和 MapView,可以更加快速和高效地渲染 3D 场景。 2. 全新的视觉外观:ArcGIS API for JavaScript 4.x 引入了一些全新的样式,可以更好地展现数据。开发人员可以选择从一系列令人惊叹的符号和颜色方案中选择。 3. 更好的交互性和数据分析功能:ArcGIS API for JavaScript 4.x 提供了更好的交互性和数据分析工具,可以让用户更加轻松地探索和分析地图数据。例如,这个版本使得开发人员可以使用滤镜和统计功能探索和分析数据。 4. 多平台支持:ArcGIS API for JavaScript 4.x 可以在不同的平台上运行,包括桌面浏览器、移动设备和虚拟现实(VR)设备。 总之,ArcGIS API for JavaScript 4.x 是一款强大的工具集,可以帮助开发人员构建出高质量的地图应用程序。它提供了许多新特性和改进,包括优化性能、全新的视觉外观、更好的交互性和数据分析功能,以及多平台支持。 ### 回答3: ArcGIS API for JavaScript 4.x是一种WebGIS软件开发工具包,旨在提供可靠、高性能和易于使用的API,帮助开发人员构建可移植性强、交互性好的 WebGIS 应用。 ArcGIS API for JavaScript 4.x具有以下特点: 1.现代的Web GIS开发工具 ArcGIS API for JavaScript 4.x是一个现代的Web GIS开发工具,它可以帮助开发者利用最新的Web技术来构建高效、交互性好的WebGIS应用,无论时刻或地点。 2.支持多种数据格式 ArcGIS API for JavaScript 4.x支持多种数据格式,包括点、线、面、网格、图像、视频等,可以帮助开发者轻松地展示和分析地理信息数据。 3.交互性强 ArcGIS API for JavaScript 4.x允许开发者创建具有交互性的应用程序,包括可视化和图形用户界面(GUI)。开发人员可以轻松地添加地图、图、标签、图例和其他控件,以便用户可以与地图积极地交互。 4.易于开发 ArcGIS API for JavaScript 4.x非常易于开发,开发者可以使用自己的Web开发工具(如Visual Studio或Sublime等),无需安装复杂的GIS软件或插件。开始撰写代码需要一些GIS基础知识和Javascript开发经验。 5.高性能 ArcGIS API for JavaScript 4.x拥有高性能的地图渲染引擎,支持大量复杂数据文件和多次渲染操作,以及高效的数据压缩和缓存机制,为地图应用提供良好的性能。 总而言之, ArcGIS API for JavaScript 4.x提供了丰富的功能和细节控制能力,使开发人员能够快速构建出具有高度个性化的WebGIS应用程序,满足不同用户需求。无论是企业的GIS解决方案,还是个人开发GIS应用, ArcGIS API for JavaScript 4.x是一个不错的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值