JSMAP2地図にトンネル表示が追加
JSMAP2地図に、トンネル表示を追加しました。対象は、鉄道と高速道路、国道です。(投稿時点では、広尾エリアのみです。今後、順次公開していきます。道南、道央版を5月5日ころまでにリリース)
既にブラウザやさっぽろ周辺マップでJSMAP2地図をご覧になっている方は、前の地図がキャッシュに残っている可能性が高いので、一度キャッシュをクリアしてください。
JSMAP2地図は当初、国土地理院の基盤地図情報から地図データを取得していました。その後、国土基本情報20万地図から取得した後、今はOpenStreetMapの数値地図から取得しています。そのため、読み込み処理をその都度作成する必要がありました。そして、JSMAP2アプリケーションのトンネル表示は基板地図情報に対応したままになっていたため、OpenStreetMapを使う場合、トンネル表示ができませんでした。
OpenStreetMapの数値地図はXMLで記述されており、
<tag k="tunnel" v="yes"/>
の部分から、トンネルであるかを判定しています。当初はこのタグの設定があったりなかったりで使えなかったのですが、今使ってみると、ほぼ問題なく設定されているようです。XMLの表記はJSMAP2アプリケーションでも扱いやすくて、トンネル対応は容易に作成できました。ちなみに、JSMAP2アプリケーションはVisual Studio の C++/CLI フォームプロジェクトを採用しており、恐らく日本で使用しているのは私一人ではないでしょうか。トンネル部分の記述を抜粋してみました。
// トンネル部分は、少し明るいにしようと思う 2025/4/24
if (dorokukan_body_work->stHead->shubetsu3 == 1) {
wpen = gcnew System::Drawing::Pen(System::Drawing::Color::FromArgb(System::Math::Min(myconfig->keishadou_color_R + 128, 255), System::Math::Min(myconfig->keishadou_color_G + 128, 255), System::Math::Min(myconfig->keishadou_color_B + 128, 255)), (float)myconfig->ippandou_thin + 1);
}
else {
wpen = gcnew System::Drawing::Pen(System::Drawing::Color::FromArgb(myconfig->keishadou_color_R, myconfig->keishadou_color_G, myconfig->keishadou_color_B), (float)myconfig->keishadou_thin + 1);
}
C++/CLIは、これまたC++とは異なる変な言語で、フォームアプリケーション以外では使われていますが、.NETのフォームアプリではC#を使うのが普通で(.NETは昔の作成方法ですが)、よほどの変わり者でない限りC++/CLIは使わないと思います。でも、私はC#を断固として拒否しておりまして、波乱だったプログラム人生の象徴となっております。Androidもしぶしぶjavaを使っていますが、Kotlinはお断りです。融通が利かないのは治らずです。

冒頭で表示しているJSMAP2地図は、北海道で一番長い自動車トンネルである「えりも・黄金トンネル」部分を表示しています。黄金道路は当初、砂利道である上にトンネル部分が最低限にしか用意されておらず、襟裳岬に行くのは大変でした。波が高いと道路が海水を被るし、常にどこか崩れていて片側通行を余儀なくされたものです。今は大部分がトンネル部分になり、快適な走行ができるようになりました。しかしながら、釣り場へのアクセスは不便になったとも言えますね。
トンネル部分が分かるようになったことで、リアルタイムで現在位置を確認する場合に役立つと思います。高速道路はトンネルが多いですし鉄道も多めなので、トンネルに近づいたことを知るには便利でしょう。