* @private * @function WebMap.prototype.addLabelLayer * @description 添加标签图层 * @param {Object} layerInfo - 图层信息 * @param {Array} features -feature的集合 * @returns {ol.layer.Vector} 图层对象
(layerInfo, features)
| 3283 | * @returns {ol.layer.Vector} 图层对象 |
| 3284 | */ |
| 3285 | addLabelLayer(layerInfo, features) { |
| 3286 | let labelStyle = layerInfo.labelStyle; |
| 3287 | let style = this.getLabelStyle(labelStyle, layerInfo); |
| 3288 | let layer = (layerInfo.labelLayer = new olLayer.Vector({ |
| 3289 | declutter: true, |
| 3290 | styleOL: style, |
| 3291 | labelField: labelStyle.labelField, |
| 3292 | source: new Vector({ |
| 3293 | features: features, |
| 3294 | wrapX: false |
| 3295 | }) |
| 3296 | })); |
| 3297 | layer.setStyle((features) => { |
| 3298 | let labelField = labelStyle.labelField; |
| 3299 | let label = features.get('attributes')[labelField.trim()] + ''; |
| 3300 | if (label === 'undefined') { |
| 3301 | return null; |
| 3302 | } |
| 3303 | let styleOL = layer.get('styleOL'); |
| 3304 | let text = styleOL.getText(); |
| 3305 | if (text && text.setText) { |
| 3306 | text.setText(label); |
| 3307 | } |
| 3308 | return styleOL; |
| 3309 | }); |
| 3310 | this.map.addLayer(layer); |
| 3311 | layer.setVisible(layerInfo.visible); |
| 3312 | layer.setZIndex(1000); |
| 3313 | const { visibleScale } = layerInfo; |
| 3314 | visibleScale && this.setVisibleScales(layer, visibleScale); |
| 3315 | return layer; |
| 3316 | } |
| 3317 | |
| 3318 | /** |
| 3319 | * @private |
no test coverage detected