MeasurePlugin で読み込み済みシーンを計測します。クイックスタート ではメートル単位・小数点以下 2 桁で登録します。PanoMeasurePlugin とは別のコントローラーで、メソッドは互換ではありません。
操作を接続する
import type { MeasurePlugin } from '@realsee/dnalogel'
type MeasureController = ReturnType<typeof MeasurePlugin>
export function bindMeasurement(
measure: MeasureController,
report: (result: { reason: string; pointCount: number }) => void
) {
const stop = measure.on('measureEnd', (reason, points) => report({ reason, pointCount: points.length }))
return {
start() { measure.measure() },
finish() { measure.endMeasure() },
undo() { measure.undo() },
cancel() { measure.cancel() },
metric() { measure.setUnit('m'); measure.setPrecision(2) },
imperial() { measure.setUnit('ft'); measure.setPrecision(8) },
clear() { measure.clear() },
dispose() { stop(); measure.cancel() }
}
}シーンの準備完了後に bindMeasurement(result.measure, report) を呼び、返されたメソッドを開始・完了・取り消し・キャンセル・単位・消去のボタンに接続します。report は終了理由と点の数を受け取り、保存済みの計測結果を表すものではありません。
イベントは measure.on('measureEnd', ...) で購読します。PanoTagPlugin と異なり .hooks を使いません。
精度と完了を理解する
| 設定 | 意味 |
|---|---|
単位 m、精度 2 | 長さは小数点以下 2 桁 |
単位 ft、精度 8 | 長さは 1/8 インチ精度 |
| 面積表示 | 小数点以下 2 桁固定 |
終了理由には enter、escape、polygon、mode_change、pano_move、floor_change、points_insufficient、external があります。終了しても有効な多角形や保存済み結果とは限りません。サーバーに点を保存する前に、製品として受け入れる結果を定めてください。
確認する
計測を開始し、点の追加、取り消し、完了を試します。キャンセル、パノラマ・モード変更も試し、再作成せず単位を切り替えます。表示と report が操作に一致することを確認し、最後に接続とシーンを破棄します。
自分の撮影シーンで挙動と精度を確認してください。この例は測量精度を保証しません。
