欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2024年12月21日 12:13:15   作者:我不當(dāng)帕魯誰(shuí)當(dāng)帕魯  
這篇文章主要介紹了arcgis for js實(shí)現(xiàn)地圖截圖、地圖打印功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧

地圖截圖

效果

實(shí)現(xiàn)

復(fù)制運(yùn)行即可

要實(shí)現(xiàn)復(fù)雜的截圖保存可以參考 官網(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è)置地圖的初始化中心點(diǎn)坐標(biāo)
        })
        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' //這里寫(xiě)保存時(shí)的圖片名稱
              aLink.href = URL.createObjectURL(blob)
              aLink.setAttribute('crossOrigin', 'anonymous')
              aLink.click()
            })
        })
      })
    </script>
  </body>
</html>

地圖打印

使用arcgis自帶的打印組件,可自選導(dǎo)出格式,方向等等

缺點(diǎn)是如果地圖上有MapImageLayer等圖層就會(huì)失效

效果

實(shí)現(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è)置地圖的初始化中心點(diǎn)坐標(biāo)
        })
        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ù), 如何開(kāi)啟自行百度,當(dāng)然這種事直接呼叫公司gis工程師咯

到此這篇關(guān)于arcgis for js實(shí)現(xiàn)地圖截圖、地圖打印的文章就介紹到這了,更多相關(guān)arcgis for js地圖截圖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • js貪吃蛇游戲?qū)崿F(xiàn)思路和源碼

    js貪吃蛇游戲?qū)崿F(xiàn)思路和源碼

    這篇文章主要為大家介紹了js貪吃蛇游戲?qū)崿F(xiàn)思路,并分享貪吃蛇游戲源碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-04-04
  • JavaScript鼠標(biāo)移動(dòng)事件以及實(shí)戰(zhàn)案例

    JavaScript鼠標(biāo)移動(dòng)事件以及實(shí)戰(zhàn)案例

    在學(xué)習(xí)JS中我對(duì)鼠標(biāo)移動(dòng)事件進(jìn)行了一些總結(jié),需要的可以作參考,下面這篇文章主要給大家介紹了關(guān)于JavaScript鼠標(biāo)移動(dòng)事件以及實(shí)戰(zhàn)案例的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05
  • 常用的JavaScript驗(yàn)證正則表達(dá)式匯總

    常用的JavaScript驗(yàn)證正則表達(dá)式匯總

    這篇文章主要是對(duì)常用的JavaScript驗(yàn)證正則表達(dá)式進(jìn)行了詳細(xì)的匯總介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助
    2013-11-11
  • 關(guān)于Javascript中defer和async的區(qū)別總結(jié)

    關(guān)于Javascript中defer和async的區(qū)別總結(jié)

    相信看過(guò)javascript高級(jí)程序設(shè)計(jì)的人,在javascript高級(jí)程序設(shè)計(jì)里,應(yīng)該看到了介紹了有關(guān)defer和async的區(qū)別,可是比較淺顯,而且也說(shuō)得不是很清楚。下面我們來(lái)通過(guò)這篇文章來(lái)詳細(xì)了解下dfer和async的區(qū)別。
    2016-09-09
  • electron如何使用typescript

    electron如何使用typescript

    引入 TypeScript 到 Electron 項(xiàng)目可以幫助你捕捉錯(cuò)誤并在編寫(xiě)代碼時(shí)提供更好的自動(dòng)完成和文檔,這篇文章主要介紹了electron使用typescript的步驟,需要的朋友可以參考下
    2024-04-04
  • JavaScript超詳細(xì)實(shí)現(xiàn)網(wǎng)頁(yè)輪播圖

    JavaScript超詳細(xì)實(shí)現(xiàn)網(wǎng)頁(yè)輪播圖

    這篇文章主要介紹了JavaScript超詳細(xì)實(shí)現(xiàn)網(wǎng)頁(yè)輪播圖,我們經(jīng)常會(huì)看到各種輪播圖的效果,它們到底是怎樣實(shí)現(xiàn)的呢?今天我們就一起來(lái)看一下具體實(shí)現(xiàn)方法吧
    2021-12-12
  • JS實(shí)現(xiàn)多選框的操作

    JS實(shí)現(xiàn)多選框的操作

    這篇文章主要為大家詳細(xì)介紹了JS實(shí)現(xiàn)多選框的操作,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • JS 實(shí)現(xiàn)導(dǎo)航欄懸停效果(續(xù)2)

    JS 實(shí)現(xiàn)導(dǎo)航欄懸停效果(續(xù)2)

    發(fā)現(xiàn)原來(lái)的方法還有是有幾個(gè)問(wèn)題:首先Js代碼冗余,導(dǎo)航條上的Tab是用js實(shí)現(xiàn)跳轉(zhuǎn)而不是超鏈接,還有導(dǎo)航條本身用fixed定位,但沒(méi)有被設(shè)置為水平居中,而是在JS中更改left值使其居中
    2013-09-09
  • vue 自定義指令directive的使用場(chǎng)景

    vue 自定義指令directive的使用場(chǎng)景

    這篇文章主要詳細(xì)介紹了vue 自定義指令directive的使用場(chǎng)景,文中有詳細(xì)的代碼示例,感興趣的小伙伴歡迎閱讀
    2023-04-04
  • TypeScript新特性之using關(guān)鍵字的使用方法

    TypeScript新特性之using關(guān)鍵字的使用方法

    TypeScript 5.2版本中新添加了using關(guān)鍵字,目前該關(guān)鍵字的提案也進(jìn)入了ECMAScript的Stage 3,也就是說(shuō)很快就會(huì)進(jìn)入JavaScript語(yǔ)言本身中,using和const, let和var一樣都是用于變量聲明的,那么它到底有什么與眾不同的地方呢,本文給大家介紹的非常詳細(xì)
    2023-11-11

最新評(píng)論