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.pswp.cn/web/63415.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/63415.shtml
英文地址,請注明出處:http://en.pswp.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;我們介紹了如何去搭建一…

400G/800G光模塊崛起:AI時代的網絡基礎設施革命

隨著AI技術的不斷成熟&#xff0c;各行各業都在大規模投入AI。醫療行業通過AI技術實現了更精準的診斷和治療&#xff1b;金融行業通過AI技術提高了風險管理能力&#xff1b;制造行業通過AI技術優化了生產流程&#xff1b;娛樂行業通過AI技術創造了更加豐富的用戶體驗。AI在醫療…

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;所以需要設計一套健壯的容錯機制來應對這些問題。 …

【Latex手冊】自用

收錄Latex使用文檔/工具 個人使用時候的tips&#xff0c;僅供個人使用 核心網頁&#xff1a;LaTeX 工作室 【1】首頁 | LaTeX 知識庫 &#xff08;有詳細的入門教程&#xff09; 【2】LaTeX工作室 - LaTeX工作室&#xff08;一些模板&#xff09; 【3】LaTeX 工作室 &…

Pytorch應用實戰(1)- 基于YOLO的視頻人臉馬賽克處理

免費鏈接: Blogger(需翻Q), Github 文章目錄 本文介紹給圖片的人臉打碼給視頻的人臉打碼本文介紹 YoloV11(Github)提供了非常方便的API幫助用戶實現目標檢測(detect)、語義分割(segement)、肢體識別(Pose)等功能。 本文將基于YoloV11的目標檢測來實現一個視頻人臉馬…

[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;包含了處理視頻的…

基礎二分查找總結題-單峰序列2類做法

&#x1f330;單峰序列題目描述 晴問算法 題目描述&#xff1a; 單峰序列是指&#xff0c;在這個序列中存在一個位置&#xff0c;滿足這個位置的左側&#xff08;含該位置&#xff09;是嚴格遞增的、右側&#xff08;含該位置&#xff09;是嚴格遞減的&#xff0c;這個位置被…

【SH】Ubuntu Server 24搭建Web服務器訪問Python程序研發筆記

文章目錄 說個問題寫個方案一、安裝Ubuntu Server二、安裝Web服務器采用Nginx服務器 三、安裝Python及依賴創建項目虛擬環境 四、安裝Python Web框架采用Flask框架創建和運行Flask應用&#xff08;以后的重點&#xff09; 五、安裝WSGI服務器采用Gunicorn 六、配置Nginx七、驗證…

Vue3 重置ref或者reactive屬性值

需要重新定義一個對象綁定復制給原對象 。 實例代碼: const data () > ({groupId: ,groupCode: ,groupName: ,groupType: ,});const formData ref(data());//重置對象值 const reset()>{Object.assign(formData, data()…

C#速成(GID+圖形編程)

常用類 類說明Brush填充圖形形狀,畫刷GraphicsGDI繪圖畫面&#xff0c;無法繼承Pen定義繪制的對象直線等&#xff08;顏色&#xff0c;粗細&#xff09;Font定義文本格式&#xff08;字體&#xff0c;字號&#xff09; 常用結構 結構說明Color顏色Point在平面中定義點Rectan…

vue iframe進行父子頁面通信并切換URL

使用通義千問提問后得到一個很好的示例。 需求是2個項目需要使用同一個面包屑進行跳轉&#xff0c;其中一個是iframe所在的項目&#xff0c;另一個需要通過地址訪問。通過 window.parent.postMessage &#xff0c;幫助 <iframe> 內嵌入的子頁面和其父頁面之間進行跨域通…

誰說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進行掃描…