vue+openlayers之幾何圖形交互繪制基礎與實踐

文章目錄

  • 1.實現效果
  • 2.實現步驟
  • 3.示例頁面代碼
  • 3.基本幾何圖形繪制的關鍵代碼

1.實現效果

繪制點、線、多邊形、圓、正方形、長方形
在這里插入圖片描述

2.實現步驟

  1. 引用openlayers開發庫。
  2. 加載天地圖wmts瓦片地圖。
  3. 在頁面上添加幾何圖形繪制的功能按鈕,使用下拉列表(select)設置幾何圖形繪制功能項,并設置其樣式。其中,當“幾何圖形類型”為“無”時清除當前繪制的所有圖形。

3.示例頁面代碼

<template><div id="map" class="imap"></div><div class="menu"><label>幾何圖形類型:</label><select id="type" v-model="typeSelect" @change="typeSelectOnChange"><option value="">無</option><option value="Point">點</option><option value="LineString">線</option><option value="Polygon">多邊形</option><option value="Circle">圓</option><option value="Square">正方形</option><option value="Box">長方形</option></select></div>
</template>

3.基本幾何圖形繪制的關鍵代碼

<script setup>// vue+openlayers之幾何圖形交互繪制基礎與實踐import {onMounted,ref} from 'vue'import 'ol/ol.css';import {Map,View} from 'ol';import TileLayer from 'ol/layer/Tile';import XYZ from 'ol/source/XYZ';import VectorLayer from "ol/layer/Vector";import VectorSource from "ol/source/Vector";import {Circle,Fill,Stroke,Style,Text} from "ol/style";import Draw, {createRegularPolygon} from "ol/interaction/Draw";import {LinearRing,LineString,MultiLineString,MultiPoint,MultiPolygon,Point,Polygon,} from 'ol/geom';var map = null;var draw; // 繪制對象// 實例化一個矢量地圖vectorvar source = new VectorSource({wrapX: false})var vector = new VectorLayer({source: source,style: new Style({fill: new Fill({ //填充樣式color: 'rgba(225,225,225,0.2)'}),stroke: new Stroke({ //邊界樣式color: '#ece034',width: 2}),image: new Circle({ //點要素樣式radius: 7,fill: new Fill({color: '#ece034'})}),})})onMounted(() => {map = new Map({target: 'map',layers: [new TileLayer({source: new XYZ({url: "你的天地圖地址",attributions: '影像底圖',crossOrigin: 'anonymous',wrapX: false //如果設置為 false,地圖在橫向滾動到最右側時不會出現重復的地圖;}),preload: Infinity})],view: new View({//地圖初始中心點center: [0, 0],minZoom: 2,maxZoom: 18,zoom: 5})});window.olmap = mapmap.addLayer(vector)})const typeSelect = ref('')function typeSelectOnChange() {map.removeInteraction(draw)addInteraction()}//根據幾何圖形類型進行繪制function addInteraction() {var value = typeSelect.value //幾何圖形類型if (value) {if (source == null) {source = new VectorSource({wrapX: false});vector.setSource(source); //添加數據源}var geometryFunction, maxPoints;if (value === 'Square') { //正方形value = 'Circle'; //設置幾何圖形類型為Circle(圓形)//設置幾何圖形類型,即創建正多邊形geometryFunction = createRegularPolygon(4);} else if (value === 'Box') { //長方形value = 'LineString'; //設置繪制類型為LineString(線)maxPoints = 2; //設置最大點數為2//設置幾何圖形類型,即設置長方形的坐標點geometryFunction = function (coordinates, geometry) {var start = coordinates[0];var end = coordinates[1];if (!geometry) {//多邊形geometry = new Polygon([[start, [start[0], end[1]], end, [end[0], start[1]], start]]);}geometry.setCoordinates([[start, [start[0], end[1]], end, [end[0], start[1]], start]]);return geometry;};}//實例化交互式圖形繪制控件并添加到地圖容器中draw = new Draw({source: source, //數據源type: /**@type{ol.geom.GeometryType}*/ (value), //幾何圖形類型geometryFunction: geometryFunction, //幾何圖形變更時調用函數maxPoints: maxPoints, //最大點數style: new Style({image: new Circle({radius: 7,fill: new Fill({color: '#ece034',}),}),stroke: new Stroke({ //邊界樣式color: '#ece034',width: 2}),}),});map.addInteraction(draw);} else {source = null;vector.setSource(source); //清空繪制的圖形}}
</script>

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/41092.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/41092.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/41092.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

程序員績效管理-進一步思考

工時管理也好、項目管理&#xff08;軟件項目&#xff09;也好&#xff0c;市面上已經很多了&#xff0c;你做這個和他們區別何在&#xff1f;大的公司一般都自己做&#xff0c;誰又為你買單&#xff1f;根據目前的反饋&#xff0c;主要的疑問就是這兩個問題。 進一步思考如下&…

基于JavaScript、puppeteer的爬蟲

前期準備: npm puppeteer import puppeteer from puppeteer; puppeteer文檔 第一步&#xff1a;啟動瀏覽器&#xff0c;跳轉到需要爬取的頁面 const browser await puppeteer.launch({ headless: false });const page await browser.newPage();await page.goto(url, { w…

【目標檢測實驗系列】YOLOv5模型改進:引入輕量化多維動態卷積ODConv,減少計算量的同時保持精度穩定或略微上漲!(內含源代碼,超詳細改進代碼流程)

1. 文章主要內容 本篇博客主要涉及輕量化多維動態卷積ODConv&#xff0c;融合到YOLOv5模型中&#xff0c;減少計算量的同時保持精度穩定或略微上漲。&#xff08;通讀本篇博客需要7分鐘左右的時間&#xff09;。 2. 介紹 ODconv沿著空間、輸入通道、輸出通道以及卷積核空間的核…

領導被我的花式console.log吸引了!直接寫入公司公共庫!

背景簡介 這幾天代碼評審,領導無意中看到了我本地代碼的控制臺,被我花里胡哨的console打印內容吸引了! 老板看見后,說我這東西有意思,花里胡哨的,他喜歡! 但是隨即又問我,這么花里胡哨的東西,上生產會影響性能吧?我自信的說:不會,代碼內有判斷的,只有開發環境會…

后端工作之一:CrapApi —— API接口管理系統部署

一個API接口的網絡請求都有這些基本元素構成&#xff1a; API接口大多數是由后端編寫&#xff0c;前端開發人員進行請求調用 就是一個網絡請求的流程。 API&#xff08;Application Programming Interface&#xff09;接口是現代軟件開發中不可或缺的一部分。它們提供了一種…

14270-02G 同軸連接器

型號簡介 14270-02G是Southwest Microwave的2.4 mm 同軸連接器。這款連接器連接器采用不銹鋼、鈹銅合金、黃銅合金和 ULTEM 1000 等高質量材料&#xff0c;可能具有更好的耐腐蝕性、導電性和機械強度。金鍍層可以提供更低的接觸電阻和更好的耐腐蝕性。 型號特點 電纜的中心導體…

過擬合和欠擬合的概念

過擬合和欠擬合的概念 過擬合&#xff08;Overfitting&#xff09;是指機器學習模型在訓練數據上表現得非常好&#xff0c;但在新數據&#xff08;測試集或實際應用中的數據&#xff09;上卻表現不佳的現象。這種情況通常發生在模型復雜度過高&#xff0c;導致它過度適應了訓練…

健康課程知識培訓小程序網站如何學員教務管理

醫學專業學生或是從業醫生、護士等都需要不斷學習鞏固自己的技術和拓寬知識面&#xff0c;除了主要學習來源外&#xff0c;培訓機構課程需求也是提升自身實力的方法&#xff0c;市場中也存在不少醫藥健康內容培訓機構或是醫院內部員工培訓等。 運用雨科平臺搭建醫藥健康內容培…

前端八股文 說一下盒模型

網頁中任何一個元素都可以視為一個盒子&#xff0c;由里到外&#xff0c;盒模型包括外邊界&#xff08;margin&#xff09;、邊框&#xff08;border&#xff09;、內邊界&#xff08;padding&#xff09;和內容&#xff08;content&#xff09;。 盒模型基本分為3種&#xff1…

k8s離線安裝安裝skywalking9.4

目錄 概述資源下載Skywalking功能介紹成果速覽實踐rbacoapoap-svcuiui-svc 結束 概述 k8s 離線安裝安裝 skywalking9.4 版本&#xff0c;環境&#xff1a;k8s版本為&#xff1a;1.27.x 、spring boot 2.7.x spring cloud &#xff1a;2021.0.5 、spring.cloud.alibab&#xff1…

智慧消防視頻監控煙火識別方案,筑牢安全防線

一、方案背景 在現代化城市中&#xff0c;各類小型場所&#xff08;簡稱“九小場所”&#xff09;如小餐館、小商店、小網吧等遍布大街小巷&#xff0c;為市民生活提供了極大的便利。然而&#xff0c;由于這些場所往往規模較小、人員流動性大、消防安全意識相對薄弱&#xff0…

vue配置sql規則

vue配置sql規則 實現效果組件完整代碼父組件 前端頁面實現動態配置sql條件&#xff0c;將JSON結構給到后端&#xff0c;后端進行sql組裝。 這里涉及的分組后端在組裝時用括號將這塊規則括起來就行&#xff0c;分組的sql連接符&#xff08;并且/或者&#xff09;取組里的第一個。…

【Linux】Linux常用指令合集精講,一篇讓你徹底掌握(萬字真言)

文章目錄 一、文件與目錄操作1.1 ls - 列出目錄內容1.2 cd - 切換目錄1.3 pwd - 顯示當前目錄1.4 mkdir - 創建目錄1.5 rmdir - 刪除空目錄1.6 rm - 刪除文件或目錄1.7 cp - 復制文件或目錄1.8 mv - 移動或重命名文件或目錄1.9 touch - 創建空文件或更新文件時間戳 二、文件內容…

Vue 詳情實戰涉及從項目初始化到功能實現、測試及部署的整個過程

本人詳解 作者:王文峰,參加過 CSDN 2020年度博客之星,《Java王大師王天師》 公眾號:JAVA開發王大師,專注于天道酬勤的 Java 開發問題中國國學、傳統文化和代碼愛好者的程序人生,期待你的關注和支持!本人外號:神秘小峯 山峯 轉載說明:務必注明來源(注明:作者:王文峰…

《操作系統真象還原》學習筆記:第2章——編寫MBR主引導記錄

2.1 計算機的啟動過程 載入內存&#xff1a; &#xff08;1&#xff09; 程序被加載器&#xff08;軟件或硬件&#xff09;加載到內存某個區域 &#xff08;2&#xff09;CPU 的 cs:ip 寄存器被指向這個程序的起始地址 2.2 軟件接力第一棒&#xff0c;BIOS 2.2.1 實模式下的…

Jenkins 使用 Publish over SSH進行遠程訪問

Publish over SSH 是 Jenkins 的一個插件,可以讓你通過 SSH 將構建產物分發到遠程服務器。以下是如何開啟 Publish over SSH 的步驟: 一、安裝 Publish over SSH 插件 在 Jenkins 中,進入 "Manage Jenkins" > "Manage Plugins"。選擇 "Availab…

怎么用AI合成PPT?這5款風靡全球的AIPPT軟件一定要知道!

當下我們已進入信息過載的時代&#xff0c;每天有無數的信息試圖爭奪我們的注意力&#xff0c;與此同時&#xff0c;我們也需要向別人展示和呈現信息&#xff0c;這就要求我們能夠以最低的成本&#xff0c;在短時間內引起對方的注意&#xff0c;這其中最常用到的工具非PPT莫屬。…

Java集合框架:深入探索與性能優化指南

引言 Java集合框架是Java標準庫中用于存儲和操作對象集合的一套工具。它提供了一套統一的接口和類,使得開發者可以高效地處理對象集合,而無需關心底層的實現細節。Java集合框架主要包括List、Set、Map等接口及其實現類。本文將詳細介紹Java中的集合框架,并分享如何選擇和使用…

簡易電阻、電容和電感測量儀-FPGA

通過VHDL語言編寫程序用于設計電阻、電容和電感測量儀&#xff0c;通過使用試驗箱進行驗證是否設計正確&#xff0c;資料獲取到咸&#x1f41f;&#xff1a;xy591215295250 \\\或者聯系wechat 號&#xff1a;comprehensivable 設計并制作--臺數字顯示的電阻、電容和電感參數測試…

一篇說清楚大端和小端

端是什么&#xff1f; “我們常說的大端小端模式是計算機中 字節順序&#xff08;Endianness) 常見的兩種表現形式。&#xff08;此外還有混合序 (Middle-Endian)) “endian”一詞來源于十八世紀愛爾蘭作家喬納森斯威夫特&#xff08;Jonathan Swift&#xff09;的小說《格列佛…