Function setRailwayShapeCondition

  • 鉄道路線形状のオプションを設定する — 詳細な使用例

    鉄道路線を路線カラーでベクター描画します。 mocha の /operation/train から取得した運行情報リストを渡すことで、 運行状況(遅延・運転見合わせなど)を路線の色に反映できます。 クリック・ホバー・マウスエンター・マウスリーブの各インタラクションに対応しています。

    RailwayShapeCondition コンストラクタ引数 (RailwayShapeInitOptions)

    プロパティ 説明
    zoomRange ZoomRange 表示するズームレベル範囲
    operationInfoItems JsonObject[] mocha /operation/train から取得した運行情報リスト
    accentKeyMapper Map<string, 0|1|2|3|4|5> 運行情報テキストと強調色の対応(0=無色 1=緑 2=黄 3=橙 4=赤 5=黒)
    appearanceCallback (data, zoomLevel) => RailwayShapeAppearance 路線ごとに見た目を動的に制御するコールバック

    appearanceCallback 戻り値 (RailwayShapeAppearance)

    プロパティ 説明
    color Color 線の色
    weight number 線の太さ
    isAccented boolean 運行情報区間を強調するか(デフォルト true
    isStriped boolean 縞模様を描画するか(デフォルト true
    isTopped boolean 最前面に描画するか(デフォルト false
    isVisible boolean 線を描画するか(デフォルト true

    コールバック引数 (RailwayShapeData)

    プロパティ 説明
    companyId string 会社ID
    companyName string 会社名
    rellineId string 実路線ID
    rellineName string 実路線名
    rellineColor string 実路線色(#RRGGBB
    lineType number 路線種別
    operation RailwayOperationData[] 運行情報(任意)

    Returns void

    Note

    • 各コールバックのシグネチャは (event: MouseEvent, data?: RailwayShapeData) => void です。 event.clientX / event.clientYmap.getLatLngFromClientCoord に渡すと緯度経度が取れます。
    • appearanceCallback を使うと路線ごとに色・太さ・可視性をカスタマイズできます。 setRailwayShapeCondition に渡した後、外部状態が変化した場合は map.forceMapUpdate() を呼んで再描画してください。
    • conditionundefined を渡すと路線形状が非表示になります。
    • 各コールバックに undefined を渡すと解除できます。

    Warning

    • operationInfoItems を渡す場合は mocha /operation/train の応答 items 配列をそのまま渡してください。
    • appearanceCallbackoperationInfoItems/accentKeyMapper を同時に設定した場合、appearanceCallback が優先されます。

    Example: 鉄道路線形状を表示し、クリック・ホバー時に路線名を取得する

    import * as GIA from '@ntj/gaia';

    // 路線形状の表示条件を設定
    map.setRailwayShapeCondition(new GIA.value.RailwayShapeCondition({
    zoomRange: new GIA.value.ZoomRange(10, 22),
    }));

    // クリックコールバック(第1引数は MouseEvent、第2引数が路線データ)
    map.setRailwayShapeClickCallback((event, data) => {
    if (!data) return;
    console.log('クリックされた路線:', data.rellineName);
    const latlng = map.getLatLngFromClientCoord(new GIA.value.Point(event.clientX, event.clientY));
    console.log('クリック座標:', latlng);
    });

    // ホバーコールバック(マウス移動中に連続発火)
    map.setRailwayShapeHoverCallback((event, data) => {
    if (data) console.log('ホバー中:', data.rellineName);
    });

    // マウスエンター(路線への進入)
    map.setRailwayShapeMouseEnterCallback((event, data) => {
    if (data) console.log('エンター:', data.rellineName);
    });

    // マウスリーブ(路線からの離脱)
    map.setRailwayShapeMouseLeaveCallback((event, data) => {
    if (data) console.log('リーブ:', data.rellineName);
    });

    Example: mocha 運行情報を路線カラーに反映し、appearanceCallback で可視性を制御する

    import * as GIA from '@ntj/gaia';

    // mocha /operation/train から運行情報を取得
    const res = await mochaClient.get('/operation/train');
    const operationInfoItems = res.items;

    // 運行支障のある路線を赤く強調するカスタムコールバック
    const appearanceCallback: GIA.types.RailwayShapeAppearanceCallback = (data, zoomLevel) => ({
    color: new GIA.value.Color(data.rellineColor),
    weight: zoomLevel >= 14 ? 4 : 2,
    isAccented: true,
    isStriped: true,
    isTopped: false,
    isVisible: true,
    });

    map.setRailwayShapeCondition(new GIA.value.RailwayShapeCondition({
    zoomRange: new GIA.value.ZoomRange(10, 22),
    operationInfoItems,
    appearanceCallback,
    }));

    // 外部状態が変わったら forceMapUpdate で再描画
    // map.forceMapUpdate();

    See