Class: LabelThemeLayer

mapboxgl.supermap.LabelThemeLayer

标签专题图层。

new mapboxgl.supermap.LabelThemeLayer(name, opt_options)

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

图层名。

opt_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 可选

图层透明度。

options.isAvoid boolean true 可选

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

options.isOverLay boolean true 可选

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

opt_options.isHoverAble boolean 可选

是否开启 hover 事件。

Extends

Members

highlightStyleSuperMap.ThemeStyle

专题图图层高亮样式。

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

map 对象。

namestring

专题图图层名称。

nodesClipPixelnumber

节点抽稀像素距离。

Default Value:
2

opacityfloat

图层透明度。

Default Value:
1

专题图图层全局样式。

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 95

要素添加之前触发。

Properties:
Name Type Description
features mapboxgl.supermap.ThemeFeature | SuperMap.ServerFeature

被添加的要素。

inherited changelayer

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

图层属性改变之后触发。

Properties:
Name Type Description
layer Object

图层。

property string

被改变的属性。

inherited featuresremoved

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

要素删除之后触发。

Properties:
Name Type Description
features Array.<SuperMap.Feature.Vector>

未被成功删除的要素。

succeed boolean

删除成功与否。

Methods

inherited addFeatures(features)

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

添加要素。

Name Type Description
features mapboxgl.supermap.ThemeFeature | SuperMap.ServerFeature

要素对象。

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

mapboxgl/overlay/LabelThemeLayer.js, line 493

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

Name Type Description
feature SuperMap.Feature.Vector

需要计算 bounds 的标签要素数。

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 552

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

Name Type Description
feature SuperMap.Feature.Vector

需要计算 bounds 的标签要素数。

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 239

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

inherited clearCache()

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

清除缓存。

createThematicFeature(feature)

mapboxgl/overlay/LabelThemeLayer.js, line 147

创建专题图要素。

Name Type Description
feature Object

要创建的专题图形要素。

inherited destroyFeatures(features)

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

销毁某个要素。

Name Type Description
features SuperMap.Feature.Vector

将被销毁的要素。

inherited display(display)

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

临时隐藏或者显示图层。通过对 CSS 控制产生即时效果,重新渲染失效。一般用 setVisibility 方法来动态控制图层的显示和隐藏。

Name Type Description
display boolean 可选

是否显示图层。

getAvoidInfo(bounds, quadrilateral){Object}

mapboxgl/overlay/LabelThemeLayer.js, line 813

获取避让的信息。

Name Type Description
bounds SuperMap.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 250

获取当前缓存数量。

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

getDrawnLabels(labelFeatures){Array.<SuperMap.Feature.Vector>}

mapboxgl/overlay/LabelThemeLayer.js, line 175

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

Name Type Description
labelFeatures Array.<SuperMap.Feature.Vector>

所有标签要素的数组。

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

inherited getFeatureBy(property, value){SuperMap.Feature.Vector}

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

在专题图的要素数组 features 里面遍历每一个 feature,当 feature[property] === value 时, 返回此 feature(并且只返回第一个)。

Name Type Description
property string

feature 的某个属性名称。

value string

property 所对应的值。

Returns:
Type Description
SuperMap.Feature.Vector 第一个匹配属性和值的矢量要素。

inherited getFeatureById(featureId){SuperMap.Feature.Vector}

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

通过给定一个 id,返回对应的矢量要素。

Name Type Description
featureId string

矢量要素的属性 id。

Returns:
Type Description
SuperMap.Feature.Vector 对应 id 的 feature,如果不存在则返回 null。

inherited getFeatures(){SuperMap.Feature.Vector}

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

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

Returns:
Type Description
SuperMap.Feature.Vector 用户加入图层的有效数据。

inherited getFeaturesByAttribute(attrName, attrValue){Array.<SuperMap.Feature.Vector>}

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

通过给定一个属性的 key 值和 value 值,返回所有匹配的要素数组。

Name Type Description
attrName string

属性的 key。

attrValue string

矢量要素的属性 id。

Returns:
Type Description
Array.<SuperMap.Feature.Vector> 一个匹配的 feature 数组。

getLabelInfo(){Object}

mapboxgl/overlay/LabelThemeLayer.js, line 648

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

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

getLabelPxLocation(feature){mapboxgl.Point}

mapboxgl/overlay/LabelThemeLayer.js, line 466

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

Name Type Description
feature SuperMap.Feature.Vector

标签要素。

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

inherited getLocalXY(coordinate)

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

地理坐标转为像素坐标。

Name Type Description
coordinate Object 可选

坐标位置。

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

mapboxgl/overlay/LabelThemeLayer.js, line 785

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

Name Type Description
x number

旋转点横坐标。

y number

旋转点纵坐标。

rx number

旋转中心点横坐标。

ry number

旋转中心点纵坐标。

angle number

旋转角度。

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

getStyleByData(feat){Array.<SuperMap.ThemeStyle>}

mapboxgl/overlay/LabelThemeLayer.js, line 339

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

Name Type Description
feat SuperMap.Feature.Vector

矢量要素对象。

Returns:
Type Description
Array.<SuperMap.ThemeStyle> 专题要素的 Style。

isPointInPoly(pt, poly){boolean}

mapboxgl/overlay/LabelThemeLayer.js, line 973

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

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 928

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

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 569

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

Name Type Default Description
layerID string

待插入的图层 ID。

before boolean true 可选

是否将本图层插入到图层 id 为 layerID 的图层之前(如果为 false 则将本图层插入到图层 id 为 layerID 的图层之后)。

inherited off(event, callback, context)

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

移除专题要素事件监听。

Name Type Description
event Event

监听事件。

callback function

回调函数。

context string

信息。

inherited on(event, callback, context)

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

添加专题要素事件监听。添加专题要素事件监听。

Name Type Description
event Event

监听事件。

callback function

回调函数。

context string

信息。

inherited onAdd()

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

向底图添加该图层。

redrawThematicFeatures(bounds)

mapboxgl/overlay/LabelThemeLayer.js, line 111

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

Name Type Description
bounds mapboxgl.LngLatBounds

重绘范围。

removeAllFeatures()

mapboxgl/overlay/LabelThemeLayer.js, line 138

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

removeFeatures(features)

mapboxgl/overlay/LabelThemeLayer.js, line 128

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

Name Type Description
features SuperMap.Feature.Vector

要删除的要素对象。

inherited removeFromMap()

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

移除图层。

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

mapboxgl/overlay/LabelThemeLayer.js, line 747

旋转 bounds。

Name Type Description
bounds SuperMap.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.<SuperMap.Feature.Vector>}

mapboxgl/overlay/LabelThemeLayer.js, line 388

设置标签要素的 Style。

Name Type Description
labelFeatures Array.<SuperMap.Feature.Vector>

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

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

inherited setMaxCacheCount(cacheCount)

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

设置最大缓存条数。

Name Type Description
cacheCount number 可选

缓存总数。

inherited setOpacity(opacity)

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

设置图层的不透明度,取值[0-1]之间。

Name Type Description
opacity number 可选

不透明度。

setStyle(feat)

mapboxgl/overlay/LabelThemeLayer.js, line 416

设置标签要素的Style。

Name Type Description
feat SuperMap.Feature.Vector

需要赋予 style 的要素。

inherited setVisibility(visibility)

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

设置图层可见性,设置图层的隐藏,显示,重绘的相应的可见标记。

Name Type Description
visibility boolean 可选

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

inherited toFeature(features){SuperMap.Feature.Vector}

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

转为 iClient 要素。

Name Type Description
features mapboxgl.supermap.ThemeFeature | GeoJSONObject

待转要素。

Returns:
Type Description
SuperMap.Feature.Vector 转换后的 iClient 要素。