トップ地図アプリMap > バス路線図

バス路線図

はじめに

バス時刻表は現時点では独自のバス時刻ファイルが存在するバス停に限定されるが、 バス路線図はOSMデータのみから動作するものであり、全国一律である。

ある場所を表示している状態で、地図上のバス停アイコンをタップすると、 そのバス停を利用する全路線ボタンがスマホ画面下部にポップアップ表示される。 路線数が多い場合は横スクロールで全路線が確認できる。

元々バス路線は細い青線で表示されているが、この段階で該当路線だけ太い青線で表示される。

路線ボタンをタップすると、そのバス路線だけ太い赤線で表示される。 zoom値を下げるとどこからどこまでのバス路線かを確認できる。

現在のバス路線の仕様は上記の通りであるが、実装はそれなりに手間がかかる。 OSMバイナリレコードにも深く関係する。現在は、路線別路線レコード、路線別バス停レコードとしている。

例えば往復合わせて6路線あれば、道路レコード以外に6つのバス路線レコードがある。 また、本来の往復二つのバス停レコード以外に6つの路線別上下別バス停レコードがある。

したがって、レコードは全体で7倍に膨れ上がる。

このようなレコードの重複を避け、一つのレコードに集約することも可能であり、 その方がボス路線表示プログラムも簡単になる可能性がある。 しかし、それにはOSMバイナリレコードの仕様を変更しなければならない。 例えば、bus_route という独自のタグを導入する。値は路線名として、複数の場合 「;」区切りとするか、 または bus_routeタグは一つのレコードに複数あってもよい仕様とする。

このように変更する場合、OSMParserの負担が少し増える。スマホ側の負担は多少軽くなるであろうが、 全体的には、時間をかけてよく練る必要がある。

とりあえずは、地図アプリGISのプログラムを移植してみて、将来方向も探りたい。

プログラム

バス路線表示のトリガー

バス停アイコンはボタンではない。画面タッチに過ぎないので、Map#onTouchEvent で検出する。

バス路線データの抽出

zoom を下げたとき、広範囲のバス路線データが必要となるため、レンダリングとは別に、 バス路線データだけを抽出しておく。

移植記録

一部のプログラムをコピーした段階であるが、GIS と Map では違いがあるため、かなり修正せざるを得なかった。 デバッグに手間取るようならば、再考が望ましいであろう。

20230419 バス路線ボタンポップアップ

まず、バス路線ボタンポップアップ表示まではおおきな問題はなかった。

20230419 バス路線強調表示

該当バス路線を太い青線で描画するのも問題なかった。

20230419 選択バス路線赤線表示

これも問題なかった。パフォーマンス上は地図のレンダリングとバス路線は層を分けて、 レンダリングのやり直しが要らない方が望ましいが、プログラム的には大きな変更となる。 通常の描画が重くなる可能性もある。プログラムがシンプルになることが確かでない限り、 現状のプログラムでいいだろう。

実行結果

京都駅近辺で路線4、17、205 が通るバス停をクリックして、路線205を選択して、 全体が見えるように zoom を小さくしたものである。

実用上のニーズは小さいが、必要とあれば、進行方向を矢印で示してもよい。行きと帰りが同じ場合には → と ← が適当な位置に描画されることでいいだろう。 道路の一方通行の矢印と同じ方法で描画すればよい。