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: 再生速度変更時