前章知识点
(1)Leaflet学习文档-初识
(2)Leaflet学习文档-加载底图
(3)Leaflet学习文档-Map使用说明
(4)Leaflet学习文档-Marker标注点
(5)Leaflet学习文档-Popup(弹窗框)和Tooltip(提示框)学习
文章目录
前言
在Leaflet中,点通常用Marker来表示。需要提到[如何创建Marker,设置图标可参考前文,也可以使用常规的方式来设置对应的点位。
然后是线,也就是折线。使用L.polyline来创建,需要纬经度坐标数组的结构,本文将涉及如何设置线的颜色、粗细、虚线等样式。
接下来是面,即多边形。这包括多边形和矩形,使用L.polygon。需要纬经度坐标数组的结构,尤其是多边形需要闭合,比如第一个和最后一个点相同。同样要涉及样式设置,比如填充颜色、边框等。此外,矩形作为多边形的一种特殊情况,可以用L.rectangle来创建。
一、点
通常我们在使用点会利用
Marker
或者DivIcon
方式来表示,基本满足项目使用,但如果需要纯点位可以利用Circle
来实现(可参考第三节),该方法也可以实现圆,但只要圆的半径足够小,在地图上显示即为点为信息。
// 简单使用
const marker = L.marker([39.90002, 116.46]).addTo(map);
二、线
1. Polyline类
L.Polyline
是 Leaflet 中用于创建折线图层的类。可以通过传入一组坐标点来定义折线的形状,并支持多种可选参数来自定义样式和行为
Polyline类参数说明:
// 定义坐标点数组(纬经度)
// 数组里面为纬度在前,经度在后
let points = [
[39.90, 116.36],
[39.90, 116.46],
[39.90, 116.56]
];
// 创建折线
const polyline = L.polyline(points, {
// 折线颜色(支持 HEX、RGB、颜色名称,如 'red'、'#ff0000')
color: '#ff0000',
// 折线宽度(单位:像素)
weight: 5,
// 折线透明度(0 为完全透明,1 为不透明)。
opacity: 1,
// 线段端点的形状(可选 'round'、'butt'、'square')
lineCap: 'square',
// 线段连接处的形状(可选 'round'、'miter'、'bevel')
lineJoin: 'round',
// 虚线样式(如 '10' 表示 10px 实线 + 10px 空白,循环)
dashArray: '10',
// 虚线起始偏移量(如 '10' 表示从第 10px 开始绘制)。
dashOffset: '0',
// 折线平滑系数(值越大,路径简化越多,性能优化但精度降低)。
smoothFactor: 1,
// 是否禁用折线在视图外的裁剪(设为 true 可提升长路径性能)
noClip: false,
// 自定义 CSS 类名,用于覆盖默认样式
className: ''
}).addTo(map);
// 缩放地图以适应线条范围
// map.fitBounds(polyline.getBounds());
2. Polyline类说明
Polyline
类的使用方式一般为L.polyline([[纬度,经度],[纬度,经度],...], 参数).addTo(map)
的方式进行加载,Polyline
的参数用下表来阐述。
参数名 | 类型 | 默认值 | 说明 |
---|---|---|---|
color | String | #3388ff | 折线颜色(支持 HEX、RGB、颜色名称,如 'red' 、'#ff0000 )。 |
weight | Number | 3 | 折线宽度(单位:像素)。 |
opacity | Number (0~1) | 1.0 | 折线透明度(0 为完全透明,1 为不透明)。 |
lineCap | String | round | 线段端点的形状(可选 round 、butt 、square )。 |
lineJoin | String | round | 线段连接处的形状(可选 round 、miter 、bevel )。 |
dashArray | String | null | 虚线样式(如 10 表示 10px 实线 + 10px 空白,循环)。 |
dashOffset | String | null | 虚线起始偏移量(如 10 表示从第 10px 开始绘制)。 |
smoothFactor | Number | 1.0 | 折线平滑系数(值越大,路径简化越多,性能优化但精度降低)。 |
noClip | Boolean | false | 是否禁用折线在视图外的裁剪(设为 true 可提升长路径性能)。 |
className | String | null | 自定义 CSS 类名,用于覆盖默认样式。 |
Polyline设置颜色,虚线,透明度效果
3. 拓展
Polyline
可以画单条线也可以绘制多条线,若无特殊处理,多线段样式一致,使用方式L.polyline([线段1纬经度数组,线段2纬经度数组])
let points= [
// 线段1
[
[39.90, 116.36],
[39.90, 116.46],
[39.90, 116.56]
],
// 线段2
[
[39.85, 116.36],
[39.85, 116.46],
[39.85, 116.56]
]
];
const polyline = L.polyline(points, {color: 'red'}).addTo(map)
二、面
1. Polygon类
L.Polygon 是 Leaflet 中用于创建多边形图层的类。可以通过传入一组坐标点来定义多边形的形状,并支持多种可选参数来自定义样式和行为。
Polygon类参数说明:
// 定义坐标点数组(纬经度)
// 数组里面为纬度在前,经度在后
let points = [
[39.90, 116.36],
[39.90, 116.46],
[39.80, 116.46],
[39.80, 116.36]
];
// 创建折线
const polygon= L.polygon(points, {
// 是否绘制边框
stroke: true,
// 边框颜色
color: 'red',
// 边框宽度(像素)
weight: 5,
// 边框透明度(0 到 1)
opacity: 0.8,
// 是否填充内部区域
fill: true,
// 填充颜色
fillColor: '#ff0033',
// 填充透明度(0 到 1)
fillOpacity: 0.5,
// 边框虚线模式
dashArray: '10',
// 边框线端点样式(round, butt, square)
lineCap: 'round',
// 边框线连接点样式(round, bevel, miter)
lineJoin: 'round',
// 自定义 CSS 类名
className: '',
}).addTo(map)
// 缩放地图以适应线条范围
// map.fitBounds(polygon.getBounds());
2. Polygon类说明
Polygon
类的使用方式一般为L.polygon([[纬度,经度],[纬度,经度],...], 参数).addTo(map)
的方式进行加载,Polygon
的参数用下表来阐述。
参数名 | 类型 | 默认值 | 说明 |
---|---|---|---|
stroke | Boolean | true | 是否绘制多边形的边框。 |
color | String | #3388ff | 边框颜色(CSS 颜色值)。 |
weight | Number | 3 | 边框宽度(以像素为单位)。 |
opacity | Number | 1.0 | 边框透明度(范围为 0 到 1)。 |
fill | Boolean | true | 是否填充多边形内部区域。 |
fillColor | String | color | 填充颜色(默认与边框颜色相同)。 |
fillOpacity | Number | 0.2 | 填充区域的透明度(范围为 0 到 1)。 |
dashArray | String | null | 虚线样式(如 10 表示 10px 实线 + 10px 空白,循环)。 |
dashOffset | String | null | 虚线起始偏移量(如 10 表示从第 10px 开始绘制)。 |
lineCap | String | round | 边框线端点样式(round , butt , 或 square )。 |
lineJoin | String | round | 边框线连接点样式(round , bevel , 或 miter )。 |
className | String | null | 自定义 CSS 类名,用于覆盖默认样式。 |
Polygon设置颜色,虚线,透明度效果
3. Polygon拓展
Polygon
可以画单个多边形也可以绘制多个多边形,还可以绘制环形多边形,若无特殊处理,多线段样式一致,使用方式L.Polygon([多边形1纬经度数组,多边形2纬经度数组])
let points= [
// 多边形1
[
[39.90, 116.36],
[39.90, 116.46],
[39.80, 116.46],
[39.80, 116.36]
],
// 多边形2
[
[39.70, 116.36],
[39.70, 116.46],
[39.60, 116.46]
]
];
const polygon= L.polygon(points, {color: 'red'}).addTo(map)
// 环状面要素
let latlngs = [
[
[39.90, 116.36],
[39.90, 116.46],
[39.80, 116.46],
[39.80, 116.36]
], // outer ring
[
[39.88, 116.38],
[39.88, 116.44],
[39.82, 116.44],
[39.82, 116.38]
] // hole
];
const polygon2 = L.polygon(latlngs , {color: '#00ff00'}).addTo(map)
环状面要素展示
4. Rectangle类
L.Rectangle` 是 Leaflet 中用于创建矩形图层的类。可以通过传入一组坐标点来定义折线的形状,并支持多种可选参数来自定义样式和行为
Rectangle类参数说明:
// 定义坐标点数组(纬经度)
// 数组里面为纬度在前,经度在后
let points = [
// 左下角纬经度
[39.80, 116.36],
// 右上角纬经度
[39.90, 116.46]
];
// 创建折线
const rectangle = L.polygon(points, {
// 是否绘制边框
stroke: true,
// 边框颜色
color: 'red',
// 边框宽度(像素)
weight: 5,
// 边框透明度(0 到 1)
opacity: 0.8,
// 是否填充内部区域
fill: true,
// 填充颜色
fillColor: '#ff0033',
// 填充透明度(0 到 1)
fillOpacity: 0.5,
// 边框虚线模式
dashArray: '10',
// 边框线端点样式(round, butt, square)
lineCap: 'round',
// 边框线连接点样式(round, bevel, miter)
lineJoin: 'round',
// 自定义 CSS 类名
className: '',
}).addTo(map)
// 缩放地图以适应线条范围
// map.fitBounds(rectangle.getBounds());
5. Rectangle类说明
Rectangle
类的使用方式一般为L.Rectangle([[左下角纬度,左下角经度],[右上角纬度,右上角经度]], 参数).addTo(map)
的方式进行加载,Rectangle
的参数用下表来阐述。
参数名 | 类型 | 默认值 | 说明 |
---|---|---|---|
stroke | Boolean | true | 是否绘制多边形的边框。 |
color | String | #3388ff | 边框颜色(CSS 颜色值)。 |
weight | Number | 3 | 边框宽度(以像素为单位)。 |
opacity | Number | 1.0 | 边框透明度(范围为 0 到 1)。 |
fill | Boolean | true | 是否填充多边形内部区域。 |
fillColor | String | color | 填充颜色(默认与边框颜色相同)。 |
fillOpacity | Number | 0.2 | 填充区域的透明度(范围为 0 到 1)。 |
dashArray | String | null | 虚线样式(如 10 表示 10px 实线 + 10px 空白,循环)。 |
dashOffset | String | null | 虚线起始偏移量(如 10 表示从第 10px 开始绘制)。 |
lineCap | String | round | 边框线端点样式(round , butt , 或 square )。 |
lineJoin | String | round | 边框线连接点样式(round , bevel , 或 miter )。 |
className | String | null | 自定义 CSS 类名,用于覆盖默认样式。 |
Rectange设置颜色,虚线,透明度效果
三、圆
1. Circle类
L.Circle 是 Leaflet 中用于创建圆图层的类。可以通过传入坐标和半径来确定圆,并支持多种可选参数来自定义样式和行为。
Circle类参数说明:
// 定义坐标点数组(纬经度)
let points = [39.90, 116.46];
// 创建折线
const circle = L.circle(points, {
// 圆半径
radius: 1000,
// 是否绘制边框
stroke: true,
// 边框颜色
color: 'red',
// 边框宽度(像素)
weight: 5,
// 边框透明度(0 到 1)
opacity: 0.8,
// 是否填充内部区域
fill: true,
// 填充颜色
fillColor: '#ff0033',
// 填充透明度(0 到 1)
fillOpacity: 0.5,
// 边框虚线模式
dashArray: '10',
// 边框线端点样式(round, butt, square)
lineCap: 'round',
// 边框线连接点样式(round, bevel, miter)
lineJoin: 'round',
// 自定义 CSS 类名
className: '',
}).addTo(map)
// 缩放地图以适应线条范围
// map.fitBounds(circle.getBounds());
2. Circle类说明
Circle
类的使用方式一般为L.Circle([纬度,经度], 参数).addTo(map)
的方式进行加载或者L.Circle([纬度,经度], 半径, 参数).addTo(map)
,Circle
的参数用下表来阐述。
参数名 | 类型 | 默认值 | 说明 |
---|---|---|---|
radius | Number | 是否绘制多边形的边框。 | |
stroke | Boolean | true | 是否绘制多边形的边框。 |
color | String | #3388ff | 边框颜色(CSS 颜色值)。 |
weight | Number | 3 | 边框宽度(以像素为单位)。 |
opacity | Number | 1.0 | 边框透明度(范围为 0 到 1)。 |
fill | Boolean | true | 是否填充多边形内部区域。 |
fillColor | String | color | 填充颜色(默认与边框颜色相同)。 |
fillOpacity | Number | 0.2 | 填充区域的透明度(范围为 0 到 1)。 |
dashArray | String | null | 虚线样式(如 10 表示 10px 实线 + 10px 空白,循环)。 |
dashOffset | String | null | 虚线起始偏移量(如 10 表示从第 10px 开始绘制)。 |
lineCap | String | round | 边框线端点样式(round , butt , 或 square )。 |
lineJoin | String | round | 边框线连接点样式(round , bevel , 或 miter )。 |
className | String | null | 自定义 CSS 类名,用于覆盖默认样式。 |
Cirle设置颜色,虚线,透明度效果
总结
本文主要阐述点,线,多边形等设置。
- 点使用
- 线使用
- 多边形使用
- 圆使用
具体使用可以参考本文