1. PointSymbolLayer
Extends: Layer
1.1. 初始化 new PointSymbolLayer(options)
1.1.1. new PointSymbolLayer(options)
点符号图层(符号包括圆点、图标/广告牌符号、glb/glTF模型等,以及文本标注)
Param | Type | Default | Description |
---|---|---|---|
options | Object |
包含以下参数的Object对象: |
|
options.name | String |
必填,图层名称; |
|
[options.show] | Boolean |
false |
是否显示; |
[options.customGroupId] | String |
若使用自定义分组,该图层所在分组的名称 |
|
[options.showLabel] | Boolean |
false |
是否实现文本标注 |
[options.showSymbol] | Boolean |
true |
是否显示符号 |
[options.symbolType] | SymbolType |
BOSGeo.SymbolType.CIRCLE_POINT |
符号类型 |
options.labelStyle | Object |
包含以下参数的文本标注对象: |
|
[options.labelStyle.font] | String |
'normal 30px Microsoft YaHei' |
标注字体样式,HTML canvas 2D context text styles |
[options.labelStyle.fillColor] | Color |
BOSGeo.Color.WHITE |
字体填充颜色 |
[options.labelStyle.outlineColor] | Color |
BOSGeo.Color.BLACK |
字体轮廓颜色 |
[options.labelStyle.outlineWidth] | Number |
1.0 |
字体轮廓宽度,单位为像素 |
[options.labelStyle.showBackground] | Boolean |
true |
标注是否显示背景 |
[options.labelStyle.backgroundColor] | Color |
BOSGeo.Color.TRANSPARENT |
标注背景颜色 |
[options.labelStyle.scale] | Number |
1 |
标注尺寸,标注最终大小为 scale * font中的字体大小 |
[options.labelStyle.pixelOffset] | Cartesian2 |
new BOSGeo.Cartesian2(0, -32) |
标注的像素偏移值,原点在标注正下方,往屏幕向右为X轴正方向,屏幕往下为Y轴正方向 |
options.pointStyle | Object |
包含以下参数的圆点对象 |
|
[options.pointStyle.pixelSize] | Number |
10 |
圆点大小 |
[options.pointStyle.outlineWidth] | Number |
0 |
圆点宽度 |
[options.pointStyle.color] | Color |
BOSGeo.Color.WHITE |
圆点填充颜色 |
[options.pointStyle.outlineColor] | Color |
BOSGeo.Color.TRANSPARENT |
圆点轮廓颜色 |
options.billboardStyle | Object |
包含以下参数的图标/广告牌对象 |
|
[options.billboardStyle.image] | String |
广告牌图片地址 |
|
[options.billboardStyle.color] | Color |
BOSGeo.Color.WHITE |
广告牌图片的混合颜色 |
[options.billboardStyle.scale] | Number |
1 |
图标尺寸(在width和height基础上) |
options.billboardStyle.height | Number |
广告牌显示高度,单位为像素,不设置则采用原始图片高度 |
|
options.billboardStyle.width | Number |
广告牌显示宽度,单位为像素,不设置则采用原始图片宽度 |
|
options.modelStyle | Object |
包含以下参数的glb/gltf模型对象 |
|
[options.modelStyle.url] | String |
Default_ModelPath |
模型路径 |
[options.modelStyle.imageBasedLightingFactor] | Cartesian2 |
new BOSGeo.Cartesian2(1.0, 1.0) |
模型的漫反射和镜面反射比例, 取值范围在[0, 1] |
[options.modelStyle.lightColor] | Color |
0 |
模型的光照颜色 |
[options.modelStyle.luminanceAtZenith] | Number |
0.2 |
模型环境贴图的亮度,以千坎德拉/平方米为单位 |
[options.modelStyle.heading] | Number |
0 |
模型的方位角,单位为度 |
[options.modelStyle.pitch] | Number |
0 |
模型的倾斜角,单位为度 |
[options.modelStyle.roll] | Number |
0 |
模型的旋转角,单位为度 |
[options.modelStyle.scale] | Number |
1 |
模型的尺寸 |
Example
var layerManager = geoMap.layerManager;
const pointLayer = layerManager.createLayer(BOSGeo.LayerType.POINTSYMBOL, '批量图标', {
customGroupId: "vector",
symbolType: BOSGeo.SymbolType.BILLBOARD,
billboardStyle: {
image: 'https://bosgeo.boswinner.com/Assets/Images/walking.png'
}
});
1.2. 属性
属性名 | Type | Default | Description |
---|---|---|---|
billboardStyle | Object | 图标样式(设置图层所有点的图标样式),object结构体及其默认值请参考构造函数 |
|
labelStyle | Object | false | 点样式(设置整个图层对象标注样式),object结构体及其默认值请参考构造函数 |
modelStyle | Object | 模型符号的样式(对于个别使用modifyPointPosition修改过heading、pitch、roll、scale属性的点不会被该默认模型样式中的值覆盖掉),object结构体及其默认值请参考构造函数 |
|
pointStyle | Object | 点样式(设置整个图层对象的圆点样式),object结构体及其默认值请参考构造函数 |
|
showLabel | Boolean | false | 是否显示标注 |
showSymbol | Boolean | true | 是否显示符号(圆点、图标、模型) |
symbolType | SymbolType |
BOSGeo.SymbolType.CIRCLE_POINT | 实例化符号类型 |
1.3. 方法
1.3.1. pointSymbolLayer.loadGeoJson(options) ⇒ Array.<(String|Number)>
将geojson中的点要素解析为点符号
Param | Type | Default | Description |
---|---|---|---|
options | Object |
包含以下参数的Object对象: |
|
options.geojson | Object |
geojson对象(目前仅支持EPSG:4326坐标系,并只支持到要素和要素集合层级) |
|
[options.labelKey] | Number |
'name' |
文本标注内容的属性名称 |
[options.defaultText] | Number |
'' |
标注属性未定义时的标注内容 |
[options.featureKey] | String |
要素标识属性名称,不指定或者指定要素值不唯一则无法进行根据已知信息进行准确地要素定位 |
Example
BOSGeo.Resource.fetchJson({
url: 'http://bosgeo.boswinner.com/geoData/geojson/shenzhen_roadPoints1424.geojson'
}).then((res) => {
pointLayer.loadGeoJson({
geojson: res,
labelKey: 'osm_id'
});
});
1.3.2. pointSymbolLayer.loadInBatch(options) ⇒ Array.<(String|Number)>
批量加载点符号
Param | Type | Default | Description |
---|---|---|---|
options | Object |
包含以下参数的Object对象: |
|
options.positions | Array.<Cartesian3> |
批量点要素顶点坐标集 |
|
[options.propertiesList] | Array.<Object> |
[] |
批量符号的属性集合,与positions数量对应,内层对象最好包含labelKey属性,否则显示的文本标注内容为defaultText内容 |
[options.labelKey] | Number |
'name' |
文本标注内容的属性名称 |
[options.defaultText] | Number |
'' |
标注属性未定义时的标注内容 |
[options.featureKey] | String |
要素标识属性名称,不指定或者指定要素值不唯一则无法进行根据已知信息进行准确地要素定位 |
Example
pointLayer.on(BOSGeo.LayerEventType.ADD, (data) => {//加载成功后可以监听获取点和符号化后的集合对象
console.log("---clusterLayer加载成功---",data);
});
BOSGeo.Resource.fetchJson({
url: 'http://bosgeo.boswinner.com/geoData/geojson/shenzhen_roadPoints1424.geojson'
}).then((res) => {
const {features} = res;
const propertiesList = [];
const featurePositions = [];
const height = 20;
features.forEach((feature) => {
const {geometry, properties} = feature;
const {coordinates, type} = geometry;
switch (type) {
case 'Point':
featurePositions.push(BOSGeo.Cartesian3.fromDegrees(coordinates[0], coordinates[1], height));
propertiesList.push(properties);
break;
case 'MultiPoint':
coordinates.forEach((point) => {
featurePositions.push(BOSGeo.Cartesian3.fromDegrees(point[0], point[1], height));
propertiesList.push(properties);
});
break;
}
});
pointLayer.loadInBatch({
positions: featurePositions,
propertiesList,
labelKey: 'osm_id',
featureKey: 'osm_id',
});
});
1.3.3. pointSymbolLayer.modifyPointPosition(featureKeyValue, translation, modelOptions) ⇒ Cartesian3
修改点的位置姿态
Param | Type | Description |
---|---|---|
featureKeyValue | String |
点符号的唯一key值(对应于添加时指定featureKey的value,若未指定则会自动创建guid) |
translation | Cartesian3 |
单个符号/文本标注的局部平移量(相对于点当前位置的ENU坐标系下的平移) |
modelOptions | Object |
模型符号的姿态(只有当符号为模型时设置才有效),注:一旦修改了该值后,当前点的姿态尺寸无法再通过modelStyle设置 |
modelOptions.heading | Object |
模型符号的方位角,单位为度,取值范围[0,360] |
modelOptions.pitch | Object |
模型符号的倾斜角,单位为度 |
modelOptions.roll | Object |
模型符号的旋转角,单位为度 |
modelOptions.scale | Object |
模型符号的尺寸 |
Example
pointLayer.modifyPointPosition('8349164372', new BOSGeo.Cartesian3(0, 0, 10), {pitch: 30, scale: 5})
1.3.4. pointSymbolLayer.flyToFeature(options)
定位到指定要素值的点
Param | Type | Default | Description |
---|---|---|---|
options | Object |
包含以下参数的Object对象: |
|
options.featureKeyValue | String | Number |
点符号的唯一key值(对应于添加时指定featureKey的value,若未指定则会自动创建guid) |
|
[options.heading] | Number |
0 |
基于要素对象包围球中心的偏移 |
[options.pitch] | Number |
-90 |
基于要素对象包围球中心的偏移 |
[options.roll] | Number |
0 |
基于要素对象包围球中心的偏移 |
[options.range] | Number |
50 |
基于要素对象包围球中心的偏移 |
[options.duration] | Number |
定位时间,不设置则会基于当前相机与目标点的距离自定设置时间 |
|
options.callback | function |
定位后的回调函数 |
Example
pointLayer.flyToFeature({featureKeyValue: '8349164372', range: 10, pitch: 90, duration: 1})
1.3.5. pointSymbolLayer.zoomToLayer(callback)
缩放至本图层
Param | Type | Description |
---|---|---|
callback | function |
回调函数 |
Example
pointInstanceLayer.zoomToLayer();
1.3.6. pointSymbolLayer.removeAll()
移除该图层所有点数据
1.3.7. pointSymbolLayer.destroy()
销毁图层