layer~VectorTileJSONLayer(name, url, options)

自定义矢量瓦片图层。用来对接空间信息服务平台发布的自定义矢量瓦片服务,适用于一次性加载大量矢量要素的场景。自定义矢量瓦片中数据图层对应空间信息服务平台数据自定义矢量瓦片预处理阶段配置的矢量数据集。其中点状、线状、面状数据集下,每一行设置都对应一个数据图层。

Summary

Methods:
fromHMapPlatform

通过空间信息服务平台元数据创建图层

addFilter

添加图层过滤行为。从特定的数据图层中筛选符合设置条件的要素,并对其进行可见性设置。

destroy

销毁自定义矢量瓦片图层。

getAllDataLayers

获取所有数据图层。

getDataLayer

根据数据图层标识获取数据图层。

getFeaturesByAttribute

根据属性获取要素数组。

getLabelOn

获取注记启用状态。

getLayerFields

获取指定数据图层的输出字段。

getLayerType

获取自定义矢量瓦片图层的图层类型。

getLineLableVisibility

获取线注记(比如道路名称)的可见性。

getLinePainterVisible

用于切换拉高及不拉高的线painter进行显示

getMarkerVisibility

获取图标注记(比如POI点图标)的可见性。

getPointLableVisibility

获取点文字注记(比如POI点的名称)的可见性。

setAdminCode

设置行政区划编码。该行政区划将作为范围,只请求该范围内的数据。

setAdminLevel

设置要展示的行政区划级别。设置后将只显示该行政级别对应的数据。

setClampMode

设置贴地模式

setDataLayerVisibility

设置指定数据图层的可见性。

setLabelOn

开启或者关闭指定类型的注记。自定义矢量瓦片注记分为三种:a)、图标:比如POI(兴趣点)的图标。b)、线文字,比如道路注记。c)、点|面文字,比如兴趣点或者兴趣面的名称。

setLineLableVisibility

设置线注记(比如道路名称)的可见性。

setMarkerVisibility

设置图标注记(比如POI点图标)的可见性。

setOpacity

设置图层不透明度。0表示完全透明,1表示完全不透明。从0到1,越来越不透明。

setPointLableVisibility

设置点文字注记(比如POI点的名称)的可见性。

updateIcons

更新图标。

updateLayerStyle

单个数据图层样式的更新。注意,该接口只在当前会话周期里有效,不会持久化。

updateStyle

更新自定义矢量瓦片图层的样式文件,不更新字体和图标。

updateTheme

更新自定义矢量瓦片图层的主题风格,同时更新字体和图标文件。

Constructor

new VectorTileJSONLayer(name, url, options)

Parameters:
Name Type Description
name String

自定义矢量瓦片图层的名称。

url String

自定义矢量瓦片的服务地址。

options Object
Name Type Description
styleUrl String

样式文件的地址,类似矢量瓦片图层(VectorTileLayer)的设置。同级目录下包括总体样式(json格式,如style.json)、字体(chars.png、chars.json)、图标(icons.png、icon.json)。具体样式内容可参见空间信息服务平台中自定义矢量瓦片服务中的描述。

labelOn Boolean

是否启用地图注记,默认false。

dataMaxLevel Number

整数,表示当前图层中瓦片数据的最大级别,当地图缩放超过该值时,该图层中瓦片数据将被继续渲染。如果不设置或该值大于地图最大级别,则默认按地图对象的最大级别算。

enableLight Boolean

是否开启图层光照,即图层是否受地图光照影响,默认为true,作用的是矢量瓦片中的简模。
// * @param {Boolean} options.versionControl 是否进行版本管理,默认false。只有在启用IndexedDB并且数据源会更新并记入版本时方需开启。

dataFormat String

切片格式,栅格切片支持"pbf"|"json",默认为'json'
// * @param {Boolean} options.defaultStyle 是否使用默认样式。如设置为true,则当某类数据样式未定义时,使用该类数据的要素类型样式。默认false。

depthTest Boolean

是否开启深度。开启后可呈现前后关系,适合白模或数据基本处于不同深度的情况。默认为false。

useWebWorker Boolean

是否开启多线程。开启多线程后,切片的解析不会阻塞主线程。默认为false。

elevationDatum Number

高程基准,单位为米,从服务元数据获取。

clampToGround Boolean

是否贴三维基础图层绘制,默认为false,如果设置,需要再指定三维基础图层。

clampMode String

贴地模式,有"texture"(纹理模式)和"height"(高度模式)两个枚举值可选,默认为"texture"。纹理模式下,图层中的线面会以纹理的形式绘制到三维基础图层表面;
如果设置了高度模式,图层中的要素会在自身高度的基础上,再追加地形高度。此设置针对的是线面类型的要素,点类型要素(包括点图标和注记文字)只能为高度模式,高度模式下,如果要素需要完全贴地形,需要将原始点位的z值设置为0。

baseGroundLayer Boolean

是否三维基础图层,默认为false,如果设置成三维基础图层,贴地绘制的图层将会绘制到该图层表面,注意需要开启该图层的深度,且不可以和ClampToGround同时设置。

Example
//自定义矢量瓦片服务地址
const serviceUrl="https://hmap.hikvision.com.cn/hmappublish/service/rs/v1/vector_tile/geojson_tile/hmapdemo_xihu_geojsontile/";
//自定义矢量瓦片的样式地址,style.json为入口文件,其同级需包含字体样式和图标样式
const styleUrl="../public/style/hvj/style.json";
let layer = new hmap.layer.VectorTileJSONLayer('geojsonTile', serviceUrl, {
    dataFormat: "json",//数据类型
    labelOn:true,//显示注记
    styleUrl: styleUrl
});

Members

clampToGround

设置贴地状态

depthTest

获取图层的深度测试属性
return {Boolean} 深度测试属性

Overrides:

Methods

static fromHMapPlatform(metadataUrl, options) → {Promise}

通过空间信息服务平台元数据创建图层

Parameters:
Name Type Description
metadataUrl String

空间信息服务平台服务对应的元数据地址

options options

可选项,对空间信息服务平台元数据不包含的可选项进行补充,若传入的可选项与元数据中重复,以元数据为准。

Returns:
Promise -

图层创建的promise,resolve返回图层实例

addFilter(layerId, name, value, visibility)

添加图层过滤行为。从特定的数据图层中筛选符合设置条件的要素,并对其进行可见性设置。

Parameters:
Name Type Default Description
layerId String

数据图层标识。

name String

要素属性名。

value String

要素属性值。

visibility String false

过滤到的要素,设置可见性,缺省false,隐藏要素。

Deprecated:
  • Yes

destroy()

销毁自定义矢量瓦片图层。

getAllDataLayers() → {Array.<Object>}

获取所有数据图层。

Returns:
Array.<Object> -

所有数据图层对象构成的数组。图层对象的键值包括id(数据图层唯一标识)、name(数据图层名称)、fields(数据图层的输出字段)、style(样式)、dispaly(可见性)。

Example
gjtLayer.getAllDataLayers()

getDataLayer(layerId) → {Object|null}

根据数据图层标识获取数据图层。

Parameters:
Name Type Description
layerId String

数据图层标识。

Returns:
Object | null -

返回图层的部分属性,键值为id、name、fields、style、display。

getFeaturesByAttribute(layerid, attrName, attrValue) → {Array.<module:feature~Vector>}

根据属性获取要素数组。

Parameters:
Name Type Description
layerid String

数据图层标识。

attrName String

属性名称。

attrValue String

属性值。

Returns:
Array.<module:feature~Vector> -

返回所匹配的要素构成的数组。

Example
let features = vectorLayer.getFeaturesByAttribute("755038bf-fcd7-4ca5-9a2e-61c5f1adad2d","name", 205);//从数据图层标识为"755038bf-fcd7-4ca5-9a2e-61c5f1adad2d"的数据图层上,得到name值为205的要素数组

getLabelOn() → {Boolean}

获取注记启用状态。

Returns:
Boolean -

注记启用状态。

getLayerFields(layerid) → {Array.<String>}

获取指定数据图层的输出字段。

Parameters:
Name Type Description
layerid String

数据图层标识,空间信息服务平台构建数据集时生成。

Returns:
Array.<String> -

返回数据图层的输出字段。

getLayerType() → {String}

获取自定义矢量瓦片图层的图层类型。

Returns:
String -

图层类型。

getLineLableVisibility() → {Boolean}

获取线注记(比如道路名称)的可见性。

Returns:
Boolean -

线注记的可见性。

getLinePainterVisible(painter)

用于切换拉高及不拉高的线painter进行显示

Parameters:
Name Type Description
painter *

传入的painter,判断painter是否为线painter,并根据min3DLevel判断当前是否需要显示

getMarkerVisibility() → {Boolean}

获取图标注记(比如POI点图标)的可见性。

Returns:
Boolean -

图标类注记的可见性。

getPointLableVisibility() → {Boolean}

获取点文字注记(比如POI点的名称)的可见性。

Returns:
Boolean -

点文字注记的可见性。

setAdminCode(code)

设置行政区划编码。该行政区划将作为范围,只请求该范围内的数据。

Parameters:
Name Type Description
code String

行政区划编码。

setAdminLevel(level)

设置要展示的行政区划级别。设置后将只显示该行政级别对应的数据。

Parameters:
Name Type Description
level String

行政区划级别 取值分别为'PROVINCE'、'CITY'、'COUNTY'、'TOWN',分别代表省、市、县、乡镇四级行政区划级别。

setClampMode(mode)

设置贴地模式

Parameters:
Name Type Description
mode String

贴地模式,具体说明见构造函数ClampMode可选项

setDataLayerVisibility(layerId, visibility)

设置指定数据图层的可见性。

Parameters:
Name Type Description
layerId String

数据图层的标识。

visibility Boolean

图层的可见性。

setLabelOn(flag, tag, autoDraw)

开启或者关闭指定类型的注记。自定义矢量瓦片注记分为三种:a)、图标:比如POI(兴趣点)的图标。b)、线文字,比如道路注记。c)、点|面文字,比如兴趣点或者兴趣面的名称。

Parameters:
Name Type Default Description
flag Boolean

是否启用地图注记。

tag Number 7

要调整的注记类型,是一个3位的二进制数转换而来的十进制,取值范围为[0,7],这个3位的二进制,从右往左分别代表三种注记类型。
第一位表示点图标,第二位表示线文字,第三位表示点|面文字。
每一位的二进制的值可取0或1,1表示当前位代表的注记类型参与本次注记开关,0表示不参加。
eg:tag为3,对应的二进制为011,代表点图标,线文字参与本次注记的开关,状态调整为flag,点|面文字保持现状。

autoDraw Boolean true

调整完后是否主动重绘,默认值为true。

setLineLableVisibility(visibility, autoDraw)

设置线注记(比如道路名称)的可见性。

Parameters:
Name Type Default Description
visibility Boolean

是否可见。

autoDraw Boolean true

是否自动重绘,默认为true,自动重绘。

setMarkerVisibility(visibility, autoDraw)

设置图标注记(比如POI点图标)的可见性。

Parameters:
Name Type Default Description
visibility Boolean

是否可见。

autoDraw Boolean true

是否重绘,默认为true,自动重绘。

setOpacity(opacity)

设置图层不透明度。0表示完全透明,1表示完全不透明。从0到1,越来越不透明。

Parameters:
Name Type Default Description
opacity Number 1

图层不透明度,介于0~1之间。

setPointLableVisibility(visibility, autoDraw)

设置点文字注记(比如POI点的名称)的可见性。

Parameters:
Name Type Default Description
visibility Boolean

是否可见。

autoDraw Boolean true

是否重绘,默认为true,自动重绘。

updateIcons(url, callback, updateTexture)

更新图标。

Parameters:
Name Type Default Description
url String

图标的路径或地址:该路径下需要包括命名为icons.png和命名为icons.json的两个文件。

callback function

更新操作之后的回调函数。

updateTexture Boolean true

是否立即更新。

Example
//图标路径
const url="../../hmap/geoJsonTileStyle/";
tileJsonLayer.updateIcons(url,function(){console.log("图标样式已更新!")});

updateLayerStyle(layerId, style)

单个数据图层样式的更新。注意,该接口只在当前会话周期里有效,不会持久化。

Parameters:
Name Type Description
layerId *

数据图层标识。

style *

更新的样式,规格标准见空间信息服务平台地图服务中的自定义矢量瓦片服务。

Example
//设置数据图层标识为'485ec9f0-4991-4200-944b-25b71d525a77'的数据图层的样式
vectorTileJSONLayer.updateLayerStyle('485ec9f0-4991-4200-944b-25b71d525a77',{
          "markerSymbols": [{
            "unicode": "&#61461;",
            "fontSize": 50,
            "fillColor": "#0000FF",
            "outlineWidth": 0,
            "display": true
          }, {
            "unicode": "&#57345;",
            "fontSize": 50,
            "fillColor": "#FF0000",
            "outlineColor": "#00FF00",
            "outlineWidth": 6,
            "display": true
          }]
      })

updateStyle(styleUrl, callback)

更新自定义矢量瓦片图层的样式文件,不更新字体和图标。

Parameters:
Name Type Default Description
styleUrl String

样式文件地址。

callback function null

样式风格更新后的回调函数。

Example
tileJsonlayer.updateStyle("http://10.20.84.15:8080/mapStyle.json",function(){});

updateTheme(styleUrl, callback)

更新自定义矢量瓦片图层的主题风格,同时更新字体和图标文件。

Parameters:
Name Type Default Description
styleUrl String

样式文件地址。

callback function null

自定义矢量瓦片图层主题更新后的回调。

Example
//主题或样式地址,该样式文件(例mapStyle.json)同级目录下需包含字体文件(命名为chars.png、chars.json)和图标文件(命名为icons.png、icons.json)。
const styleUrl="http://10.20.84.15:8080/mapStyle.json";
tileJsonlayer.updateTheme(styleUrl,function(){console.log("主题已更新!")});