最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue使用openlayers實現(xiàn)繪制圓形和多邊形

 更新時間:2022年06月18日 08:37:13   作者:秦浩鋮  
這篇文章主要為大家詳細(xì)介紹了Vue如何使用openlayers實現(xiàn)繪制圓形和多邊形,文中的示例代碼講解詳細(xì),感興趣的小伙伴快跟隨小編一起動手嘗試一下

這個地方我就簡單點寫吧,因為一些東西比較亂,有的包啥的就按照官網(wǎng)API開發(fā)文檔根據(jù)報錯提示自己添加就可以了,我這個地方就不重復(fù)寫了。

繪制圓形

這里的繪制圓是指當(dāng)后臺返回數(shù)據(jù),告訴你以某個經(jīng)緯度坐標(biāo)為圓心,或者是頂點,以 r 為半徑繪制,不是鼠標(biāo)手動繪制。

首先繪制圓,首先有一個數(shù)據(jù)源和一個圖層來存放繪制的圓形,這個很簡單。然后創(chuàng)建變量自己該就可以,我估計都搞openlayer了,這些基礎(chǔ)應(yīng)該不至于不知道,我這邊就寫關(guān)鍵代碼,我想應(yīng)該沒問題,我用的是默認(rèn)3857坐標(biāo),不是4326。

sourcePoint = new VectorSource()   // 創(chuàng)建數(shù)據(jù)源
layerPoint = new VectorLayer({     // 創(chuàng)建圖層
    zIndex: 1,   // 圖層的層級
})
layerPoint.setSource(sourcePoint)  // 把數(shù)據(jù)源綁定到圖層上面
map.addLayer(layerPoint)  // 把圖層添加到地圖上面去

好的,通過上面的代碼實現(xiàn)了創(chuàng)建一個圖層在地圖上來放置繪制的圓形。

接下來就是向這個數(shù)據(jù)源去添加圓形,這個呢,還是嘛,和我之前寫的博客差不多,那幾部分相互嵌套,我還是把圖在貼一下吧,這個圖是大佬整理的,我直接拿來用了。

通過上面圖看,剛剛我們做的,往地圖上添加 layer 圖層完成了,向 layer 添加 source 數(shù)據(jù)源也完成了。下一步就是往 source 中添加 feature 了。

	  // 繪制圓形
      addCircle() {
        let feature = new Feature({
          title: 'beijing',
          geometry: new Circle(fromLonLat([116.400819, 39.916263]), this.getRadius(500)),  // 創(chuàng)建 以[116.400819, 39.916263]為圓心,500米為半徑的圓,但是這個半徑不是很準(zhǔn),沒解決了
        })
        feature.setStyle(
          new Style({
            fill: new Fill({
              color: 'rgba(32, 157, 230, 0.5)'
            })
          })
        )
        sourcePoint .addFeatures([feature])
      },

上邊代碼就是實現(xiàn)了在地圖上以某點,某半徑繪制一個圓形,但是半徑不是很準(zhǔn)確,如果有大佬解決了半徑不準(zhǔn)確的問題希望幫忙指點一下。

繪制多邊形

這個地方說的繪制多邊形是指鼠標(biāo)手動繪制,繪制完成可以獲得鼠標(biāo)繪制多邊形的頂點坐標(biāo)。

繪制

首先繪制和上面一樣,只要是圖層,就哪幾層才能顯示在地圖上,所以呢,先創(chuàng)建圖層、數(shù)據(jù)源添加到地圖,然后呢,因為是鼠標(biāo)繪制,所以說需要設(shè)置一下繪制完成的多邊形在地圖上什么樣式,然后在一個就是添加鼠標(biāo)交互的工具,所以說就是下面的代碼。

		source = new VectorSource();
        vector = new VectorLayer({
          source: source,
          style: new Style({
            fill: new Fill({
              color: 'rgba(255, 255, 255, 0.2)',
            }),
            stroke: new Stroke({
              color: '#ffcc33',
              width: 3,
            }),
            image: new CircleStyle({
              radius: 3,
              fill: new Fill({
                color: '#ffcc33',
              }),
            }),
          }),
        });
        map.addLayer(vector)
        modify = new Modify({ source: source });
        snap = new Snap({ source: source });
        draw = new Draw({
          source: source,
          type: 'Polygon',
        });

上邊代碼呢,實現(xiàn)了圖層初始化和交互工具的初始化,接下來就是鼠標(biāo)綁定事件繪制。

	map.addInteraction(modify);
        map.addInteraction(draw);
        map.addInteraction(snap);
        draw.on('drawend', e => {//繪畫完成觸發(fā)時間
          const geometry = e.feature.getGeometry()
          const corrdinates = geometry.getCoordinates()
          let points = []
          corrdinates[0].forEach(item => {
            let xy = transform(item, 'EPSG:3857', 'EPSG:4326')  // 轉(zhuǎn)換成經(jīng)緯度坐標(biāo)
            points.push(xy)
          })
          this.$message.success('頂點坐標(biāo)是:' + JSON.stringify(points))
          map.removeInteraction(draw);  //移除交互
          map.removeInteraction(snap);  //移除交互
          map.removeInteraction(modify);  //移除交互
        });

編輯多邊形

再次編輯的話,這個就很簡單了,上一步不是移除了三個嗎?第一個是鼠標(biāo)繪制,編輯的時候除了鼠標(biāo)繪制,其他兩個移除的交互再加上就可以了。

map.addInteraction(modify);
map.addInteraction(snap);

完成繪制

繪制完成的話,在移除交互工具,然后重新獲取一下頂點坐標(biāo)列表就可以了。

	map.removeInteraction(draw);//移除繪畫互動
        map.removeInteraction(snap);//移除繪畫互動
        map.removeInteraction(modify);//移除繪畫互動
        let feature = source.getFeatures()[0]
        const geometry = feature.getGeometry()
        const corrdinates = geometry.getCoordinates()
        let points = []
        corrdinates[0].forEach(item => {
          let xy = transform(item, 'EPSG:3857', 'EPSG:4326')
          points.push(xy)
        })
        this.$message.success('頂點坐標(biāo)是:' + JSON.stringify(points))

這里不貼圖了

到此這篇關(guān)于Vue使用openlayers實現(xiàn)繪制圓形和多邊形 的文章就介紹到這了,更多相關(guān)Vue openlayers繪制圓形 多邊形內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • elementUI彈窗里的表單重置不生效問題解決

    elementUI彈窗里的表單重置不生效問題解決

    本文主要介紹了elementUI彈窗里的表單重置不生效問題解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • 淺談Vue SSR中的Bundle的具有使用

    淺談Vue SSR中的Bundle的具有使用

    這篇文章主要介紹了淺談Vue SSR中的Bundle的具有使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • vue3給動態(tài)渲染的組件添加ref的解決方案

    vue3給動態(tài)渲染的組件添加ref的解決方案

    ref和reactive一樣,也是用來實現(xiàn)響應(yīng)式數(shù)據(jù)的方法,下面這篇文章主要給大家介紹了關(guān)于vue3給動態(tài)渲染的組件添加ref的解決方案,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-11-11
  • Vue.js的Mixins使用方式

    Vue.js的Mixins使用方式

    Vue.js的Mixins功能允許封裝可復(fù)用的組件選項,實現(xiàn)代碼復(fù)用和模塊化,Mixins可以包含數(shù)據(jù)、方法、生命周期鉤子等組件選項,使用時,Mixins中的選項會被混入組件中,優(yōu)先級低于組件自身選項,優(yōu)點包括代碼復(fù)用、高靈活性和簡單易用
    2024-09-09
  • vue2和vue3部署到服務(wù)器子目錄為空白頁問題及解決

    vue2和vue3部署到服務(wù)器子目錄為空白頁問題及解決

    這篇文章主要介紹了vue2和vue3部署到服務(wù)器子目錄為空白頁問題及解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • 詳解Vue單元測試Karma+Mocha學(xué)習(xí)筆記

    詳解Vue單元測試Karma+Mocha學(xué)習(xí)筆記

    本篇文章主要介紹了詳解Vue單元測試Karma+Mocha學(xué)習(xí)筆記,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • Vue2.0+Vux搭建一個完整的移動webApp項目的示例

    Vue2.0+Vux搭建一個完整的移動webApp項目的示例

    這篇文章主要介紹了Vue2.0+Vux搭建一個完整的移動webApp項目的示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-03-03
  • 基于vue3?vue-cli4?線上部署及優(yōu)化的問題

    基于vue3?vue-cli4?線上部署及優(yōu)化的問題

    這篇文章主要介紹了基于vue3?vue-cli4?線上部署及優(yōu)化的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • vue.js watch經(jīng)常失效的場景與解決方案

    vue.js watch經(jīng)常失效的場景與解決方案

    這篇文章主要給大家介紹了關(guān)于vue.js watch經(jīng)常失效的場景與解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • 淺談vue-props的default寫不寫有什么區(qū)別

    淺談vue-props的default寫不寫有什么區(qū)別

    這篇文章主要介紹了淺談vue-props的default寫不寫有什么區(qū)別,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08

最新評論

五大连池市| 四子王旗| 甘谷县| 葵青区| 深水埗区| 霍城县| 宜黄县| 永新县| 蒙城县| 南溪县| 南投县| 张北县| 航空| 息烽县| 柳江县| 连城县| 赣榆县| 得荣县| 潍坊市| 仪征市| 永昌县| 夹江县| 团风县| 天台县| 双辽市| 东乡族自治县| 苏尼特左旗| 丰台区| 岗巴县| 东安县| 竹北市| 台江县| 襄城县| 中超| 石棉县| 界首市| 务川| 衡山县| 嘉黎县| 石城县| 吴旗县|