arcgis for js實現(xiàn)地圖截圖、地圖打印功能
地圖截圖
效果

實現(xiàn)
復制運行即可
要實現(xiàn)復雜的截圖保存可以參考 官網(wǎng)案例
<!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" rel="external nofollow" rel="external nofollow" />
<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'
})
// 創(chuàng)建2維視圖
let view = new MapView({
container: 'mapview',
map: map,
zoom: 11,
center: [104.783916597735, 32.55699155692144] // 設(shè)置地圖的初始化中心點坐標
})
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等圖層就會失效
效果

實現(xiàn)
<!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" rel="external nofollow" rel="external nofollow" />
<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'
})
// 創(chuàng)建2維視圖
let view = new MapView({
container: 'mapview',
map: map,
zoom: 11,
center: [104.783916597735, 32.55699155692144] // 設(shè)置地圖的初始化中心點坐標
})
document.querySelector('#btn').addEventListener('click', function () {
const print = new Print({
view: view,
label: '提取',
// 最好指定為自己的打印服務(wù)
printServiceUrl: 'https://utility.arcgisonline.com/arcgis/rest/services/Utilities/PrintingTools/GPServer/Export%20Web%20Map%20Task'
})
// 將小部件添加到視圖的右下角
view.ui.add(print, 'bottom-right')
})
})
</script>
</body>
</html>注意
打印服務(wù)最好使用自己的arcgisServer服務(wù), 如何開啟自行百度,當然這種事直接呼叫公司gis工程師咯
到此這篇關(guān)于arcgis for js實現(xiàn)地圖截圖、地圖打印的文章就介紹到這了,更多相關(guān)arcgis for js地圖截圖內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
countup.js實現(xiàn)數(shù)字動態(tài)疊加效果
這篇文章主要為大家詳細介紹了countup.js實現(xiàn)數(shù)字動態(tài)疊加效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-10-10
用javascript實現(xiàn)gb2312轉(zhuǎn)utf-8的腳本
用javascript實現(xiàn)gb2312轉(zhuǎn)utf-8的腳本...2007-05-05
JavaScript中判斷字符串不為空的5種常見方法總結(jié)
在JavaScript編程中,判斷字符串是否為空是一個常見的任務(wù),這篇文章主要介紹了JavaScript中判斷字符串不為空的5種常見方法,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2025-08-08
js判斷undefined類型,undefined,null, 的區(qū)別詳細解析
本篇文章主要是對js判斷undefined類型,undefined,null,NaN的區(qū)別進行了詳細的分析介紹,需要的朋友可以過來參考下,希望對大家有所幫助2013-12-12
淺析使用BootStrap TreeView插件實現(xiàn)靈活配置快遞模板
這篇文章主要介紹了使用bootstrap-treeview插件實現(xiàn)靈活配置快遞模板的相關(guān)資料,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2016-11-11
前端實現(xiàn)代碼質(zhì)量校驗的常用方法與避坑指南
這篇文章主要為大家詳細介紹了前端HTML5代碼的質(zhì)量校驗方法,文中的示例代碼講解詳細,希望可以幫助大家規(guī)劃HTML5+AI的學習與職業(yè)路徑2026-04-04

