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

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

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

Canvas绘制基本概念

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

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

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

绘制矩形

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>
相关推荐
GIS遥遥3 天前
Openlayers基础教程|从前端框架到GIS开发系列课程(19)地图控件和矢量图形绘制
gis开发·webgis
新中地GIS开发老师8 天前
2025Mapbox零基础入门教程(14)定位功能
前端·javascript·arcgis·gis·mapbox·gis开发·地理信息科学
GIS之家10 天前
vue3+arcgisAPI4示例:轨迹点模拟移动(附源码下载)
gis·webgis·模拟轨迹点
新中地GIS开发老师13 天前
准大一GIS专业新生,如何挑选电脑?
javascript·arcgis·电脑·gis·大学生·webgis·地理信息科学
凌往昔15 天前
OpenLayers 入门指南【四】:项目初始化
openlayers·webgis
eggcode1 个月前
Vue+Openlayers加载OSM、加载天地图
vue.js·openlayers·webgis
新中地GIS开发老师1 个月前
新发布:26考研院校和专业大纲
学习·考研·arcgis·大学生·遥感·gis开发·地理信息科学
凌往昔1 个月前
OpenLayers 入门指南:序言
openlayers·webgis
新中地GIS开发老师2 个月前
2025武汉考研形势分析,趋势、挑战与应对策略
学习·考研·arcgis·大学生·gis开发·webgis·地理信息科学