mapgis-3d-projector-manager

# 属性

# vueKey

  • 类型: String
  • 可选
  • 非侦听属性
  • 默认值: default
  • 描述: mapgis-web-scene 组件的 ID,当使用多个 mapgis-web-scene 组件时,需要指定该值,来唯一标识 mapgis-web-scene 组件,同时 mapgis-web-scene 插槽中的组件也需要传入相同的 vueKey,让组件知道应该作用于哪一个 mapgis-web-scene。

# vueIndex

  • 类型: Number
  • 可选
  • 非侦听属性
  • 默认值: (Math.random() * 100000000).toFixed(0)随机计算值
  • 描述: 当 mapgis-web-scene 插槽中使用了多个相同组件时,例如多个 mapgis-3d-igs-doc-layer 组件,用来区分组件的标识符。

# modelUrl

  • 类型: String
  • 必选
  • 侦听属性
  • 描述: 相机模型路径
  • 默认值:

# modelOffset

  • 类型: Object
  • 可选
  • 侦听属性
  • 描述: 相机模型朝向偏移量
  • 默认值: { headingOffset: -90, pitchOffset: 0, rollOffset: 0 }

# modelScale

  • 类型: Number
  • 可选
  • 侦听属性
  • 描述: 相机模型尺寸比例
  • 默认值: 1

# maxProjected

  • 类型: Number
  • 可选
  • 侦听属性
  • 描述: 最大投放数
  • 默认值: 10

# hideVPInvisible

  • 类型: Boolean
  • 可选
  • 侦听属性
  • 描述: 当摄像头不在当前视图范围内,隐藏投影;参数设置后,对新投放或者重新投放的对象有效,对于已经投放的对象无效
  • 默认值: false

# projectorOverlayLayerList

  • 类型: Array
  • 可选
  • 侦听属性
  • 描述: 视频投放图层数组
  • 默认值:
[
    {
      id: "123-345-567-789",
      name: "test",
      projectorList: [
        {
          id: "987-765-543-321",
          name: "testProjector1",
          description: "",
          isProjected: false,
          params: {
            projectorType: "video",
            imgUrl: "",
            videoSource: {
              protocol: "m3u8",
              videoUrl:
                "http://192.168.91.123:10008/record/video1/20211221/out.m3u8",
            },
            cameraPosition: {
              x: 114.401228136856,
              y: 30.467421377675457,
              z: 84.94989410478892,
            },
            orientation: {
              heading: 6.053866507322313,
              pitch: -73.6,
              roll: 354.1,
            },
            hFOV: 34.6,
            vFOV: 18.9,
            hintLineVisible: true,
          },
        },
        {
          id: "987-765-543-123",
          name: "testProjector2",
          description: "",
          isProjected: false,
          params: {
            projectorType: "video",
            imgUrl: "",
            videoSource: {
              protocol: "m3u8",
              videoUrl:
                "http://192.168.91.123:10008/record/video2/20211221/out.m3u8",
            },
            cameraPosition: {
              x: 114.40088870656619,
              y: 30.467421563975016,
              z: 84.91172691510191,
            },
            orientation: {
              heading: 359.89407747239846,
              pitch: -74.2,
              roll: 0,
            },
            hFOV: 33.1,
            vFOV: 19.2,
            hintLineVisible: true,
          },
        },
        {
          id: "987-765-543-124",
          name: "testProjector3",
          description: "",
          isProjected: false,
          params: {
            projectorType: "video",
            imgUrl: "",
            videoSource: {
              protocol: "m3u8",
              videoUrl:
                "http://192.168.91.123:10008/record/video3/20211221/out.m3u8",
            },
            cameraPosition: {
              x: 114.4006886798949,
              y: 30.467287432107295,
              z: 85.46751512564336,
            },
            orientation: {
              heading: 271.628505216584,
              pitch: -78.4,
              roll: 359.3,
            },
            hFOV: 32.5,
            vFOV: 19,
            hintLineVisible: true,
          },
        },
      ],
    },
    {
      id: "567-789-123-345",
      name: "layer2",
      projectorList: [
        {
          id: "765-987-543-321",
          name: "layer2Projector1",
          description: "",
          isProjected: false,
          params: {
            projectorType: "video",
            imgUrl: "",
            videoSource: {
              protocol: "m3u8",
              videoUrl:
                "http://192.168.91.123:10008/record/video1/20211221/out.m3u8",
            },
            cameraPosition: {
              x: 114.401228136856,
              y: 30.467421377675457,
              z: 84.94989410478892,
            },
            orientation: {
              heading: 6.053866507322313,
              pitch: -73.6,
              roll: 354.1,
            },
            hFOV: 34.6,
            vFOV: 18.9,
            hintLineVisible: true,
          },
        },
        {
          id: "765-987-543-123",
          name: "layer2Projector2",
          description: "",
          isProjected: false,
          params: {
            projectorType: "video",
            imgUrl: "",
            videoSource: {
              protocol: "m3u8",
              videoUrl:
                "http://192.168.91.123:10008/record/video2/20211221/out.m3u8",
            },
            cameraPosition: {
              x: 114.40088870656619,
              y: 30.467421563975016,
              z: 84.91172691510191,
            },
            orientation: {
              heading: 359.89407747239846,
              pitch: -74.2,
              roll: 0,
            },
            hFOV: 33.1,
            vFOV: 19.2,
            hintLineVisible: true,
          },
        },
      ],
    },
]

# 方法

# putProjector

  • Description: 投放视频
  • Param: projector 投放视频参数对象

# cancelPutProjector

  • Description: 取消投放
  • Param: id 要取消投放视频的 id

# 事件

# @load

  • Description: 在 ProjectorManager 组件 加载完毕后发送该事件
  • Payload ProjectorManager 组件对象

# @unload

  • Description: 在 ProjectorManager 组件 销毁前发送该事件
  • Payload ProjectorManager 组件对象

# @update-config

  • Description: 在 增删改 projectorOverlayLayerList 时发送该事件
  • Payload 更新后的 projectorOverlayLayerList

# 示例

<template>
  <mapgis-web-scene style="height: 95vh">
    <mapgis-3d-scene-layer
      :autoReset="autoReset"
      :maximumScreenSpaceError="maximumScreenSpaceError"
      :url="m3dUrl"
    ></mapgis-3d-scene-layer>
    <mapgis-ui-card class="storybook-ui-card">
      <mapgis-3d-projector-manager
        :projectorOverlayLayerList="projectorOverlayLayerList"
        :modelUrl="modelUrl"
        :modelOffset="modelOffset"
        :maxProjected="maxProjected"
        :hideVPInvisible="hideVPInvisible"
      >
      </mapgis-3d-projector-manager>
    </mapgis-ui-card>
  </mapgis-web-scene>
</template>

<script>
export default {
  data() {
    return {
      m3dUrl: `http://${window.webclient.ip}:${window.webclient.port}/igs/rest/g3d/ZondyModels`,
      autoReset: true,
      maximumScreenSpaceError: 8,
      modelUrl: "./CesiumModels/Cesium_Camera.glb",
      modelOffset: { headingOffset: -90, pitchOffset: 0, rollOffset: 0 },
      maxProjected: 10,
      hideVPInvisible: false,
      projectorOverlayLayerList: [
        {
          id: "123-345-567-789",
          name: "test",
          projectorList: [
            {
              id: "987-765-543-321",
              name: "testProjector1",
              description: "",
              isProjected: false,
              params: {
                projectorType: "video",
                imgUrl: "",
                videoSource: {
                  protocol: "m3u8",
                  videoUrl:
                    "http://192.168.91.123:10008/record/video1/20211221/out.m3u8",
                },
                cameraPosition: {
                  x: 114.401228136856,
                  y: 30.467421377675457,
                  z: 84.94989410478892,
                },
                orientation: {
                  heading: 6.053866507322313,
                  pitch: -73.6,
                  roll: 354.1,
                },
                hFOV: 34.6,
                vFOV: 18.9,
                hintLineVisible: true,
              },
            },
            {
              id: "987-765-543-123",
              name: "testProjector2",
              description: "",
              isProjected: false,
              params: {
                projectorType: "video",
                imgUrl: "",
                videoSource: {
                  protocol: "m3u8",
                  videoUrl:
                    "http://192.168.91.123:10008/record/video2/20211221/out.m3u8",
                },
                cameraPosition: {
                  x: 114.40088870656619,
                  y: 30.467421563975016,
                  z: 84.91172691510191,
                },
                orientation: {
                  heading: 359.89407747239846,
                  pitch: -74.2,
                  roll: 0,
                },
                hFOV: 33.1,
                vFOV: 19.2,
                hintLineVisible: true,
              },
            },
            {
              id: "987-765-543-124",
              name: "testProjector3",
              description: "",
              isProjected: false,
              params: {
                projectorType: "video",
                imgUrl: "",
                videoSource: {
                  protocol: "m3u8",
                  videoUrl:
                    "http://192.168.91.123:10008/record/video3/20211221/out.m3u8",
                },
                cameraPosition: {
                  x: 114.4006886798949,
                  y: 30.467287432107295,
                  z: 85.46751512564336,
                },
                orientation: {
                  heading: 271.628505216584,
                  pitch: -78.4,
                  roll: 359.3,
                },
                hFOV: 32.5,
                vFOV: 19,
                hintLineVisible: true,
              },
            },
          ],
        },
        {
          id: "567-789-123-345",
          name: "layer2",
          projectorList: [
            {
              id: "765-987-543-321",
              name: "layer2Projector1",
              description: "",
              isProjected: false,
              params: {
                projectorType: "video",
                imgUrl: "",
                videoSource: {
                  protocol: "m3u8",
                  videoUrl:
                    "http://192.168.91.123:10008/record/video1/20211221/out.m3u8",
                },
                cameraPosition: {
                  x: 114.401228136856,
                  y: 30.467421377675457,
                  z: 84.94989410478892,
                },
                orientation: {
                  heading: 6.053866507322313,
                  pitch: -73.6,
                  roll: 354.1,
                },
                hFOV: 34.6,
                vFOV: 18.9,
                hintLineVisible: true,
              },
            },
            {
              id: "765-987-543-123",
              name: "layer2Projector2",
              description: "",
              isProjected: false,
              params: {
                projectorType: "video",
                imgUrl: "",
                videoSource: {
                  protocol: "m3u8",
                  videoUrl:
                    "http://192.168.91.123:10008/record/video2/20211221/out.m3u8",
                },
                cameraPosition: {
                  x: 114.40088870656619,
                  y: 30.467421563975016,
                  z: 84.91172691510191,
                },
                orientation: {
                  heading: 359.89407747239846,
                  pitch: -74.2,
                  roll: 0,
                },
                hFOV: 33.1,
                vFOV: 19.2,
                hintLineVisible: true,
              },
            },
          ],
        },
      ],
    };
  },
};
</script>