LineStringLayer
LineStringLayer是基于WebGL图形技术的的线数据绘制图层。 LineStringLayer和VectorTileLayer采用同样的绘制逻辑,共享同样的Symbol样式。
LineStringLayer的用法和maptalks核心库中VectorLayer完全一样,但得益于WebGL技术,性能有着显著提升。
LineStringLayer仅支持添加LineString 和 MultiLineString,添加其他数据时会报错。
LineStringLayer支持Symbol样式中的所有marker,text和line样式。 marker和text样式主要用于在线端点或线段中段指定位置绘制图标或沿线文字。

它是maptalks.OverlayLayer的间接子类(直接继承自 Vector3DLayer),继承了 Vector3DLayer 上所有的方法。
INFO
LineStringLayer默认把所有LineString拼装成一个三维Mesh进行绘制,Marker部分样式的更新会导致图层重新构造Mesh,频繁操作会出现性能问题,具体说明请见矢量图层的性能优化文档。
构造函数
import { LineStringLayer } from '@maptalks/gl-layers';
const layer = new LineStringLayer('line0');详细信息
- id* String 图层id
- options* Object 配置参数,可选的配置项如下:
| 配置名 | 类型 | 描述 | 默认值 |
|---|---|---|---|
| meshRenderOrder | Number | mesh渲染顺序(覆写基类默认值0,保证线在地物之上) | 1 |
| picking | Boolean | 是否允许图层用identify或identifyAtPoint方法查询数据 | true |
| textGamma | Number | 文字的Gamma值,可以用于调整文字清晰度 | 1 |
| geometryEvents | Boolean | 是否允许Geometry响应事件 | true |
| styleScale | Number | 图层图标和文字的整体放大系数 | 1 |
| attribution | String | 图层版权声明 | null |
| minZoom | Number | 图层显示的最小zoom | null |
| maxZoom | Number | 图层显示的最大zoom | null |
| visible | Boolean | 图层是否隐藏 | true |
| opacity | Number | 图层透明度 | 1 |
| hitDetect | Boolean | 是否开启图层绘制检测(动态鼠标样式),关闭可以提高性能 | true |
| collisionScope | String | 碰撞检测索引的适用范围: map或者layer | "layer" |
成员方法
updateSymbol(idx, symbol)
更新style序号为idx样式的symbol。
layer.updateSymbol(0, symbol);参数:
- idx Number style样式序号
- symbol Object 要更新的symbol属性
返回:
- this
outlineAll()
高亮图层上所有的数据。
因为高亮是采用后处理实现的,图层需要加入GroupGLLayer,且outline后处理是开启的。
layer.addTo(groupGLLayer);
layer.outlineAll();返回:
- this
outline(geoIds)
高亮id在geoIds中的所有Geometry。
layer.addTo(groupGLLayer);
layer.outline([0, 1, 2]);参数:
- geoIds Number[] | String[] geometry id 数组
返回:
- this
cancelOutline()
取消高亮。
返回:
- this
toJSON()
获取图层的JSON序列化对象。
该对象可以用 Layer.fromJSON 方法反序列化一个图层对象。
const json = layer.toJSON();
const copiedLayer = maptalks.Layer.fromJSON(json);返回:
- Object
identify(coordinate, options)
在图层上查询给定坐标处的要素(只有绘制出来的数据才能被查询到)。
layer.identify([121.23, 39.34], { tolerance: 2 });参数:
- coordinate Number[] 坐标值
- options Object 设置,可能的属性: | 属性名 | 类型 | 描述 | 默认值 | | ------ | :----: | ---- | :-----------: | | tolerance | Number | 查询时的像素冗余值 | 3 |
返回:
- Geometry[]
identifyAtPoint(containerPoint, options)
在图层上查询给定屏幕坐标处的要素。
layer.identifyAtPoint([400, 300], { tolerance: 2 });参数:
- containerPoint Number[] 容器坐标(屏幕像素)
- options Object 设置,可能的属性: | 属性名 | 类型 | 描述 | 默认值 | | ------ | :----: | ---- | :-----------: | | tolerance | Number | 查询时的像素冗余值 | 3 |
返回:
- Object[]
继承自OverlayLayer的方法
具体可以参考父类OverlayLayer的API文档。
getGeometryById(id)
用id获取Geometry。
参数:
- id Number | String Geometry的id
返回:
- Geometry
getGeometries(filter, context)
获取所有符合条件的Geometry。
参数:
- filter Function 过滤函数
- context Object fn函数运行时使用的this值
返回:
- Geometry[]
getFirstGeometry()
获取第一个Geometry。
返回:
- Geometry
getLastGeometry()
获取最后一个Geometry。
返回:
- Geometry
getCount()
获取Geometry数量。
返回:
- Number
getExtent()
获取图层上所有Geometry的地理范围。
返回:
- Extent
forEach(fn, context)
遍历Geometry并执行函数。
参数:
- fn Function 每个Geometry的操作函数 function(geometry) {}
- context Object fn函数运行时使用的this值
返回:
- this
isEmpty()
判断图层是否是空图层。
返回:
- Boolean
addGeometry(geometries, fitView)
向图层添加Geometry。
参数:
- geometries Geometry | Geometry[] Geometry或Geometry数组
- fitView Boolean
返回:
- this
removeGeometry(geometries)
从图层删除Geometry
参数:
- geometries Geometry | Geometry[]
返回:
- this
clear()
清空图层,删除所有Geometry。
返回:
- this
setStyle(style)
设置图层的样式,样式说明请参考该链接。
const style = [
{
filter : true, // 数据的过滤条件
symbol: { // 样式定义
markerWidth: 6,
markerHeight: 6,
markerType: 'ellipse',
markerFill: '#0f0'
}
}
];
layer.setStyle(style);参数:
- style Object[] 图层样式对象,每个样式对象包含filter和symbol两个属性,filter是feature-filter类型的过滤条件,symbol是样式对象。
返回:
- this
getStyle()
获取图层样式。
返回:
- Object[]
removeStyle()
移除图层的样式。
返回:
- this
继承自Layer的方法
具体可以参考父类Layer的API文档。
getId()
获得图层id
返回:
- Number | String
setId(id)
设置图层id
返回:
- this
addTo(map)
添加到地图上。
返回:
- this
getMinZoom()
获取最小瓦片级别。
返回:
- Number
getMaxZoom()
获取最大瓦片级别。
返回:
- Number
getMap()
获取图层添加到的map对象。
返回:
- Map
getProjection()
获取图层的projection。
返回:
- Projection
show()
隐藏图层。
返回:
- this
hide()
隐藏图层。
返回:
- this
isVisible()
判定图层是否显示。
返回:
- Boolean
remove()
删除图层。
返回:
- this
on(events, handler, context)
注册图层的监听事件
返回:
- this
addEventListener(events, handler, context)
同 on 方法
返回:
- this
once(events, handler, context)
注册图层的监听事件,响应后即删除
返回:
- this
off(events, handler, context)
移除图层注册的监听事件
返回:
- this
removeEventListener(events, handler, context)
同 off 方法
返回:
- this
listens(events, handler, context)
判断图层是否监听了events事件。
返回:
- Boolean
fire(event, params)
手动发射一个事件,params是时间参数。
返回:
- this
setOptions(options)
设置图层配置。
返回:
- this
config(key, value)
更新某个图层配置。
返回:
- this
静态方法
fromJSON(json)
从图层的json对象创建一个LineStringLayer对象。
const json = layer.toJSON();
const layerCopied = maptalks.Layer.fromJSON(json);返回:
- LineStringLayer
事件
图层事件监听示例代码:
// 监听workerready事件
layer.once('workerready', e => {
// e为事件参数
console.log('worker is ready');
});
// 监听tileload事件
layer.on('tileload', e => {
// e为事件参数
console.log('loaded a tile', e.tile);
});图层事件
canvasisdirty
图层画布产生绘制的事件。
参数属性:
| 属性名 | 类型 | 值 |
|---|---|---|
| type | String | "canvasisdirty" |
| target | Layer | this |
注:渲染器还会触发
buildlinemesh、updatemesh、partialupdate、removegeo、iblupdated等渲染事件(2026 核对)。
继承自OverlayLayer的事件
addgeo
添加Geometry事件
参数属性:
| 属性名 | 类型 | 值 |
|---|---|---|
| type | String | "addgeo" |
| target | Layer | this |
| geometries | Geometry[] | 添加的Geometry |
removegeo
移除Geometry事件
参数属性:
| 属性名 | 类型 | 值 |
|---|---|---|
| type | String | "removegeo" |
| target | Layer | this |
| geometries | Geometry[] | 移除的Geometry |
setstyle
调用图层setStyle设置图层样式后的事件
参数属性:
| 属性名 | 类型 | 值 |
|---|---|---|
| type | String | "setstyle" |
| target | Layer | this |
| style | Object[] | 样式数组 |
removestyle
调用图层removeStyle清除图层样式后的事件
参数属性:
| 属性名 | 类型 | 值 |
|---|---|---|
| type | String | "removestyle" |
| target | Layer | this |
继承自Layer的事件
clear
图层被清除事件。
参数属性:
| 属性名 | 类型 | 值 |
|---|---|---|
| type | String | "clear" |
| target | VectorTileLayer | this |
idchange
图层id变化事件。
参数属性:
| 属性名 | 类型 | 值 |
|---|---|---|
| type | String | "idchange" |
| target | VectorTileLayer | this |
| old | String | 旧的id |
| new | String | 新的id |
renderercreate
renderer创建事件
参数属性:
| 属性名 | 类型 | 值 |
|---|---|---|
| type | String | "renderercreate" |
| target | VectorTileLayer | this |
| renderer | VectorTileLayerRenderer |
canvascreate
canvas创建事件
参数属性:
| 属性名 | 类型 | 值 |
|---|---|---|
| type | String | "canvascreate" |
| target | VectorTileLayer | this |
| gl | WebGLRenderingContext2D |
renderstart
开始渲染事件。
参数属性:
| 属性名 | 类型 | 值 |
|---|---|---|
| type | String | "renderstart" |
| target | VectorTileLayer | this |
renderend
结束渲染事件。
参数属性:
| 属性名 | 类型 | 值 |
|---|---|---|
| type | String | "renderend" |
| target | VectorTileLayer | this |
本文档已与 @maptalks/gl-layers 2026 源码核对(api-notes-vt-gl.md)