RouteReplay コンポーネント
ルートリプレイの表示と制御を行うための主要な React コンポーネントです。
tsx
import { RouteReplay, RouteReplayHandle } from 'route-replay-googlemaps-react';
import type { RouteInput, PlayerOptions, PlayerEventMap } from 'route-replay-googlemaps-core';
import { useRef, useState, useEffect } from 'react';
function MyComponent() {
const [mapInstance, setMapInstance] = useState<google.maps.Map | null>(null);
const replayHandleRef = useRef<RouteReplayHandle>(null);
const routeData: RouteInput = [/* ... */];
return (
<>
<div id="map"></div>
{mapInstance && (
<RouteReplay
ref={replayHandleRef}
map={mapInstance}
route={routeData}
autoFit={true}
initialSpeed={2}
cameraMode="ahead"
markerOptions={{ /* ... */ }}
polylineOptions={{ /* ... */ }}
onFrame={(payload) => console.log('Frame:', payload.progress)}
onStart={() => console.log('Started')}
onPause={() => console.log('Paused')}
onFinish={() => console.log('Finished')}
onError={(payload) => console.error('Error:', payload.error)}
/>
)}
<button onClick={() => replayHandleRef.current?.play()}>Play</button>
</>
);
}
Props
コンポーネントは以下の Props を受け取ります。
map
- 型:
google.maps.Map
- 必須:
true
リプレイを表示する GoogleMaps インスタンス。
route
- 型:
RouteInput
- 必須:
true
表示するルートデータ。RoutePoint[]
または { [trackId: string]: RoutePoint[] }
の形式です。 詳細は RouteInput
を参照してください。
ref
- 型:
React.Ref<RouteReplayHandle>
- 必須:
false
プレイヤーを外部から制御するための Ref。RouteReplayHandle
のメソッド(play
, pause
など)にアクセスできます。 詳細は RouteReplayHandle
を参照してください。
オプション Props
コアライブラリの createPlayer
関数のオプション (PlayerOptions
) と同じオプションを Props として渡すことができます。 詳細は OverlayOptions
を参照してください。
主なオプション:
autoFit?: boolean
: ルート全体がマップに収まるように自動調整するかどうか (デフォルト:true
)initialSpeed?: number
: 初期の再生速度 (デフォルト:1
)cameraMode?: CameraMode
: 初期のカメラモード (デフォルト:"center"
)markerOptions?: google.maps.MarkerOptions | ((trackId: string) => google.maps.MarkerOptions)
: マーカーのオプション、またはトラックIDごとにオプションを返す関数。polylineOptions?: google.maps.PolylineOptions | ((trackId: string) => google.maps.PolylineOptions)
: ポリラインのオプション、またはトラックIDごとにオプションを返す関数。loop?: boolean
: 再生をループするかどうか (デフォルト:false
)defaultMarkerIcon?: string | google.maps.Icon | google.maps.Symbol
: デフォルトのマーカーアイコン。
イベントハンドラ Props
プレイヤーのイベントに対応するコールバック関数を Props として渡すことができます。 イベントペイロードの詳細は Events
を参照してください。
onFrame?: (payload: PlayerEventMap['frame']) => void
: フレーム更新時onStart?: (payload: PlayerEventMap['start']) => void
: 再生開始時onPause?: (payload: PlayerEventMap['pause']) => void
: 一時停止時onSeek?: (payload: PlayerEventMap['seek']) => void
: シーク時onFinish?: (payload: PlayerEventMap['finish']) => void
: 再生終了時onError?: (payload: PlayerEventMap['error']) => void
: エラー発生時onDurationChange?: (payload: PlayerEventMap['durationchange']) => void
: 総再生時間の変更時onStateChange?: (payload: PlayerEventMap['statechange']) => void
: プレイヤーステート変更時onCameraModeChange?: (payload: PlayerEventMap['cameramodechange']) => void
: カメラモード変更時onSpeedChange?: (payload: PlayerEventMap['speedchange']) => void
: 再生速度変更時