Class: LabelThemeLayer

LabelThemeLayer

标签专题图图层类。标签专题图是用文本形式在图层上直接显示属性表中的数据,实质上是对图层的标注。 不仅帮助用户更好地区分地物要素,同时也显示了要素的某些重要属性,如行政区划、河流、机关、旅游景点的名称、等高线的高程等。

new LabelThemeLayer(name, options)

Usage
// 浏览器
<script type="text/javascript" src="https://iclient.supermap.io/dist/mapboxgl/iclient-mapboxgl.js"></script>
<script>
  new mapboxgl.supermap.LabelThemeLayer(name, options);
  
</script>

// ES6 Import
import { LabelThemeLayer } from '@supermapgis/iclient-mapboxgl';

new LabelThemeLayer(name, options);

mapboxgl/overlay/LabelThemeLayer.js, line 14
Name Type Description
name string

图层名。

options Object

参数。

Name Type Default Description
map mapboxgl.Map

MapBoxGL Map 对象。

themeField string

指定创建专题图字段。

style Object

专题图样式。

styleGroups Object

各专题类型样式组。

highlightStyle Object 可选

hover 的高亮样式。

id string 可选

专题图层 ID。专题图层 ID。默认使用 CommonUtil.createUniqueID("themeLayer_") 创建专题图层 ID。

loadWhileAnimating boolean true 可选

是否实时重绘。

opacity number 1 可选

图层不透明度。

isAvoid boolean true 可选

是否进行地图边缘的避让处理。

isOverLay boolean true 可选

是否进行压盖处理,如果设为 true,图表绘制过程中将隐藏对已在图层中绘制的图表产生压盖的图表。

isHoverAble boolean 可选

是否开启 hover 事件。

Extends

Members

highlightStyleThemeStyle

专题图图层高亮样式。

idstring

专题图图层 ID。

isAllowFeatureStyleboolean

是否允许 feature 样式(style) 中的有效属性应用到专题图层。
禁止对专题要素使用数据(feature)的 style。此属性可强制将数据 feature 的 style 中有效属性应用到专题要素上,且拥有比图层 style 和 styleGroups 更高的优先级,使专题要素的样式脱离专题图层的控制。可以通过此方式实现对特殊数据(feature) 对应专题要素赋予独立 style。

isAvoidboolean

是否进行地图边缘的避让处理,如果设为 true,将把与地图边缘相交的标签移到地图范围内,在地图边缘处做避让处理。

Default Value:
true

isClickAbleboolean

图形是否可点击。

Default Value:
true

isHoverAbleboolean

图形是否在 hover 时高亮。

isMultiHoverboolean

是否多图形同时高亮,用于高亮同一个数据对应的所有图形(如:多面)。

isOverLayboolean

是否进行压盖处理,如果设为 true,将隐藏被压盖的标签。

Default Value:
true

loadWhileAnimatingboolean

是否实时重绘。(当绘制大数据量要素的情况下会出现卡顿,建议把该参数设为 false)。

Default Value:
true

MapBoxGL Map 对象。

namestring

专题图图层名称。

nodesClipPixelnumber

节点抽稀像素距离。

Default Value:
2

opacitynumber

图层不透明度。

Default Value:
1

styleThemeStyle

专题图图层全局样式。

styleGroupsArray.<Object>

分组样式。使用此属性需要设置 themeField 属性。
1.没有同时设置 themeField 和 styleGroups,则所有专题要素都使用本图层的 style 进行渲染;
2.同时设置 themeField 和 styleGroups,则按照 themeField 指定的字段名称获取用户数据(feature)attributes 中对应的属性值;
  a.如果属性值等于 styleGroups 数组里某个元素定义的 value 值,则此专题要素取 styleGroups 数组中该元素定义的 style 进行渲染。
  b.如果属性值不等于 styleGroups 数组里任何元素定义的 value 值,则此专题要素按照本图层的 style 进行渲染。
此数组每个元素对象必须有两个属性:value : 与字段 themeField 相对应的属性值;style:专题要素 style。

themeFieldstring

用于指定专题要素样式的属性字段名称。
此属性字段是要用户数据(feature) attributes 中包含的字段,且字段对应的值的类型必须是数值型。
使用标签分组显示还需要设置 styleGroups 属性。

visibilityboolean

图层是否可见。

Default Value:
true

Events

inherited beforefeaturesadded

mapboxgl/overlay/theme/GeoFeatureThemeLayer.js, line 97

要素添加之前触发。

Properties:
Name Type Description
features ThemeFeature | ServerFeature

被添加的要素。

inherited changelayer

mapboxgl/overlay/theme/ThemeLayer.js, line 198

图层属性改变之后触发。

Properties:
Name Type Description
layer Object

图层。

property string

被改变的属性。

inherited featuresremoved

mapboxgl/overlay/theme/ThemeLayer.js, line 270

要素删除之后触发。

Properties:
Name Type Description
features Array.<FeatureVector>

未被成功删除的要素。

succeed boolean

删除成功与否。

Methods

inherited addFeatures(features)

mapboxgl/overlay/theme/GeoFeatureThemeLayer.js, line 91

添加要素。

Name Type Description
features ThemeFeature | ServerFeature

要素对象。

calculateLabelBounds(feature, loc){Array.<Object>}

mapboxgl/overlay/LabelThemeLayer.js, line 492

获得标签要素的最终范围。

Name Type Description
feature FeatureVector

需要计算范围的标签要素数。

loc mapboxgl.Point

标签位置。

Returns:
Type Description
Array.<Object> 四边形节点数组。例如:[{"x":1,"y":1},{"x":3,"y":1},{"x":6,"y":4},{"x":2,"y":10},{"x":1,"y":1}]。

calculateLabelBounds2(feature, loc){Array.<Object>}

mapboxgl/overlay/LabelThemeLayer.js, line 551

获得标签要素的最终范围的另一种算法(通过记录下的标签宽高),提高计算范围的效率。

Name Type Description
feature FeatureVector

需要计算范围的标签要素数。

loc mapboxgl.Point

标签位置。

Returns:
Type Description
Array.<Object> 四边形节点数组。例如:[{"x":1,"y":1},{"x":3,"y":1},{"x":6,"y":4},{"x":2,"y":10},{"x":1,"y":1}]。

inherited clear()

mapboxgl/overlay/theme/GeoFeatureThemeLayer.js, line 242

清除的内容包括数据(features)、专题要素和缓存。

inherited clearCache()

mapboxgl/overlay/theme/GeoFeatureThemeLayer.js, line 233

清除缓存。

createThematicFeature(feature)

mapboxgl/overlay/LabelThemeLayer.js, line 146

创建专题图要素。

Name Type Description
feature Object

要创建的专题图形要素。

inherited destroyFeatures(features)

mapboxgl/overlay/theme/ThemeLayer.js, line 142

销毁要素。

Name Type Description
features Array.<FeatureVector> | FeatureVector

将被销毁的要素。

inherited display(display)

mapboxgl/overlay/theme/ThemeLayer.js, line 176

隐藏或者显示图层。(通过对 CSS 控制产生即时效果,重新渲染失效。)

Name Type Description
display boolean 可选

是否显示图层。

getAvoidInfo(bounds, quadrilateral){Object}

mapboxgl/overlay/LabelThemeLayer.js, line 812

获取避让的信息。

Name Type Description
bounds Bounds

地图像素范围。

quadrilateral Array.<Object>

四边形节点数组。例如:[{"x":1,"y":1},{"x":3,"y":1},{"x":6,"y":4},{"x":2,"y":10},{"x":1,"y":1}]。

Returns:
Type Description
Object 避让的信息。

inherited getCacheCount(){number}

mapboxgl/overlay/theme/GeoFeatureThemeLayer.js, line 253

获取当前缓存数量。

Returns:
Type Description
number 当前缓存数量。

getDrawnLabels(labelFeatures){Array.<FeatureVector>}

mapboxgl/overlay/LabelThemeLayer.js, line 174

获取经(压盖)处理后将要绘制在图层上的标签要素。

Name Type Description
labelFeatures Array.<FeatureVector>

所有标签要素的数组。

Returns:
Type Description
Array.<FeatureVector> 最终要绘制的标签要素数组。

inherited getFeatureBy(property, value){FeatureVector}

mapboxgl/overlay/theme/ThemeLayer.js, line 308

在专题图的要素中,获取第一个feature[property] === value的矢量要素。

Name Type Description
property string

属性名称。

value string

属性值。

Returns:
Type Description
FeatureVector 矢量要素。

inherited getFeatureById(featureId){FeatureVector}

mapboxgl/overlay/theme/ThemeLayer.js, line 326

获取指定 featureId 的矢量要素。

Name Type Description
featureId string

矢量要素的属性 ID。

Returns:
Type Description
FeatureVector 对应 featureId 的矢量要素,不存在则返回 null。

inherited getFeatures(filter){Array.<FeatureVector>}

mapboxgl/overlay/theme/ThemeLayer.js, line 291

查看当前图层中的有效数据。

Name Type Description
filter function 可选

根据条件过滤要素的回调函数。

Returns:
Type Description
Array.<FeatureVector> 用户加入图层的有效数据。

inherited getFeaturesByAttribute(attrName, attrValue){Array.<FeatureVector>}

mapboxgl/overlay/theme/ThemeLayer.js, line 336

通过给定一个属性的 key 值和 value 值,获取匹配的要素数组。

Name Type Description
attrName string

属性的 key 值。

attrValue string

属性的 value 值。

Returns:
Type Description
Array.<FeatureVector> 要素数组。

getLabelInfo(){Object}

mapboxgl/overlay/LabelThemeLayer.js, line 647

根据当前位置获取绘制后的标签信息,包括标签的宽,高和行数等。

Returns:
Type Description
Object 绘制后的标签信息。

getLabelPxLocation(feature){mapboxgl.Point}

mapboxgl/overlay/LabelThemeLayer.js, line 465

获取标签要素的像素坐标。

Name Type Description
feature FeatureVector

标签要素。

Returns:
Type Description
mapboxgl.Point 标签位置。

inherited getLocalXY(coordinate){Array}

mapboxgl/overlay/theme/ThemeLayer.js, line 412

地理坐标转为像素坐标。

Name Type Description
coordinate Object 可选

坐标位置。

Returns:
Type Description
Array 长度为 2 的像素坐标数组,第一个元素表示 x 坐标,第二个元素表示 y 坐标。

getRotatedLocation(x, y, rx, ry, angle){Object}

mapboxgl/overlay/LabelThemeLayer.js, line 784

获取一个点绕旋转中心顺时针旋转后的位置(此方法用于屏幕坐标)。

Name Type Description
x number

旋转点横坐标。

y number

旋转点纵坐标。

rx number

旋转中心点横坐标。

ry number

旋转中心点纵坐标。

angle number

旋转角度。

Returns:
Type Description
Object 旋转后的坐标位置对象,该对象含有属性X(横坐标),属性Y(纵坐标)。

inherited getShapesByFeatureID(featureID){Array}

mapboxgl/overlay/theme/GeoFeatureThemeLayer.js, line 274

通过要素 ID 获取要素关联的所有图形。如果不传入此参数,函数将返回所有图形。

Name Type Default Description
featureID number si.refDataID 可选

要素 ID。

Returns:
Type Description
Array 返回图形数组。

getStyleByData(feat){Array.<ThemeStyle>}

mapboxgl/overlay/LabelThemeLayer.js, line 338

根据用户数据(feature)设置专题要素的风格。

Name Type Description
feat FeatureVector

矢量要素对象。

Returns:
Type Description
Array.<ThemeStyle> 专题要素的风格。

isPointInPoly(pt, poly){boolean}

mapboxgl/overlay/LabelThemeLayer.js, line 972

判断一个点是否在多边形里面(射线法)。

Name Type Description
pt Object

需要判定的点对象,该对象含有属性x(横坐标),属性y(纵坐标)。

poly Array.<Object>

多边形节点数组。例如一个四边形:[{"x":1,"y":1},{"x":3,"y":1},{"x":6,"y":4},{"x":2,"y":10},{"x":1,"y":1}]。

Returns:
Type Description
boolean 点是否在多边形内。

isQuadrilateralOverLap(quadrilateral, quadrilateral2){boolean}

mapboxgl/overlay/LabelThemeLayer.js, line 927

判断两个四边形是否有压盖。

Name Type Description
quadrilateral Array.<Object>

四边形节点数组。例如:[{"x":1,"y":1},{"x":3,"y":1},{"x":6,"y":4},{"x":2,"y":10},{"x":1,"y":1}]。

quadrilateral2 Array.<Object>

第二个四边形节点数组。

Returns:
Type Description
boolean 是否压盖,true 表示压盖。

inherited moveTo(layerID, before)

mapboxgl/overlay/theme/ThemeLayer.js, line 586

将图层移动到某个图层之前。

Name Type Default Description
layerID string

待插入的图层 ID。

before boolean true 可选

是否将本图层插入到图层 ID 为 layerID 的图层之前。

inherited off(event, callback, context)

mapboxgl/overlay/theme/ThemeLayer.js, line 381

移除专题要素事件监听。

Name Type Description
event Event

监听事件。

callback function

回调函数。

context string

信息。

inherited on(event, callback, context)

mapboxgl/overlay/theme/ThemeLayer.js, line 365

添加专题要素事件监听。

Name Type Description
event Event

监听事件。

callback function

回调函数。

context string

信息。

inherited onAdd()

mapboxgl/overlay/theme/ThemeLayer.js, line 83

添加该图层。

redrawThematicFeatures(bounds)

mapboxgl/overlay/LabelThemeLayer.js, line 110

重绘所有专题要素。
此方法包含绘制专题要素的所有步骤,包含用户数据到专题要素的转换,抽稀,缓存等步骤。
地图漫游时调用此方法进行图层刷新。

Name Type Description
bounds mapboxgl.LngLatBounds

重绘范围。

inherited refresh()

mapboxgl/overlay/theme/ThemeLayer.js, line 108

强制刷新当前热点显示,在图层热点数组发生变化后调用,更新显示。

removeAllFeatures()

mapboxgl/overlay/LabelThemeLayer.js, line 137

清除当前图层所有的矢量要素。

removeFeatures(features)

mapboxgl/overlay/LabelThemeLayer.js, line 127

从专题图中删除要素。这个函数删除所有传递进来的矢量要素。

Name Type Description
features Array.<FeatureVector> | FeatureVector | function

要删除的要素对象或用于过滤的回调函数。

inherited removeFromMap()

mapboxgl/overlay/theme/ThemeLayer.js, line 577

移除图层。

rotationBounds(bounds, rotationCenterPoi, angle){Array.<Object>}

mapboxgl/overlay/LabelThemeLayer.js, line 746

旋转 bounds。

Name Type Description
bounds Bounds

要旋转的 bounds。

rotationCenterPoi Object

旋转中心点对象,此对象含有属性X(横坐标),属性Y(纵坐标)。

angle number

旋转角度(顺时针)。

Returns:
Type Description
Array.<Object> bounds 旋转后形成的多边形节点数组。是一个四边形,形如:[{"x":1,"y":1},{"x":3,"y":1},{"x":6,"y":4},{"x":2,"y":10},{"x":1,"y":1}]

setLabelsStyle(labelFeatures){Array.<FeatureVector>}

mapboxgl/overlay/LabelThemeLayer.js, line 387

设置标签要素的 Style。

Name Type Description
labelFeatures Array.<FeatureVector>

需要设置 Style 的标签要素数组。

Returns:
Type Description
Array.<FeatureVector> 赋予 Style 后的标签要素数组。

inherited setMaxCacheCount(cacheCount)

mapboxgl/overlay/theme/GeoFeatureThemeLayer.js, line 262

设置最大缓存条数。

Name Type Description
cacheCount number 可选

缓存总数。

inherited setOpacity(opacity)

mapboxgl/overlay/theme/ThemeLayer.js, line 185

设置图层的不透明度,取值范围:[0-1]。

Name Type Description
opacity number 可选

不透明度,取值[0-1]之间。

setStyle(feat)

mapboxgl/overlay/LabelThemeLayer.js, line 415

设置标签要素的Style。

Name Type Description
feat FeatureVector

需要赋予 style 的要素。

inherited setVisibility(visibility)

mapboxgl/overlay/theme/ThemeLayer.js, line 163

设置图层可见性。

Name Type Description
visibility boolean 可选

是否显示图层(当前地图的 resolution 在最大最小 resolution 之间)。

inherited deprecated toFeature(features){FeatureVector}

mapboxgl/overlay/theme/ThemeLayer.js, line 465

转为 iClient 要素,该方法将被弃用,由 ThemeLayer#toiClientFeature 代替。

Name Type Description
features Array.<ServerFeature> | Array.<ThemeFeature> | Array.<GeoJSONObject> | ServerFeature | ThemeFeature | GeoJSONObject

待转要素。

Returns:
Type Description
FeatureVector 转换后的 iClient 要素。

inherited toiClientFeature(features){Array.<FeatureVector>}

mapboxgl/overlay/theme/ThemeLayer.js, line 431

转为 iClient 要素。

Name Type Description
features Array.<ServerFeature> | Array.<ThemeFeature> | Array.<GeoJSONObject> | ServerFeature | ThemeFeature | GeoJSONObject

待转要素。

Returns:
Type Description
Array.<FeatureVector> 转换后的 iClient 要素。