Skip to content

LineStringLayer

LineStringLayer是基于WebGL图形技术的的线数据绘制图层。 LineStringLayer和VectorTileLayer采用同样的绘制逻辑,共享同样的Symbol样式。

LineStringLayer的用法和maptalks核心库中VectorLayer完全一样,但得益于WebGL技术,性能有着显著提升。

LineStringLayer仅支持添加LineStringMultiLineString,添加其他数据时会报错。

LineStringLayer支持Symbol样式中的所有marker,text和line样式。 marker和text样式主要用于在线端点或线段中段指定位置绘制图标或沿线文字。

沿线文字

它是maptalks.OverlayLayer的间接子类(直接继承自 Vector3DLayer),继承了 Vector3DLayer 上所有的方法。

INFO

LineStringLayer默认把所有LineString拼装成一个三维Mesh进行绘制,Marker部分样式的更新会导致图层重新构造Mesh,频繁操作会出现性能问题,具体说明请见矢量图层的性能优化文档。

构造函数

js
import { LineStringLayer } from '@maptalks/gl-layers';

const layer = new LineStringLayer('line0');
详细信息
参数:
  • id* String 图层id
  • options* Object 配置参数,可选的配置项如下:
配置名类型描述默认值
meshRenderOrderNumbermesh渲染顺序(覆写基类默认值0,保证线在地物之上)1
pickingBoolean是否允许图层用identify或identifyAtPoint方法查询数据true
textGammaNumber文字的Gamma值,可以用于调整文字清晰度1
geometryEventsBoolean是否允许Geometry响应事件true
styleScaleNumber图层图标和文字的整体放大系数1
attributionString图层版权声明null
minZoomNumber图层显示的最小zoomnull
maxZoomNumber图层显示的最大zoomnull
visibleBoolean图层是否隐藏true
opacityNumber图层透明度1
hitDetectBoolean是否开启图层绘制检测(动态鼠标样式),关闭可以提高性能true
collisionScopeString碰撞检测索引的适用范围: map或者layer"layer"

成员方法

updateSymbol(idx, symbol)

更新style序号为idx样式的symbol。

js
layer.updateSymbol(0, symbol);

参数:

  • idx Number style样式序号
  • symbol Object 要更新的symbol属性

返回:

  • this
outlineAll()

高亮图层上所有的数据。

因为高亮是采用后处理实现的,图层需要加入GroupGLLayer,且outline后处理是开启的。

js
layer.addTo(groupGLLayer);
layer.outlineAll();

返回:

  • this
outline(geoIds)

高亮id在geoIds中的所有Geometry。

js
layer.addTo(groupGLLayer);
layer.outline([0, 1, 2]);

参数:

  • geoIds Number[] | String[] geometry id 数组

返回:

  • this
cancelOutline()

取消高亮。

返回:

  • this
toJSON()

获取图层的JSON序列化对象。

该对象可以用 Layer.fromJSON 方法反序列化一个图层对象。

js
const json = layer.toJSON();
const copiedLayer = maptalks.Layer.fromJSON(json);

返回:

  • Object
identify(coordinate, options)

在图层上查询给定坐标处的要素(只有绘制出来的数据才能被查询到)。

js
layer.identify([121.23, 39.34], { tolerance: 2 });

参数:

  • coordinate Number[] 坐标值
  • options Object 设置,可能的属性: | 属性名 | 类型 | 描述 | 默认值 | | ------ | :----: | ---- | :-----------: | | tolerance | Number | 查询时的像素冗余值 | 3 |

返回:

  • Geometry[]
identifyAtPoint(containerPoint, options)

在图层上查询给定屏幕坐标处的要素。

js
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)

设置图层的样式,样式说明请参考该链接。

js
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对象。

js
const json = layer.toJSON();

const layerCopied = maptalks.Layer.fromJSON(json);

返回:

  • LineStringLayer

事件

图层事件监听示例代码:

js
// 监听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

图层画布产生绘制的事件。

参数属性:

属性名类型
typeString"canvasisdirty"
targetLayerthis

注:渲染器还会触发 buildlinemeshupdatemeshpartialupdateremovegeoiblupdated 等渲染事件(2026 核对)。

继承自OverlayLayer的事件

addgeo

添加Geometry事件

参数属性:

属性名类型
typeString"addgeo"
targetLayerthis
geometriesGeometry[]添加的Geometry
removegeo

移除Geometry事件

参数属性:

属性名类型
typeString"removegeo"
targetLayerthis
geometriesGeometry[]移除的Geometry
setstyle

调用图层setStyle设置图层样式后的事件

参数属性:

属性名类型
typeString"setstyle"
targetLayerthis
styleObject[]样式数组
removestyle

调用图层removeStyle清除图层样式后的事件

参数属性:

属性名类型
typeString"removestyle"
targetLayerthis

继承自Layer的事件

clear

图层被清除事件。

参数属性:

属性名类型
typeString"clear"
targetVectorTileLayerthis
idchange

图层id变化事件。

参数属性:

属性名类型
typeString"idchange"
targetVectorTileLayerthis
oldString旧的id
newString新的id
renderercreate

renderer创建事件

参数属性:

属性名类型
typeString"renderercreate"
targetVectorTileLayerthis
rendererVectorTileLayerRenderer
canvascreate

canvas创建事件

参数属性:

属性名类型
typeString"canvascreate"
targetVectorTileLayerthis
glWebGLRenderingContext2D
renderstart

开始渲染事件。

参数属性:

属性名类型
typeString"renderstart"
targetVectorTileLayerthis
renderend

结束渲染事件。

参数属性:

属性名类型
typeString"renderend"
targetVectorTileLayerthis

本文档已与 @maptalks/gl-layers 2026 源码核对(api-notes-vt-gl.md)