import { LayerView } from '@mapgis/webclient-common'
import { ArcGISVectorTileLayerUtil } from '../view/utils'
class ArcGISVectorTileLayerView extends LayerView {
/**
* 添加图层视图
* @param {LayerEvent} 图层事件
* @return {Promise<LayerView>} 图层视图
*/
onAdd() {
const layer = this.layer
const self = this
ArcGISVectorTileLayerUtil.addIGSVectorTileLayer(this, {
callback(layers) {
for (let i = 0; i < layers.length; i++) {
layers[i].commonLayerId = layer.id
}
self.innerLayer = layers
}
})
return Promise.resolve(this)
}
/**
* 移除图层视图
* @param {LayerEvent} 图层事件
* @return {Promise<LayerView>} 图层视图
*/
onRemove() {
ArcGISVectorTileLayerUtil.removeLayer(this)
return Promise.resolve(this)
}
/**
* 更新图层视图
* @param {LayerViewUpdateEvent} event 图层事件
* @return {Promise<LayerView>} 图层视图
*/
onUpdate(event) {
// 确保有updateContent
if (event.updateContent) {
for (let i = 0; i < event.updateContent.length; i++) {
const updateContent = event.updateContent[i]
// 有updateContent
if (updateContent) {
switch (updateContent.name) {
// 更新主图层可见性
case 'visible':
ArcGISVectorTileLayerUtil.setVisible(this)
break
// 更新透明度
case 'opacity':
ArcGISVectorTileLayerUtil.setOpacity(this)
break
// 更新绘制样式
case 'setPaintProperties':
ArcGISVectorTileLayerUtil.setPaintProperties(this, updateContent)
break
// 更新布局样式
case 'setLayoutProperties':
ArcGISVectorTileLayerUtil.setLayoutProperties(this, updateContent)
break
// 更新过滤条件
case 'setStyleLayerFilter':
ArcGISVectorTileLayerUtil.setStyleLayerFilter(this, updateContent)
break
// 更新显示范围
case 'setStyleLayerZoomRange':
ArcGISVectorTileLayerUtil.setStyleLayerZoomRange(
this,
updateContent
)
break
// 更新所有子图层
case 'setStyleLayer':
ArcGISVectorTileLayerUtil.updateStyleLayer(this)
break
// 删除子图层
case 'deleteStyleLayer': {
ArcGISVectorTileLayerUtil.updateStyleLayer(this)
break
}
default:
break
}
}
}
}
return Promise.resolve(this)
}
}
export default ArcGISVectorTileLayerView