当前位置: 首页 > news >正文

Openlayers基础教程|从前端框架到GIS开发系列课程(24)openlayers结合canva绘制矩形绘制线

本章节讲解Canvas如何结合 Openlayer  使用,首先我们讲解Canvas的绘图基础。

我们初始化地图的时候可以看见,实际上Openlayer的地图就是用Canvas实现绘制的。

image.png

Canvas绘制基本概念

什么是canvas?HTML5 <canvas>   元素用于图形的绘制,区别于css,它的绘制通过 JavaScript  来完成绘制。

<canvas>   标签只是 图形容器  ,您必须使用脚本来绘制图形

Canvas API主要聚焦于2D图形。同样使用<canvas>元素的  WebGL API  则用于绘制硬件加速的2D和3D图形。

绘制矩形

image.png

2.1设置canvas元素

<!-- 1、设置canvas元素 --><canvas id="canvas" width="200" height="200"></canvas><script>

2.2获取canvas

   /* 2、获取canvas */    const canvas = document.getElementById("canvas");

2.3获取上下文

返回一个对象,对象包含绘制图形的方法和属性​​​​​​​

/* 3、getContext()返回一个对象,对象包含绘制图形的方法和属性 */    const ctx = canvas.getContext("2d");

2.4执行绘制​​​​​​​

     /* 4、执行绘制fillRect(x,y,width,height) x,y*/    ctx.fillRect(10,10,100,100);    ctx.fillStyle= "#333"

2.5完整代码示例:

<!DOCTYPE html><html lang="en">  <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>  </head>  <body>    <!-- 1、设置canvas元素 -->    <canvas id="canvas" width="200" height="200"></canvas>    <script>      /* 2、获取canvas */      const canvas = document.getElementById("canvas");      /* 3、getContext()返回一个对象,对象包含绘制图形的方法和属性 */      const ctx = canvas.getContext("2d");      /* 4、执行绘制fillRect(x,y,width,height) x,y*/      ctx.fillRect(10, 10, 100, 100);      ctx.fillStyle = "#333";    </script>  </body></html>

绘制线

canvas 是一个二维网格

canvas 的左上角坐标为 (0,0)

上面的 fillRect 方法拥有参数 (0,0,100,,100)。

意思是:在左上角开始 (0,0)的位置,绘制100*100的图形

图片

3.1路径

在Canvas上画线,我们将使用以下两种方法:

moveTo(x,y) 定义线条开始坐标

lineTo(x,y) 定义线条结束坐标

绘制线条我们必须使用到 "link" 的 stroke() 方法,执行绘制。

下面我们来试一下在canvas中实现线的绘制

图片

3.2设置canvas元素​​​​​​​

 <!-- 1、设置canvas元素 -->    <canvas id="canvas" width="200" height="200"></canvas>    <script>

3.3获取canvas元素​​​​​​​

/* 2、获取canvas */const canvas = document.getElementById("canvas");

3.4获取上下文​​​​​​​

/* 3、获取上下文 */const ctx = canvas.getContext("2d");

3.5设置起点和终点

起点​​​​​​​

/* 4、moveTo设置起点坐标 */ctx.moveTo(10, 10);

终点​​​​​​​

/* 5、设置终点坐标 lineTo */ctx.lineTo(100, 100);

3.6执行绘制​​​​​​​

/* 6、执行绘制 */ctx.strokeStyle = "#ff2d51";ctx.stroke();

完整代码:

<!DOCTYPE html><html lang="en"><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></head><body>    <!-- 1、设置canvas元素 -->    <canvas id="canvas" width="200" height="200"></canvas>    <script>        /* 2、获取canvas */        const canvas = document.getElementById("canvas");        /* 3、获取上下文 */        const ctx = canvas.getContext("2d");        /* 4、moveTo设置起点坐标 */        ctx.moveTo(10, 10);        /* 5、设置终点坐标 lineTo */        ctx.lineTo(100, 100);        /* 6、执行绘制 */        ctx.strokeStyle = "#ff2d51";        ctx.stroke();    </script></body></html>

http://www.xdnf.cn/news/1284625.html

相关文章:

  • Etcd客户端工具Etcd Workbench更新了1.2.0版本!多语言支持了中文,新增了许多快捷功能使用体验再次提升
  • Linux中Apache与Web之虚拟主机配置指南
  • 【门诊进销存出入库管理系统】佳易王医疗器械零售进销存软件:门诊进销存怎么操作?系统实操教程 #医药系统进销存
  • sqli-labs通关笔记-第44关 POST字符型堆叠注入(单引号闭合 手工注入+脚本注入3种方法)
  • 「数据获取」中国高技术产业统计年鉴(1995-2024年)(获取方式看绑定的资源)
  • 文字转语音 edge_tts
  • Docker概述与安装Dockerfile文件
  • 大数据技术入门精讲(Hadoop+Spark)
  • 【密码学】9. 可证明安全
  • 链动 3+1 模式:重构商业增长逻辑的新引擎
  • Mac M1探索AnythingLLM+Ollama+知识库问答
  • 支持任意 MCP 协议的客户端
  • 数据可视化交互深入理解
  • 最终章【1】Epson机器人篇
  • 如何提升需求分析能力
  • maven项目打包成sdk后在别的项目使用
  • 企业级高性能WEB服务器Nginx
  • 编程技能:递归
  • B 树与 B + 树解析与实现
  • SSE流式输出分层与解耦、用户自动结束语错误处理
  • 【13-向量化-高效计算】
  • 【Redis的安装与配置】
  • 高性能Web服务器
  • CSS预处理器之Sass全面解析与实战指南
  • HTML应用指南:利用GET请求获取全国一加授权零售店位置信息
  • C5.3:发射极偏置和LED驱动电路
  • 【07-AGI的讨论】
  • 使用纯NumPy实现回归任务:深入理解机器学习本质
  • golang 基础案例_01
  • Redis 01 数据结构