Openlayers基礎教程|從前端框架到GIS開發系列課程(19)地圖控件和矢量圖形繪制

1. 地圖控件

本篇教程主要介紹以下地圖控件:

  • 視圖跳轉控件

  • 放大縮小控件

  • 全屏控件

圖片

?實現步驟

1. 初始化地圖

上一篇已經介紹了,這一篇直接跳過該步驟。

2. 視圖跳轉控件

/* 視圖跳轉控件 */const ZoomToExtent = new ol.control.ZoomToExtent({  extent: [110, 30, 160, 30]});
map.addControl(ZoomToExtent);

3. 放大縮小控件

/* 放大縮小控件 */const zoomslider = new ol.control.ZoomSlider();map.addControl(zoomslider);

圖片

4. 全屏控件

//全屏控件 const fullScreen = new ol.control.FullScreen(); map.addControl(fullScreen) 

圖片

代碼示例:

/* 視圖跳轉控件 */ const ZoomToExtent = new ol.control.ZoomToExtent({   extent: [110, 30, 160, 30], }) map.addControl(ZoomToExtent) /* 放大縮小控件 */ const zoomslider = new ol.control.ZoomSlider(); map.addControl(zoomslider) //全屏控件 const fullScreen = new ol.control.FullScreen(); map.addControl(fullScreen) 

以上我們實現視圖跳轉、放大縮小和全屏控制三個控件,openlayers中還有很多控件,本篇主要介紹到這里,接下來我們學習一下矢量圖形繪制。

2.矢量圖形繪制

2.1繪圖步驟

1、通過幾何信息和樣式信息構建要素

2、將要素添加到?矢量數據源

3、將矢量數據源添加到?矢量圖層

4、將?矢量圖層?添加到地圖容器

繪制步驟還是遵循下圖邏輯來進行

圖片

2.2代碼和實現步驟

首先實現地圖初始化:

導入ol依賴——設置地圖容器的掛載點——初始化openlayers地圖——點要素繪制

①.繪制點要素

通過樣式信息和幾何信息構建點要素???????

// 通過樣式信息和幾何信息構建點要素const point = new ol.Feature({  geometry: new ol.geom.Point([114.30, 30.50])});
let style = new ol.style.Style({  // image屬性設置點要素的樣式  image: new ol.style.Circle({    // radius設置點的半徑 單位degree    radius: 10,    fill: new ol.style.Fill({      color: "#ff2d51"    })  })});
point.setStyle(style);

②.?將要素添加到矢量數據源???????

let source = new ol.source.Vector({  features: [point]});

③.將矢量數據源添加到矢量圖層???????

let layer = new ol.layer.Vector({  source: source});

④. 添加矢量圖層到地圖容器

map.addLayer(layer)

呈現效果:

圖片

⑤. 我們再給點要素設置描邊:???????

stroke: new ol.style.Stroke({  width: 2,  color: "#333"})

圖片

代碼示例:

???????

/* 1、構建要素 */ var point = new ol.Feature({   geometry: new ol.geom.Point([114.30, 30.50]) }) let style = new ol.style.Style({   image: new ol.style.Circle({     radius: 10,     fill: new ol.style.Fill({       color: "#ff2d51"     }),     stroke: new ol.style.Stroke({       color: "#333",       width: 2     })   }) }) point.setStyle(style); /* 2、將要素添加到矢量數據源 */ const source = new ol.source.Vector({         features: [point] })   /* 3、將矢量數據源添加到矢量圖層 */ const layer = new ol.layer.Vector({         source })   /* 4、將矢量圖層添加到地圖容器 */ map.addLayer(layer) 

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

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

相關文章

A#語言詳解

A#語言詳解:連接Ada與.NET的安全編程語言一、引言:A#的定義與起源A#(A Sharp)是一種基于.NET框架的編程語言,其設計目標是將Ada語言的安全性、可靠性與.NET生態系統的跨平臺能力、組件化特性相結合。它由美國程序員Mic…

2025華數杯比賽還未完全結束!數模論文可以發表期刊會議

2025華數杯比賽還未完全結束! 數模論文可以發表期刊會議數學建模論文轉化為可發表的期刊/會議論文,可以在保持實驗數據和結果不變的前提下,對論文結構、表述方式和學術規范進行系統性調整,然后進行投稿。 這不僅能讓你的研究成果被…

SSH遠程連接TRAE時顯示權限被拒絕檢查方案

1. 檢查并修復SSH服務端配置(Ubuntu端) # 編輯SSH配置文件 sudo nano /etc/ssh/sshd_config# 確保以下配置正確: PasswordAuthentication yes # 啟用密碼認證 PubkeyAuthentication yes # 啟用密鑰認證 PermitRootLogin yes …

浙大高飛團隊新作:提出層級式探索框架,讓「地空雙模」機器人自主決策“飛”或“走”

導讀 在面對復雜未知環境的自主探索任務中,如何在有限的能源與時間條件下實現高效、全面的場景感知,一直是機器人研究中的重要難題。近期,浙大高飛老師團隊一項關于“地空雙模機器人”的研究給出了新答案。 相比傳統單一形態的機器人&#xf…

驅動電路設計

一、理論基礎1.1定義驅動電路時位于控制電路和負載(主)電路之間,用來對控制電路的信號進行放大的中間電路。控制電路----(控制信號)--->驅動電路----(驅動信號)--->負載電路↑提供足夠的電…

RAG (Retrieval-Augmented Generation) 原理詳解與實例

核心概念:什么是 RAG? 想象一下,你是一位專家,需要回答一個復雜的問題。你不會憑空編造答案,而是會: 檢索 (Retrieval):先去查閱相關的書籍、論文、報告或數據庫,找到最相關的信息片段。 理解與整合 (Comprehension & Integration):閱讀這些信息,理解其核心內容。…

SOMGAN:利用自組織映射提高生成對抗網絡的模式探索能力

論文信息 論文題目:Improving mode exploring capability ofgenerative adversarial nets by self-organizing map(利用自組織映射提高生成對抗網絡的模式探索能力) 期刊:Neurocomputing 摘要:生成對抗網絡(GANs)的出…

全棧:如果SSM項目里的數據庫是mysql而自己使用的是SQLserver應該替換哪些文件?

將基于 SSM(Spring SpringMVC MyBatis)框架項目里的 MySQL 換成 SQL Server,主要需改動以下幾部分: 1. 依賴配置(pom.xml) 移除 MySQL 驅動依賴:找到原 MySQL 驅動相關依賴,一般類…

基于 Jenkins Pipeline 實現 DITA 文檔自動化構建與發布(開源方案)

這是我最近開發的一個基于 Jenkins Pipeline 的 DITA 文檔自動化構建方案。對于需要維護大量 DITA 格式文檔的團隊來說,手動構建不僅效率低下,還容易出現版本不一致的問題。通過這套開源方案,我們可以實現代碼拉取、多地圖并行構建、結果歸檔…

reinterpret_cast and static cast

什么時候使用 reinterpret_cast&#xff1f;指針類型之間的轉換&#xff1a; 當需要將一種類型的指針轉換為另一種類型的指針時&#xff0c;可以使用 reinterpret_cast。例如&#xff1a;int* intPtr new int(10); void* voidPtr reinterpret_cast<void*>(intPtr); // …

自動化運維 | 樂維8.0安裝及簡單使用

文章目錄1.創建虛擬機2.安裝樂維8.03.Web界面登錄訪問4.添加第一個監控在文章的開頭需要感謝樂維帶來這么好的自動化運維系統提供我們學習參考或是在生產環境中進行使用&#xff0c;并附上樂維官網供大家參考和學習&#xff1a;https://www.lwops.cn/1.創建虛擬機 在VMware wo…

無印良品:回歸本質的管理哲學

一、底層管理哲學 First, the underlying management philosophy核心思想&#xff1a;「無印」即「無品牌標識」&#xff0c;回歸產品本質Core idea: "Muji" means "no brand logo", returning to the essence of products.拒絕過度營銷&#xff0c;靠產品…

Redis面試精講 Day 13:Redis Cluster集群設計與原理

【Redis面試精講 Day 13】Redis Cluster集群設計與原理 開篇 歡迎來到"Redis面試精講"系列第13天&#xff0c;今天我們將深入探討Redis Cluster的集群設計與實現原理。作為Redis官方提供的分布式解決方案&#xff0c;Redis Cluster是面試中必問的高頻考點&#xff…

LangChain-Unstructured 基礎使用:PDF 與 Markdown 處理解析

文章目錄LangChain-Unstructured 基礎使用&#xff1a;PDF 與 Markdown 處理解析一、核心依賴與庫說明二、核心類與方法詳解1.UnstructuredLoader&#xff08;1&#xff09;類原型與核心功能&#xff08;2&#xff09;初始化參數詳解&#xff08;3&#xff09;核心方法詳解① l…

uboot使用指南

1.uboot的分類本節是 uboot 的使用&#xff0c;所以就直接使用正點原子已經移植好的 uboot&#xff0c;這個已經放到了開發板光盤中了&#xff0c;路徑為&#xff1a;開發板光盤->1、程序源碼->3、正點原子 Uboot 和 Linux 出廠源碼->uboot-imx-2016.03-2.1.0-ge468cd…

學習率預熱總結

學習率預熱是什么&#xff1f; 學習率預熱&#xff08;Learning Rate Warmup&#xff09; 是一種在深度學習訓練初期逐漸增加學習率的策略。其核心思想是&#xff1a;在訓練開始時使用較小的學習率&#xff0c;逐步增加到目標學習率&#xff0c;以避免模型參數在初始階段因學習…

初識SYSCFG(System Configuration Controller)寄存器映射

SYSCFG&#xff08;System Configuration Controller&#xff09;寄存器映射的詳細說明&#xff0c;以 STM32&#xff08;如 F1/F4/F7 系列&#xff09;為例。SYSCFG 控制器用于系統級配置&#xff0c;如外部中斷映射、存儲器重映射等。SYSCFG 寄存器映射概述 基地址&#xff1…

《P3403 跳樓機》

題目背景DJL 為了避免成為一只咸魚&#xff0c;來找 srwudi 學習壓代碼的技巧。題目描述Srwudi 的家是一幢 h 層的摩天大樓。由于前來學習的蒟蒻越來越多&#xff0c;srwudi 改造了一個跳樓機&#xff0c;使得訪客可以更方便的上樓。經過改造&#xff0c;srwudi 的跳樓機可以采…

【GPT-OSS 全面測評】釋放推理、部署和自主掌控的 AI 新紀元

目錄 一、背景與意義 二、核心參數對比 三、性能評測&#xff08;Benchmark&#xff09; 四、硬件適配與優化 五、安全性與風險 六、部署方式 七、適用場景 八、大型語言模型對比表&#xff08;2025 年 8 月版&#xff09; 總結 一、背景與意義 &#x1f4a1; 為什么…