国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

可視化大屏:mapbox+vue全攻略

這篇具有很好參考價(jià)值的文章主要介紹了可視化大屏:mapbox+vue全攻略。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

如題圖,mapbox是一個(gè)支持真3D地形展示的webGIS框架,與常用的Leaflet、Cesium和Openlayers并稱四大框架,本文將介紹mapbox-gl js 在 vue 中的用法。

為什么要用 mapbox ?

各位可以自行搜索上面提到的或者其他的webGIS框架或者集成服務(wù)商,可以很輕松的比較出mapbox的優(yōu)勢(shì):

  • 支持3D地形、3D模型
  • 支持多種坐標(biāo)系投影
  • mapbox studio 在線編輯地圖樣式,使用時(shí)只需一個(gè)鏈接,更新時(shí)鏈接也無需修改(無可替代)
  • 漂亮(誰能反駁?)
  • 簡(jiǎn)單易上手(對(duì)比Cesium、Openlayers)
  • 地理數(shù)據(jù)全格式支持(Image、KML、WMS、 WMTS、 GeoJson)
  • 功能齊全,mapbox再也不是那個(gè)花瓶了,它現(xiàn)在是一個(gè)強(qiáng)大的、完整的大型框架

注冊(cè)mapbox賬號(hào)

mapbox禁止中國(guó)地區(qū)的新用戶注冊(cè),需要開啟全局的魔法,進(jìn)入 mapbox官網(wǎng)注冊(cè)

如果要求輸入 海外銀行卡號(hào),參閱:知乎:mapbox的注冊(cè)怎么需要填卡號(hào),有銀行要求嗎,之前看網(wǎng)上說不需要填,具體要怎么操作,求大神指點(diǎn)。?

完成注冊(cè)后會(huì)看到如下畫面

左上紅框可以在線創(chuàng)建、編輯地圖樣式。下方紅框是公鑰,可以用來訪問你創(chuàng)建的公開地圖。

創(chuàng)建你的個(gè)性化地圖

你可以自行探索各個(gè)圖層分別是什么,我這里只新增了一個(gè)衛(wèi)星圖,圖層越多,加載的時(shí)候就越慢,用起來就越卡。

點(diǎn)擊左上角3D按鈕,即可開啟3D視圖,mapbox會(huì)根據(jù)全球等高線信息模擬出地形

上圖為山東省泰安市。此外還支持:

  • 自定義光源
  • 自定義坐標(biāo)系
  • 自定義地形夸張
  • 霧氣(視野可見范圍,適當(dāng)設(shè)置有助于性能優(yōu)化)

在VUE項(xiàng)目中使用mapBox

本文使用vue3,選配如下:

  • router
  • vuex
  • less
  1. 安裝,通過NPM安裝

    1. npm i mapbox-gl
      
  2. 引入

    1. import mapboxgl from 'mapbox-gl';
      import 'mapbox-gl/dist/mapbox-gl.css';
      import MapboxLanguage from '@mapbox/mapbox-gl-language'; //可以將標(biāo)簽改為中文
      
  3. 初始化

    1. mapboxgl.accessToken='pk.eyJ1IjoiemJiZW4iLCJhIjoiACtpemtnOXRoMDRhcDMwbG43aGYxbXhqYyJ9.YOJzSXzubABBJeK7SXg60w'; //這是一個(gè)無效的公鑰,上面提到了公鑰在哪里可以獲取到
      this.map = new mapboxgl.Map({
              container: "basicMapbox",
              style: 'mapbox://styles/xxx/ckus1uok22m4117aif4pg9qa6', //這是個(gè)假鏈接,在上面有提到分享按鈕,那里有你自己的鏈接
              center: [118, 28],
              zoom: 3, //zoom你都不懂就別看了
              pitch: 0, // 相對(duì)于地面3D視角的角度
              bearing: 0, // 東西南北 方向,正北方為 0
              projection: 'globe', // 為 3D 地球
              antialias: false, //抗鋸齒,通過false關(guān)閉提升性能
              essential: true, //不知道什么意思,我看人家寫我就寫了
              renderWorldCopies: false, //可理解為loop,在projection: 'globe'時(shí)無效
              skipOnboarding: true,//可選擇不等待瓦片加載
            });
      // ### 標(biāo)簽漢化
      // this.map.addControl(new MapboxLanguage({ defaultLanguage: 'zh-Hans' }));
      // ### 添加導(dǎo)航控制條
      // this.map.addControl(new mapboxgl.NavigationControl(), 'top-left');
      
  4. 監(jiān)聽事件

    1. this.map.on("eventName",()=>{})
      // 常用事件有:load、moveend、render等,自行探索
      
  5. 常用方法

    1. this.map.setFog({}); //開啟宇宙、星空
      this.map.flyTo({
           center: [109.926476, 19.088415], //目標(biāo)中心點(diǎn) 海南省瓊中縣灣嶺鎮(zhèn)
           zoom: 11, //目標(biāo)縮放級(jí)別
           bearing: 56.50, //目標(biāo)方位角
           pitch: 47.50, //目標(biāo)傾斜角
      },duration: 7000,) //飛行
      let shape = await request.get("some_geoJosn")
      this.map.addSource('customSourceName'{
          type:"geojson" //可選: raster || image || 等
          // 每個(gè)類型所需的參數(shù)不一樣,自行探索,這里用geojson舉例。
          "data": shape
      }) //添加資源
      this.map.getSource('customSourceName') && this.map.removeSource('customSourceName') //獲取資源、刪除資源
      this.map.addLayer({
              id: 'measure-lines',
              type: 'line',
              source: 'customSourceName', //使用剛剛添加的資源
              layout: {
                'line-cap': 'round',
                'line-join': 'round'
              },
              paint: {
                'line-color': '#00FFF4',
                'line-width': 2.5,
                'line-opacity': 1,
                'line-gap-width': 0,
              },
      }); // 添加圖層,如上使用 名為 customSourceName 的資源 添加了一個(gè)用線勾勒輪廓的圖層。
      this.map.getLayer('measure-lines') && this.map.removeLayer('measure-lines') // 獲取圖層、刪除圖層
      
    2. 插點(diǎn),以下是一個(gè)插點(diǎn)的簡(jiǎn)單示例,可以用vue組件渲染插點(diǎn)的響應(yīng)彈窗:

      import mapboxPopView from '../mapboxPopView/mapboxPopView.vue'; //彈窗組件需提前引入
        
      async setMaker(makerList) {
            if (!makerList) {
              return
            }
            // console.log('makerList::: ', makerList);
            for (let item of makerList) {
              let dom = document.createElement('img')
              dom.src = require(`../../../public/static/img/${item.deviceType}.png`) //這里使用了自定義圖片來替換默認(rèn)插點(diǎn)圖標(biāo)
              dom.style.width = '52.4px'
              dom.style.height = 'auto' //可以保持比例
              dom.id = `marker-${item.deviceId}`
              dom.classList.add("markerCustom")
              dom.addEventListener("click", () => {
                this.setPopContent(item)
              })
              let marker = new mapboxgl.Marker({
                element: dom,
                offset: [0, -50], //圖標(biāo)偏移量
              }).setLngLat([item.lon, item.lat]).addTo(this.map);
              // 添加標(biāo)記的彈窗事件
              var popup = new mapboxgl.Popup({
                offset: [0, -100], //彈窗偏移量
              }).setHTML(`<div id="popup-content-${item.deviceId}"></div>`)
              // this.setPopContent(item)
              marker.setPopup(popup);
              this.markerList.push(marker)
              // 點(diǎn)擊標(biāo)記時(shí)顯示彈窗
            }
            this.$store.dispatch('addLayer')
          },
         setPopContent(item) {
            const MyNewPopup = defineComponent({
              extends: mapboxPopView,
              setup() {
                const deviceItem = item
                return { deviceItem } //這里的常量可以直接在組件的this對(duì)象中獲取
              },
            })
            setTimeout(() => {
              createApp(MyNewPopup).mount(`#popup-content-${item.deviceId}`) //掛載到剛剛定義的擁有唯一ID的DOM節(jié)點(diǎn)上
            }, 10);
          },
      

      插點(diǎn)效果如圖:

至此,mapbox的基本功能介紹完畢,另外,mapbox支持自定義圖源,下面是一個(gè)使用天地圖瓦片的例子:

setTiandituLaryer() {
      this.map.addSource('tianditu', {
        type: 'raster',
        tiles: [
          '你的天地圖鏈接',
        ],
        tileSize: 256,
      });
      this.map.addLayer({
        id: 'tianditu',
        type: 'raster',
        source: 'tianditu',
      });
},

如果使用其他的圖源,記得在mapbox studio里關(guān)閉或刪除無用的圖層。

碼云:mapbox_demo

可視化大屏:mapbox+vue全攻略

旗鼓相當(dāng)?shù)膶?duì)手,就是我們磨礪爪子的堅(jiān)石。文章來源地址http://www.zghlxwxcb.cn/news/detail-423794.html

到了這里,關(guān)于可視化大屏:mapbox+vue全攻略的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Vue3 +Echarts5 可視化大屏——屏幕適配

    Vue3 +Echarts5 可視化大屏——屏幕適配

    項(xiàng)目基于Vue3 + Echarts5 開發(fā),屏幕適配是使用 scale 方案 Echarts組件按需引入,減少打包體積 地圖組件封裝(全國(guó)省份地圖按需加載) 效果圖: 大屏適配常用的方案有 rem + vw/vh 和 scale 。 rem + vw/vh 方案 結(jié)合使用rem(相對(duì)于根元素字體大小的單位)和vw/vh(視窗寬度/高度的單位

    2024年02月15日
    瀏覽(25)
  • Vue3 + Vite + TypeScript + dataV 打造可視化大屏

    Vue3 + Vite + TypeScript + dataV 打造可視化大屏

    網(wǎng)上有許多開源的可視化大屏項(xiàng)目,但是分析之后,還是想自己從 0 搭建一個(gè)可視化大屏項(xiàng)目,畢竟 Vue 一直在更新,自己搭建的可以使用最新版本的 Vue ,如果對(duì)版本沒有太多要求的小伙伴們選擇那些開源項(xiàng)目的基礎(chǔ)上去修改也是很不錯(cuò)的。其次自己搭建一個(gè)項(xiàng)目,可以更好

    2024年02月03日
    瀏覽(19)
  • 【vue2可視化開發(fā)】新手會(huì)遇到的問題——大屏自適應(yīng)

    【vue2可視化開發(fā)】新手會(huì)遇到的問題——大屏自適應(yīng)

    開發(fā)可視化大屏第一步,必須要考慮適配不同屏幕的問題,在網(wǎng)絡(luò)上查看資料,總結(jié)了一個(gè)目前最適合可視化開發(fā)的自適應(yīng)方案——v-scale-screen組件 1. 安裝 注:vue2使用v-scale-screen@1.0.0版本,vue3使用v-scale-screen@2.0.0版本 2. 在main.js中引用 3. 在vue組件中使用 v-scale-screen會(huì)將頁面等

    2023年04月21日
    瀏覽(34)
  • 基于Echarts+Vue3的低代碼可視化數(shù)據(jù)大屏拖拽設(shè)計(jì)器 vue拖拽設(shè)計(jì)大屏

    基于Echarts+Vue3的低代碼可視化數(shù)據(jù)大屏拖拽設(shè)計(jì)器 vue拖拽設(shè)計(jì)大屏

    本產(chǎn)品是一款基于Vue3開發(fā)的可視化數(shù)據(jù)大屏拖拽設(shè)計(jì)器。提供一種簡(jiǎn)單易用的拖拽式數(shù)據(jù)可視化大屏設(shè)計(jì)方案,可幫助用戶快速創(chuàng)建和定制自己的數(shù)據(jù)大屏,通過拖拽組件、調(diào)整布局和設(shè)置屬性,實(shí)現(xiàn)數(shù)據(jù)展示的自由組合和個(gè)性化定制。 可視化編輯:通過拖拽組件、調(diào)整布

    2024年02月03日
    瀏覽(86)
  • MongoDB 索引全攻略

    MongoDB 索引全攻略

    目錄 一、索引介紹 ? ? ? ? 1.1 單字段索引 ? ? ? ? 1.2 復(fù)合索引 ? ? ? ? 1.3?多鍵索引 ? ? ? ? 1.4 主鍵索引 ? ? ? ? 1.5 TTL 索引 ? ? ? ? 1.6 地理空間索引 ? ? ? ? 1.7 哈希索引 ? ? ? ? 1.8 創(chuàng)建索引時(shí)注意事項(xiàng) ? ? ? ? 1.9 索引效果查看 ?二、索引實(shí)現(xiàn)原理 ? ? ? ? 2.1 為

    2024年04月27日
    瀏覽(23)
  • HackTheGame游戲全攻略

    HackTheGame游戲全攻略

    游戲鏈接 鏈接: 百度網(wǎng)盤 請(qǐng)輸入提取碼 提取碼:bu1w HackTheGame游戲的玩法: 您將扮演一個(gè)黑客的角色,接受各種各樣的任務(wù),在不被發(fā)現(xiàn)的情況下,使用一些工具入侵他人的電腦,服務(wù)器并完成竊取資料,粉碎文件,植入病毒等操作.您有一共有兩次機(jī)會(huì),第三次被追蹤到的話,您就會(huì)被捕

    2024年02月05日
    瀏覽(43)
  • vite+vue3+cesium大屏數(shù)據(jù)可視化項(xiàng)目——第一章:搭建項(xiàng)目

    vite+vue3+cesium大屏數(shù)據(jù)可視化項(xiàng)目——第一章:搭建項(xiàng)目

    目錄 系列文章目錄 前言 一、搭建項(xiàng)目 1.檢查node版本號(hào) 2.搭建vue3項(xiàng)目 二、配置cesium 1.前期準(zhǔn)備 2.安裝cesium 3.引入cesium 4.初始化頁面 總結(jié) ? 這幾年智慧城市、數(shù)字孿生、數(shù)字可視化這些高級(jí)詞匯可太多啦,招聘簡(jiǎn)介上也有很多要求會(huì)webGis等相關(guān)經(jīng)驗(yàn),所以我覺得最近來學(xué)一

    2024年02月07日
    瀏覽(31)
  • 新手搭建服裝小程序全攻略

    新手搭建服裝小程序全攻略

    隨著互聯(lián)網(wǎng)的快速發(fā)展,線上購物已經(jīng)成為了人們?nèi)粘I钪胁豢苫蛉钡囊徊糠帧7b作為人們?nèi)粘OM(fèi)的重要品類,線上化趨勢(shì)也日益明顯。本文將詳細(xì)介紹如何從零開始搭建一個(gè)服裝小程序商城,從入門到精通的捷徑,幫助你快速掌握小程序商城的制作方法和技巧。 首先

    2024年02月21日
    瀏覽(22)
  • Github搭建個(gè)人博客全攻略

    Github是開發(fā)者的代碼倉庫,一個(gè)開源和分享社區(qū)。 本文前提是已注冊(cè)github賬號(hào)。 假設(shè)用戶名為MyName 進(jìn)入個(gè)人主頁(https://github.com/用戶名),選擇Repositories,點(diǎn)擊New Repository name填入MyName.github.io,即MyName/ MyName.github.io ,點(diǎn)擊Create Repository 安裝Git或TortoiseGit(后者添加環(huán)境變量)

    2024年02月16日
    瀏覽(49)
  • 谷歌賬號(hào)注冊(cè)流程全攻略

    谷歌賬號(hào)注冊(cè)流程全攻略

    一、訪問谷歌賬號(hào)注冊(cè)頁面 首先,你需要訪問谷歌賬號(hào)注冊(cè)頁面。你可以直接點(diǎn)擊此鏈接,或者在谷歌首頁點(diǎn)擊右上角的“登錄”按鈕,在彈出的登錄框中點(diǎn)擊“創(chuàng)建帳號(hào)”。 在注冊(cè)頁面,你需要填寫以下個(gè)人信息: 名字:輸入你的名字。 姓氏:輸入你的姓氏。 用戶名:

    2024年02月05日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包