1、本文应用arcgis api for javascript对发布的动态地图进行打印,打印的为PDF格式,打印出来如图:

2、需要特别注意的是:我们在运行代码前,需要打开PrintingTools,如图

3、并且在启动后,在URL中,需要修改一下,如图:

4、运行代码,点击打印如图:

5、代码部分:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title>地图打印</title>
  5. <meta http-equiv="content-type" content="text/html;charset=utf-8">
  6. <meta http-equiv="Access-Control-Allow-Origin" content="*">
  7. <link rel="stylesheet" href="https://js.arcgis.com/3.29/esri/css/esri.css">
  8. <script src="https://js.arcgis.com/3.29/"></script>
  9. <style>
  10. #map{
  11. position:relative;
  12. height:500px;
  13. width:100%;
  14. }
  15. </style>
  16. </head>
  17. <body>
  18.  
  19. <div id='map'>
  20. </div>
  21. <div>
  22. <input id="Btn" type="button" value="打印地图PDF" />
  23. </div>
  24. <script>
  25. var map,sr,bool = false,initextent,url;
  26. require([
  27. "esri/map",
  28. "esri/layers/MapImage",
  29. "esri/layers/MapImageLayer",
  30. "esri/geometry/Extent",
  31. "esri/SpatialReference",
  32. "esri/tasks/PrintTask",
  33. "esri/tasks/PrintTemplate",
  34. "esri/tasks/PrintParameters",
  35. "esri/layers/ArcGISDynamicMapServiceLayer",
  36. "dojo/domReady!"],
  37. function (
  38. Map,
  39. MapImage,
  40. MapImageLayer,
  41. Extent,
  42. SpatialReference,
  43. PrintTask,
  44. PrintTemplate,
  45. PrintParameters,
  46. ArcGISDynamicMapServiceLayer) {
  47. sr = new SpatialReference(4326)
  48. map = new Map("map", {
  49. basemap:"satellite"
  50. });
  51. //调用动态地图服务
  52. var DyLayer=new ArcGISDynamicMapServiceLayer('http://localhost:6080/arcgis/rest/services/dtchina/MapServer');
  53. map.addLayer(DyLayer);
  54. var btn=document.getElementById("Btn");
  55. btn.onclick=function(){
  56. btn.setAttribute("disabled","true");
  57. btn.value="正在输出...";
  58. var printMap = new PrintTask("http://localhost:6080/arcgis/rest/services/Utilities/PrintingTools/GPServer/Export%20Web%20Map%20Task");
  59. //创建地图打印模版
  60. var template = new PrintTemplate();
  61. var params = new PrintParameters();
  62. //输出图片的空间参考
  63. printMap.outSpatialReference = map.SpatialReference
  64. //打印图片的各种参数
  65. template.exportOptions = {
  66. width: 850,
  67. height: 650,
  68. dpi: 96
  69. };
  70. template.format = "PDF";
  71. template.layout = "MAP_ONLY";
  72. params.map = map;
  73. params.template = template;
  74. printMap.execute(params, function(result){
  75. console.log(result);
  76. if (result != null) {
  77. (function(){
  78. btn.disabled=false;
  79. btn.value="打印地图PDF";
  80. })()
  81. window.open(result.url);
  82. }
  83. })
  84. }
  85. });
  86. </script>
  87. </body>
  88. </html>

  

arcgis api for javascript 学习(六) 地图打印的更多相关文章

  1. arcgis api for javascript 学习(七) 调用发布地图信息,并将地图属性信息输出到Excel表格---进阶版

    我们在arcgis api for javascript 学习(三)已经学习到了关于调用地图信息进行属性输出的问题,不过通过代码我们实现后会发现还是有一些小瑕疵的,比如我们只能单个数据属性的输出,如果 ...

  2. ArcGis API for JavaScript学习——加载地图

    ArcGis API for JavaScript开发笔记——加载地图 在这个例子中使用的离线部署的API(请参见 http://note.youdao.com/noteshare?id=f42865 ...

  3. arcgis api for javascript 学习(三) 调用发布地图信息,并将地图属性信息输出到Excel表中

    吐血推荐:网上搜了很久关于webgis地图属性表输出到Excel表,并没能找到相关有价值的信息,在小白面前,这就是一脸懵x啊!网上要么是关于前端如何在页面上直接导出excel,和webgis半毛钱关系 ...

  4. arcgis api for javascript 学习(四) 地图的基本操作

    1.文章讲解的为地图的平移.放大.缩小.前视图.后视图以及全景视图的基本功能操作 2.主要用到的是arcgis api for javascript中Navigation的用法,代码如下: <! ...

  5. ArcGis API for JavaScript学习——离线部署API

    ArcGis API for JavaScript开发笔记——离线部署API 以3.18版API为例: 在加载图图前引用GIS服务是必须的.有两种方法,一是在线引用,而是离线部署引用. 在线引用: & ...

  6. Arcgis api for javascript学习笔记(4.5版本) - 获取FeatureLayer中的graphics集合

    在Arcgis api for javascript 3.x 版本中,我们可以直接通过某个FeatureLayer对象中的graphics属性获取要素集合. graphics属性 但是在4.x版本中, ...

  7. Arcgis api for javascript学习笔记(4.5版本) - 本地部署及代理配置

    在开发过程中,由于api的文件比较多,没必要每个项目都将api加入到解决方案中.况且在VS中如果将api加入解决方案,在编写css或js代码时,由于智能提示需要扫描脚本等文件,会导致VS很卡.所以个人 ...

  8. Arcgis api for javascript学习笔记(3.2X版本)-初步尝试

    Arcgis api for javascript(3.22版本)官方地址 :https://developers.arcgis.com/javascript/3/ 1. 根据官方示例实现一个简单地图 ...

  9. Arcgis api for javascript学习笔记 - 不改变默认端口(6080)情况下,外网访问Arcgis Server 发布的接口

    Arcgis Server发布的地图服务地址默认端口号是6080,假设本机上只对80端口做了外网映射,在IIS中部署了一个网站绑定了80端口,那么网站中某个页面通过arcgis api for js ...

随机推荐

  1. Oracle 事务ACID的特性

    1.事务对数据库控制操作 事务(Transaction)是用户定义的一个数据库操作序列,是不可分割的一部分的整体.这些操作要么做,要么不做(原子性).事务是对数据库对进行操作的最基本的逻辑单位,他可以 ...

  2. Add a Simple Action添加简单按钮

    In this lesson, you will learn how to create a Simple Action. For this purpose, a new View Controlle ...

  3. Python3爬取豆瓣网电影信息

      # -*- coding:utf-8 -*- """ 一个简单的Python爬虫, 用于抓取豆瓣电影Top前250的电影的名称 Language: Python3.6 ...

  4. mysql 查询指定数据库中的表明和字段名

    SELECT TABLE_NAME,COLUMN_NAME,COLUMN_COMMENT FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_COMMENT LI ...

  5. 使用Graphviz和Pyreverse绘制Python项目结构图

    使用Graphviz和Pyreverse绘制Python项目结构图 简介 Graphviz开源的图形绘制工具包 Pyreverse分析Python代码和类关系的工具 安装 安装Graphviz 官网下 ...

  6. 40-用 volume container 共享数据

    volume container 是专门为其他容器提供 volume 的容器.它提供的卷可以是 bind mount,也可以是 docker managed volume.下面我们创建一个 volum ...

  7. Scrapy的Spider类和CrawlSpider类

    Scrapy shell 用来调试Scrapy 项目代码的 命令行工具,启动的时候预定义了Scrapy的一些对象 设置 shell Scrapy 的shell是基于运行环境中的python 解释器sh ...

  8. go语言设计模式之factory

    factory.go package factory import ( "errors" "fmt" ) const ( Cash = 1 DebitCard ...

  9. acwing 7 混合背包

    习题地址  https://www.acwing.com/problem/content/description/7/ 题目描述有 N 种物品和一个容量是 V 的背包. 物品一共有三类: 第一类物品只 ...

  10. 剑指Offer-36.数字在排序数组中出现的次数(C++/Java)

    题目: 统计一个数字在排序数组中出现的次数. 分析: 给定一个已经排好序的数组,统计一个数字在数组中出现的次数. 那么最先想到的可以遍历数组统计出现的次数,不过题目给了排序数组,那么一定是利用了排序这 ...