arcgis for js实现地图截图、地图打印

地图截图

效果

在这里插入图片描述

实现

复制运行即可

要实现复杂的截图保存可以参考 官网案例

<!DOCTYPE html>
<html lang="zn"><head><meta charset="UTF-8" /><meta http-equiv="X-UA-Compatible" content="IE=edge" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Document</title><style>#mapview {width: 100vw;height: 100vh;}* {margin: 0;padding: 0;}#btn {position: fixed;right: 30px;top: 10px;z-index: 999;width: 100px;height: 40px;cursor: pointer;}</style><link rel="stylesheet" href="https://js.arcgis.com/4.23/esri/themes/light/main.css" /><script src="https://js.arcgis.com/4.23/"></script></head><body><button id="btn">地图截图</button><div id="mapview"></div><script>require(['esri/Map', 'esri/views/MapView', 'esri/layers/FeatureLayer'], function (Map,MapView,FeatureLayer) {// 初始化底图window.map = new Map({basemap: 'dark-gray-vector'})// 创建2维视图let view = new MapView({container: 'mapview',map: map,zoom: 11,center: [104.783916597735, 32.55699155692144] // 设置地图的初始化中心点坐标})document.querySelector('#btn').addEventListener('click', function () {view.takeScreenshot({area: {x: 0,y: 0,width: view.width,height: view.height},format: 'png'}).then(screenshot => {// 直接下载const base64 = screenshot.dataUrl.toString() // imgSrc 就是base64哈const byteCharacters = atob(base64.replace(/^data:image\/(png|jpeg|jpg);base64,/, ''))const byteNumbers = new Array(byteCharacters.length)for (let i = 0; i < byteCharacters.length; i++) {byteNumbers[i] = byteCharacters.charCodeAt(i)}const byteArray = new Uint8Array(byteNumbers)const blob = new Blob([byteArray], {type: undefined})const aLink = document.createElement('a')aLink.download = '图片名称.jpg' //这里写保存时的图片名称aLink.href = URL.createObjectURL(blob)aLink.setAttribute('crossOrigin', 'anonymous')aLink.click()})})})</script></body>
</html>

地图打印

使用arcgis自带的打印组件,可自选导出格式,方向等等

缺点是如果地图上有MapImageLayer等图层就会失效

效果

在这里插入图片描述

实现

<!DOCTYPE html>
<html lang="zn"><head><meta charset="UTF-8" /><meta http-equiv="X-UA-Compatible" content="IE=edge" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Document</title><style>#mapview {width: 100vw;height: 100vh;}* {margin: 0;padding: 0;}#btn {position: fixed;right: 30px;top: 10px;z-index: 999;width: 100px;height: 40px;cursor: pointer;}</style><link rel="stylesheet" href="https://js.arcgis.com/4.23/esri/themes/light/main.css" /><script src="https://js.arcgis.com/4.23/"></script></head><body><button id="btn">地图打印</button><div id="mapview"></div><script>require(['esri/Map','esri/views/MapView','esri/layers/FeatureLayer','esri/Graphic','esri/widgets/Print'], function (Map, MapView, FeatureLayer, Graphic, Print) {// 初始化底图window.map = new Map({basemap: 'dark-gray-vector'})// 创建2维视图let view = new MapView({container: 'mapview',map: map,zoom: 11,center: [104.783916597735, 32.55699155692144] // 设置地图的初始化中心点坐标})document.querySelector('#btn').addEventListener('click', function () {const print = new Print({view: view,label: '提取',// 最好指定为自己的打印服务printServiceUrl: 'https://utility.arcgisonline.com/arcgis/rest/services/Utilities/PrintingTools/GPServer/Export%20Web%20Map%20Task'})// 将小部件添加到视图的右下角view.ui.add(print, 'bottom-right')})})</script></body>
</html>

注意

打印服务最好使用自己的arcgisServer服务, 如何开启自行百度,当然这种事直接呼叫公司gis工程师咯

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/63415.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【BUG】记一次context canceled的报错

文章目录 案例分析gorm源码解读gin context 生命周期context什么时候cancel的什么时候context会被动cancel掉呢&#xff1f; 野生协程如何处理 案例分析 报错信息 {"L":"ERROR","T":"2024-12-17T11:11:33.0050800","file"…

信号槽【QT】

文章目录 对象树字符集信号槽QT坐标系信号与槽connect自定义槽自定义信号disconnect 对象树 #ifndef MYLABEL_H #define MYLABEL_H#include<QLabel> class MyLabel : public QLabel { public:// 构造函数使用带 QWidget* 版本的.// 确保对象能够加到对象树上MyLabel(QWi…

写SQL太麻烦?免费搭建 Text2SQL 应用,智能写 SQL | OceanBase AI 实践

自OceanBase 4.3.3版本推出以来&#xff0c;向量检索的能力受到了很多客户的关注&#xff0c;也纷纷表达希望OB能拓展更多 多模数据库大模型 的AI应用实践。 在上篇文章 &#x1f449; OceanBase LLM&#xff0c;免费构建你的专属 AI 助手 &#xff0c;我们介绍了如何去搭建一…

Dalsa线阵CCD相机使用开发手册

要使用Dalsa工业相机进行二次开发&#xff0c;看用户开发手册顺便做下笔记&#xff1a;&#xff08;欢迎加QQ讨论&#xff1a;77248031&#xff0c; 或QQ群&#xff1a;585068192&#xff09; 由于“本公主”用的.NET开发&#xff0c;软件支持只翻译了手册中.NET部分&#xff0…

C++特殊类设计(单例模式等)

目录 引言 1.请设计一个类&#xff0c;不能被拷贝 2. 请设计一个类&#xff0c;只能在堆上创建对象 为什么设置实例的方法为静态成员呢 3. 请设计一个类&#xff0c;只能在栈上创建对象 4. 请设计一个类&#xff0c;不能被继承 5. 请设计一个类&#xff0c;只能创建一个对…

分布式系统架构:服务容错

1.为什么需要容错 分布式系统的本质是不可靠的&#xff0c;一个大的服务集群中&#xff0c;程序可能崩溃、节点可能宕机、网络可能中断&#xff0c;这些“意外情况”其实全部都在“意料之中”。故障的发生是必然的&#xff0c;所以需要设计一套健壮的容错机制来应对这些问题。 …

[IT项目管理]九.项目质量管理

九&#xff0e;项目质量管理 9.1项目质量管理的重要性 对于很多IT项目的差劲&#xff0c;大多数人只可以忍受。项目质量管理是IT项目管理的重要组成部分&#xff0c;对于提高项目成功率、降低项目成本、提升客户满意度至关重要。尽管很多人对IT项目的质量问题感到无奈&#x…

【Threejs】从零开始(六)--GUI调试开发3D效果

请先完成前置步骤再进行下面操作&#xff1a;【Threejs】从零开始&#xff08;一&#xff09;--创建threejs应用-CSDN博客 一.GUI界面概述 GUI&#xff08;Graphical User Interface&#xff09;指的是图形化用户界面&#xff0c;广泛用在各种程序的上位机&#xff0c;能够通过…

ffmpeg-SDL显示BMP

效果图如下 本文主要将我们通过创建窗口、渲染上下文工具、纹理工具、矩形框工具&#xff1b;其需要主要的是&#xff1a;首先我们在显示BMP时&#xff0c;需要先创建好窗口&#xff0c;再使用渲染工具对窗口进行格式刷&#xff0c;使用纹理工具和渲染工具配合进行BMP图片显示…

多音轨视频使用FFmpeg删除不要音轨方法

近期给孩子找宫崎骏动画&#xff0c;但是有很多是多音轨视频但是默认的都是日语&#xff0c;电视上看没办法所以只能下载后删除音轨文件只保留中文。 方法分两步&#xff0c;先安装FFmpeg在转文件即可。 第一步FFmpeg安装 FFmpeg是一个开源项目&#xff0c;包含了处理视频的…

【SH】Ubuntu Server 24搭建Web服务器访问Python程序研发笔记

文章目录 说个问题写个方案一、安装Ubuntu Server二、安装Web服务器采用Nginx服务器 三、安装Python及依赖创建项目虚拟环境 四、安装Python Web框架采用Flask框架创建和运行Flask应用&#xff08;以后的重点&#xff09; 五、安装WSGI服务器采用Gunicorn 六、配置Nginx七、验证…

C#速成(GID+图形编程)

常用类 类说明Brush填充图形形状,画刷GraphicsGDI绘图画面&#xff0c;无法继承Pen定义绘制的对象直线等&#xff08;颜色&#xff0c;粗细&#xff09;Font定义文本格式&#xff08;字体&#xff0c;字号&#xff09; 常用结构 结构说明Color颜色Point在平面中定义点Rectan…

谁说C比C++快?

看到这个问题&#xff0c;我我得说&#xff1a;这事儿没有那么简单。 1. 先把最大的误区打破 "C永远比C快" —— 某位1990年代的程序员 这种说法就像"自行车永远比汽车省油"一样荒谬。我们来看个例子&#xff1a; // C风格 char* str (char*)malloc(100…

【ADS射频电路学习笔记】1. ADS基本操作

下面介绍ADS中主要仿真器的使用 1. 直流仿真 直流仿真器在控制面板的simulator-dc 直流仿真器 但是ADS自带有很多仿真器&#xff0c;可以直接来调用 选用晶体管电流扫描的模板 就可以输出模板 然后调入晶体管模型 然后要设置扫描的电压&#xff0c;选择dc仿真器对vds进行扫描…

CSS学习记录12

CSS浮动 CSSfloat属性规定元素如何浮动 CSSclear属性规定哪些元素可以在清除的元素旁边以及在哪一侧浮动。 float属性 float属性用于定位和格式化内容&#xff0c;例如让图像向左浮动到容器的文本那里。 float属性可以设置以下值之一&#xff1a; left - 元素浮动到其容器…

Chinese-Clip实现以文搜图和以图搜图(transformers版)

本文不生产技术&#xff0c;只做技术的搬运工&#xff01; 前言 作者昨天使用cn_clip库实现了一版&#xff0c;但是觉得大家复现配置环境可能有点复杂&#xff0c;因此有使用transformers库实现了一版&#xff0c;提供大家选择&#xff0c;第一篇参考链接如下&#xff1a; Ch…

【Unity3D】无限循环列表(扩展版)

基础版&#xff1a;【Unity技术分享】UGUI之ScrollRect优化_ugui scrollrect 优化-CSDN博客 using UnityEngine; using UnityEngine.UI; using System.Collections.Generic;public delegate void OnBaseLoopListItemCallback(GameObject cell, int index); public class BaseLo…

springboot检测配置是否存在,如果存在则返回,不存在则提示新增

我这里是以七牛为例子 在yml中添加七牛的相关配置 qiniu: #七牛的相关配置accessKey: your_access_keysecretKey: your_secret_keybucket: your_bucket_namedomain: your_domain 对应在给配置文件来一个相应的实体类QiniuConfig Component ConfigurationProperties(prefix &…

[NOIP2016 普及组] 海港 -STL-队列queue

[NOIP2016 普及组] 海港 题目背景 NOIP2016 普及组 T3 题目描述 小 K 是一个海港的海关工作人员&#xff0c;每天都有许多船只到达海港&#xff0c;船上通常有很多来自不同国家的乘客。 小 K 对这些到达海港的船只非常感兴趣&#xff0c;他按照时间记录下了到达海港的每一…

【Vulkan入门】16-IndexBuffer

TOC 先叨叨 上篇介绍了如何使用VertexBuffer传入顶点信息。两个多星期了我们一直在玩三个点&#xff0c;本篇介绍如何渲染更多的点。 在渲染前考虑一个问题&#xff0c;渲染一个三角形需要三个点&#xff0c;渲染两个相接的三角形需要几个点&#xff1f; 答案是6个点&#xf…