InteractionSplit

분할 기능을 위한 사용자 입력(마우스/키보드) 클래스.
User input (mouse/keyboard) class for object split.

new Ditap.InteractionSplit(viewer)

Name Type Description
viewer DitapViewer 사용할 Ditap Viewer 인스턴스.
The DitapViewer instance to use.
Example:
// 샌드캐슬 예제 'DiTAP - Split' 참조

const viewer = new Ditap.DitapViewer("ditapContainer", {
  baseLayerPicker: true,
});

// InteractionSplit 생성
const interactionSplit = new Ditap.InteractionSplit(viewer);

// interactionSplit handler 실행 버튼
Sandcastle.addToolbarButton("Split On", async () => {
  // interactionSplit handler 실행
  interactionSplit.on(viewer);

  // AnalysisSplit 인스턴스 생성
  const analysisSplit = interactionSplit.analysisSplit;

  // 뷰어에 추가할 데이터 생성
  // 1. 정사영상
  // 정사영상 인스턴스 생성
  const imagery = new Ditap.NationwideOrthoImageryProvider();

  // 2. 모델
  // 모델 좌표
  const modelPosition = new Ditap.Cartesian3.fromDegrees(
    126.9782349646649,
    37.56671536989183,
    100
  );

  // 모델 행렬 생성
  const modelMatrix = Ditap.Transforms.eastNorthUpToFixedFrame(
    modelPosition
  );

  // 모델 인스턴스 생성
  const model = await Ditap.Model.fromGltfAsync({
    id: "model_01",
    url: "../../SampleData/models/GroundVehicle/GroundVehicle.glb",
    modelMatrix: modelMatrix,
    minimumPixelSize: 128,
  });

  // 분할된 뷰어에 생성된 인스턴스 추가
  // 우측 분할 뷰어에 정사영상 추가
  const rightImagery = analysisSplit.addImagery(
    Ditap.SplitDirection.RIGHT,
    imagery
  );

  // 좌측 분할 뷰어에 모델 추가
  const leftModel = analysisSplit.addModel(
    Ditap.SplitDirection.LEFT,
    model
  );

  // 모델 위치로 카메라 이동
  viewer.camera.flyTo({
    destination: Ditap.Cartesian3.fromDegrees(
      126.9782349646649,
      37.5645,
      150
    ),
    duration: 2,
    orientation: {
      heading: Ditap.Math.toRadians(0),
      pitch: Ditap.Math.toRadians(-10),
      roll: 0,
    },
  });
});

// interactionSplit handler 종료 버튼
Sandcastle.addToolbarButton("Split Off", () => {
  // interactionSplit handler 종료
  // interactionSplit.off() - 모든 분할 뷰어에 생성된 객체가 제거됩니다.
  // interactionSplit.off(Ditap.SplitDirection.LEFT) - 좌측 분할 뷰어에 생성된 객체가 유지됩니다.
  // interactionSplit.off(Ditap.SplitDirection.RIGHT) - 우측 분할 뷰어에 생성된 객체가 유지됩니다.
  // interactionSplit.off(Ditap.SplitDirection.BOTH) - 좌측, 우측 모든 분할 뷰어에 생성된 객체가 유지됩니다.
  interactionSplit.off();
});

Members

readonly analysisSplit : AnalysisSplit

분할을 위한 분석 기능 클래스.
Analysis feature class for object deletion.

readonly isOn : boolean

핸들러 비/활성화.
Check handler enable/disable status.

viewer : DitapViewer

사용할 Ditap Viewer 인스턴스.
The DitapViewer instance to use.

Methods

createTouch()

터치 기능 활성화.
Enable touch functionality.

destroy()

객체의 리소스 파괴.
Destroy resources held by this object.

off(splitDirection)

분할 핸들러 종료.
End split handler.
Name Type Description
splitDirection SplitDirection 파라미터가 없을 경우, 분할 뷰어에 생성된 모든 객체가 제거됩니다.
SplitDirection 파라미터를 전달하면 해당 방향의 분할 뷰어 위치에 생성된 객체가 유지됩니다.
When no parameter is provided, all objects created within the split viewer will be removed.
Passing the SplitDirection parameter will maintain the objects created at the position of the split viewer in the specified direction.

on()

분할 핸들러 실행.
Execute split handler.

toggle()

InteracionSplit on/off 기능.
Function on and off.