概要
- OsmAnd はターンバイターンで事前に決めたルートをナビゲーションできる現状でほぼ唯一のアプリケーション
- OSS なため挙動が謎ならコード読めばいい安心感がある
- 普通のプロダクトだとカスタマイズできないことがカスタマイズできる安心感がある
Google Maps で自転車ルートナビゲーションは辛い
Google Maps は日本ではそもそも自転車ルートを検索できないので、使うとしたら徒歩ルートとして検索するしかない。しかし徒歩ルートはかなり曲がりまくる道をルートされるため、実際のところ移動という点ではあまり実用的ではない。
そして自転車で走りやすいルートというのは、なかなか難しいものがあるので、基本的に事前に調査をしてルートを決めてそのルート通りに走りたくなる。
Strava で事前に走行ルートを決める
Strava はPC版にルート作成機能があり、他人のも含めた走行データをもとにいい感じのルートを比較的簡単に作ることができる。経由地点を適当に設定すると、そこを経由しつつ、人気のあるルート・坂が少ないルートを自動で検索でき、完璧とは言えないが事前にルートを作る用途であれば十分使える。高低差のグラフが出るので、事前に辛さを検討しやすい。
しかし、作ったルートをアプリでターンバイターンナビゲーションする機能はなく、基本はマップ上にルートが表示されるだけである。また、別アプリで記録をとっている場合、Strava で記録を開始したくないので、そもそも使いたくない。
ということで、StravaからエクスポートできるGPXファイルをGoogle Mapsに取りこんでナビ…… としたいところだけど、Google Maps はグーグルの提案する道しか案内できないため、この用途では使えない。
一応、GPXファイルを変換して、マイマップとしてGoogle Mapsに取りこんでルートを表示することはできる。しかし、表示できるだけなので、ルートを確認するときは止まって端末のロックを解除して… という操作が必要になり、かなりだるい。というかルート表示するだけなら、前述の通りStravaのアプリでもできる。
OsmAnd でルートに沿ったナビゲーション
で、やっとタイトルのOsmAndがでてくる。
http://osmand.net/ Open Street Map を利用した Android 向けのマップアプリで、有料版もあるけど、開発がオープンになっており、あまり商売気はない。有料版も買いきりタイプでそんなに高額ではない。有料版というか寄付バージョンというおもむき。
セットアップ
まず地域データをダウンロードする必要がある。Japan Kanto (など地域ごとにある) の地図をダウンロードしておく。音声データは、ダウンロード可能になっているものは現状ではかなり難があるのでダウンロードしなくてよい (後述)
ダウンロード画面はなんかバギーなので、一回操作したらダウンロードが終わるまでしばらく待ったほうが良い。基本地図と含めて300MB ぐらいダウンロードが必要だけど、向こうの回線がそれほど早くないみたいであまり高速には落ちてこない。
2.0.1 には地図上の日本語を正しく表示できないバグがあるみたいだけど、そのうち直るらしいので気にしない。
GPX ファイルの配置
.gpx ファイルを Android File Transfer で内部ストレージ→ /osmand/tracks/ 以下に保存する。
マップ画面のナビボタンをタップして、自転車を選び、設定アイコンをタップする。いろいろオプションが表示されるが、下のほうに「GPXルート:無し」となっているので、設定してやる。
そうするとルートが表示され、オプションが更新されるので、適当に設定して「出発」をタップすれば良い。
「GPXルートを反転」は帰りルートだろうけど、「経路全体に沿って通る」はいまいちよくわかってない。FAQ によると、終了点付近にいても開始点から沿うようになってる?
音声ナビのTTSファイル
TTS(Text to Speech)は自体は Android システムのエンジンが使われる。これはシステム側の「設定」→「言語と入力」→「テキスト読み上げの出力」から設定できる。
Google Maps が入っていれば Googleテキスト読み上げエンジンが入っているはずなので、これを設定しておけばとりあえず間違いない。
Pico TTS というのがデフォルトで入っているが、これは日本語に対応していないので設定しておくとハマる。
好みで KDDILABAS N2 TTS とかにしてもいいと思うけど、明瞭度が低くてナビゲーション向きの声ではなかった (良くいうと落ち着きがある声質)。
以下の内容は古くなっています。現在はプルリクエストが取り入れられ、その後他のコントリビュータによってより自然な日本語に修正されたため、何もしなくとも適切にナビゲーションされるはずです。
OsmAnd でダウンロードできる日本語TTSは、ローマ字をTSSエンジンに送るような形になっており、かなり発音がおかしいし、ちょいちょいローマ字をそのまま読みあげたりする。PR は送ったが、とりあえず自力でTTSファイルを作ってインストールする。
これを Android File Transfer で、「内部ストレージ」→「osmand/voice/ja-native-tts/_ttsconfig.p」として保存する。
Android File Transfer で osmand とか voice とか、ディレクトリが見えない場合、ちょっと面倒なことしたりする必要がある。
ちなみにこの TTS ファイルは Prolog のプログラムになっている(難しい)。
Microsoft Maps を表示させる
デフォルトはオフラインのベクターマップだが、結構表示にもたつきがあるのと、レンダリングが綺麗とはいえないので、Microsoft Maps を表示するようにしてみる。(なおルート検索のためにもベクターマップは必ず必要)
オンラインマッププラグインを有効にして、
- 「タイルマップ選択」
- 「リスト以外のものをインストール」
- 「Microsoft Maps」
とやると Microsoft Maps を使うことができる。しかし、英語リソースがダウンロードされてしまうので、
- 「マップの定義と編集…」
- 「既存データから選択…」→「Microsft Maps」
- 「URL」におもむろに Java っぽいコード (正確にはBeanShell)があらわれるので、がんばって return しているとことを探して、クエリパラメータに mkt=ja-jp がつくようにする。
とやると、日本語のマップデータがダウンロードできる。
高解像度データではないのですこしボヤけるが、非常にみやすいマップになって良い。欠点はいちいちロードが走ることだろうけど、最悪オフラインマップがあると思うと気が楽ですね。