Class: Theme

Theme

专题图基类。地图学中将突出而深入地表示一种或几种要素或现象,即集中表示一个主题内容的地图称为专题地图。 在 SuperMap 中,专题图是地图图层的符号化显示,即用各种图形渲染风格(大小,颜色,线型,填充等)来图形化地表现专题要素的某方面特征。 调用建议:使用其子类实现该类。

new Theme(name, opt_option)

Usage
// 浏览器
<script type="text/javascript" src="https://iclient.supermap.io/dist/openlayers/iclient-ol.js"></script>
<script>
  new ol.source.Theme(name, opt_option);
  
</script>

// ES6 Import
import { Theme } from '@supermapgis/iclient-ol';

new Theme(name, opt_option);

openlayers/overlay/theme/Theme.js, line 18
Name Type Description
name string

专题图图层名称。

opt_option Object

参数。

Name Type Default Description
map ol.Map

当前 OpenLayers 的地图对象。

id string 可选

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

opacity number 1 可选

图层不透明度。

logo string 可选

Logo(OpenLayers 5.0.0 及更高版本不再支持此参数)。

projection ol.proj.Projection 可选

投影信息。

ratio number 1.5 可选

视图比,1 表示画布是地图视口的大小,2 表示地图视口的宽度和高度的两倍,依此类推。必须是 1 或更高。

resolutions Array 可选

分辨率数组。

state ol.source.State 可选

资源状态。

attributions string | Object 'Map Data <span>© <a href='http://support.supermap.com.cn/product/iServer.aspx' target='_blank'>SuperMap iServer</a></span> with <span>© <a href='https://iclient.supermap.io' target='_blank'>SuperMap iClient</a></span>' 可选

版权描述信息。

Extends

Methods

addFeatures(features)

openlayers/overlay/theme/Theme.js, line 191

抽象方法,可实例化子类必须实现此方法。向专题图图层中添加数据, 专题图仅接收 FeatureVector 类型数据, feature 将储存于 features 属性中,其存储形式为数组。

Name Type Description
features Array.<ThemeFeature> | Array.<GeoJSONObject> | Array.<ol.Feature> | ThemeFeature | GeoJSONObject | ol.Feature

待添加要素。

destroy()

openlayers/overlay/theme/Theme.js, line 133

释放资源,将引用资源的属性置空。

destroyFeatures(features)

openlayers/overlay/theme/Theme.js, line 152

销毁要素。

Name Type Description
features Array.<FeatureVector> | FeatureVector

将被销毁的要素。

fire(type, event)

openlayers/overlay/theme/Theme.js, line 366

添加专题要素事件监听。

Name Type Description
type string

事件类型。

event string

事件名称。

getFeatureBy(property, value){FeatureVector}

openlayers/overlay/theme/Theme.js, line 287

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

Name Type Description
property string

要素的某个属性名称。

value string

property 所对应的值。

Returns:
Type Description
FeatureVector 第一个匹配属性和值的矢量要素。

getFeatureById(featureId){FeatureVector}

openlayers/overlay/theme/Theme.js, line 307

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

Name Type Description
featureId string

矢量要素的属性 ID。

Returns:
Type Description
FeatureVector 对应 ID 的要素,如果不存在则返回 null。

getFeatures(filter){Array.<FeatureVector>}

openlayers/overlay/theme/Theme.js, line 270

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

Name Type Description
filter function 可选

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

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

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

openlayers/overlay/theme/Theme.js, line 317

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

Name Type Description
attrName string

属性的 key 值。

attrValue string

属性的 value 值。

Returns:
Type Description
Array.<FeatureVector> 一个匹配的要素数组。

getLocalXY(coordinate){Array.<number>}

openlayers/overlay/theme/Theme.js, line 471

地理坐标转为像素坐标。

Name Type Description
coordinate Object

坐标位置。

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

on(event, callback)

openlayers/overlay/theme/Theme.js, line 53

添加专题要素事件监听。支持的事件包括: click、mousedown、mousemove、mouseout、mouseover、mouseup。

Name Type Description
event string

事件名称。

callback RequestCallback

事件回调函数。

redrawThematicFeatures(extent)

openlayers/overlay/theme/Theme.js, line 339

抽象方法,可实例化子类必须实现此方法。重绘专题要素。

Name Type Description
extent Array

当前级别下计算出的地图范围。

removeAllFeatures()

openlayers/overlay/theme/Theme.js, line 258

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

removeFeatures(features)

openlayers/overlay/theme/Theme.js, line 202

从专题图中删除要素。这个函数删除所有传递进来的矢量要素。 参数中的要素数组中的每一项,必须是已经添加到当前图层中的要素, 如果无法确定要素数组,则可以调用 removeAllFeatures 来删除所有要素。 如果要删除的要素数组中的元素特别多,推荐使用 removeAllFeatures, 删除所有要素后再重新添加。这样效率会更高。

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

要删除要素的数组或用来过滤的回调函数。

rotate(pixelP, rotation, center){Array.<number>}

openlayers/overlay/theme/Theme.js, line 500

获取某像素坐标点 pixelP 绕中心 center 逆时针旋转 rotation 弧度后的像素点坐标。

Name Type Description
pixelP number

像素坐标点位置。

rotation number

旋转角度。

center number

中心位置。

Returns:
Type Description
Array.<number> 旋转后的像素坐标数组。

scale(pixelP, center, scaleRatio){Array.<number>}

openlayers/overlay/theme/Theme.js, line 514

获取某像素坐标点 pixelP 相对于中心 center 进行缩放 scaleRatio 倍后的像素点坐标。

Name Type Description
pixelP Object

像素点。

center Object

中心点。

scaleRatio number

缩放倍数。

Returns:
Type Description
Array.<number> 返回数组型比例。

setOpacity(opacity)

openlayers/overlay/theme/Theme.js, line 173

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

Name Type Description
opacity number

不透明度。

deprecated toFeature(features){Array.<FeatureVector>}

openlayers/overlay/theme/Theme.js, line 570

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

Name Type Description
features Array.<ThemeFeature> | Array.<GeoJSONObject> | Array.<ol.Feature> | ThemeFeature | GeoJSONObject | ol.Feature

待转要素。

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

toiClientFeature(features){Array.<FeatureVector>}

openlayers/overlay/theme/Theme.js, line 528

转为 iClient 要素。

Name Type Description
features Array.<ThemeFeature> | Array.<GeoJSONObject> | Array.<ol.Feature> | ThemeFeature | GeoJSONObject | ol.Feature

待转要素。

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

un(event, callback)

openlayers/overlay/theme/Theme.js, line 433

移除专题要素事件监听。

Name Type Description
event string

事件名称。

callback RequestCallback

事件回调函数。