# MapGIS Client for JavaScript API

Cesium MapboxGL Leaflet OpenLayers
API文档

    class Cesium3DTilesLayerUtil {}

    Cesium3DTilesLayerUtil.addCesium3DTilesLayer = function (
      layer,
      mapView,
      callback
    ) {
      // 添加3DTiles
      layer.layerIndex = mapView.scene.layers.appendCesium3DTilesetLayer(
        layer.url,
        {
          // 是否显示3d tileset模型
          show: layer.visible,
          // 最大屏幕空间误差
          maximumScreenSpaceError: layer.maximumScreenSpaceError,
          // 是否自动跳转到模型的位置
          autoReset: layer.autoReset,
          // 跳转时间(秒)
          duration: layer.duration,
          // 是否显示外包盒
          debugShowBoundingVolume: layer.debugShowBoundingVolume,
          // 设置数据请求头
          headers: layer.headers,
          // 回调函数，加载完成后返回3DTileset图层
          loaded(tileSet) {
            tileSet.id = layer.id
            callback(tileSet)
          }
        }
      )

      // 启用高亮
      if (layer.enableHighLight) {
        const _handler = new Cesium.ScreenSpaceEventHandler(mapView.scene.canvas)
        let _lastFeature
        _handler.setInputAction(function onLeftClick(event) {
          // 点选要素
          const pickedFeature = mapView.scene.pick(event.position)
          if (pickedFeature) {
            // 恢复上一个的颜色
            if (_lastFeature && _lastFeature.content.tile.originalColor) {
              _lastFeature.content.tile.color = Cesium.Color.clone(
                _lastFeature.content.tile.originalColor
              )
              _lastFeature.content.tile.originalColor = undefined
            }
            // 保存原有颜色
            pickedFeature.content.tile.originalColor = Cesium.Color.clone(
              pickedFeature.content.tile.color
            )
            // 赋予要素颜色
            const _color = layer.highLightColor.toCesiumRGB()
            pickedFeature.content.tile.color = new Cesium.Color(
              _color.red,
              _color.green,
              _color.blue,
              _color.alpha
            )
            // 备份本次选择的模型
            _lastFeature = pickedFeature
            if (
              layer.highLightCallback &&
              layer.highLightCallback instanceof Function
            ) {
              layer.highLightCallback(_lastFeature.content.tile, event.position)
            }
          }
        }, Cesium.ScreenSpaceEventType.LEFT_CLICK)
      }
    }

    /**
     * 移除图层
     * @param {Layer} layer 基本图层对象
     * @param {Viewer} sceneView Cesium的视图对象
     * */
    Cesium3DTilesLayerUtil.removeLayer = function (layer, sceneView) {
      sceneView.scene.layers.removeCesium3DTilesetLayerByID(layer.layerIndex)
    }

    export default Cesium3DTilesLayerUtil

构造函数
成员变量
方法
事件