地図サービス切り替えツールOpenSwitchMaps
OpenStreetMapもGoogleマップも地理院地図も切り替えながら使いたいのでブラウザ拡張機能を作ってみた話です
注意: ここで紹介するツールを使うとGoogleマップ等から簡単にOSMの編集にジャンプすることができますが、Googleマップ等を参考にしてOSMを編集することは禁止ですのでご注意ください。
話のきっかけ
これはOpenStreetMap Advent Calendarに投稿する記事なので、もちろんOSMに関する内容になるはずです。ですが普段使いではGoogleマップに浮気したくなることもあるわけです。地理院地図もなんだか気になったりする日も時にはあります。
じゃあ、OSMを閲覧しながら、Googleマップに切り替えたり、地理院地図に切り替えたり自由に地図を渡り歩けたら最高ですね。その時々で最適な地図サービスを選択できるわけです。
ブラウザ拡張機能を作ってみた
で、作ってみました。
動画のほうがなんとなく機能が分かるかもしれません。ちょっと古いバージョンですが機能は変わりませんので参考にご覧ください。
https://www.youtube.com/watch?v=tO87xkc7VaI
主な機能は以下の通りです。
- 任意の地図サービスを開いて、メニューから別の地図サービスを選択すると、同じ場所・同じズームレベルで地図を切り替えてくれます。
- OSMの品質チェックサービスにも対応しています。つまり、OSMを閲覧している最中に品質が気になる箇所が見つかったらすぐにOsmoseなどにジャンプしてチェックすることが可能です。
- 地図サービスだけでなく、いろんな位置情報付きサービスにも対応しています。ゲーム、天気、交通、衛星センシング、地質、古地図など。OSMを閲覧しながらその場所のIngressの戦況をチェックしたり人工衛星の運航を楽しんだりすることができます。位置情報サービスのハブになれたらいいなぁと思ってます。
ChromeとFirefoxに対応しています。インストールはこちらからどうぞ。
- Chrome: https://chrome.google.com/webstore/detail/openswitchmaps/cfkddjlocfecchnemnnmmpdjcohgmkij
- Firefox:https://addons.mozilla.org/ja/firefox/addon/openswitchmaps/
データもコードもオープンに
やっていることはというと、URLに含まれている座標値を置き換えているだけです。
たとえばGoogleマップのURLは
https://www.google.com/maps/@[緯度],[経度],[ズーム]z
という形式です。OSMのURLは
https://www.openstreetmap.org/#map=[ズーム]/[緯度]/[経度]
という形式です。ですので、
[, lat, lon, zoom]= url.match(/google.*maps.*@(-?\d[0-9.]*),(-?\d[0-9.]*),(\d{1,2})[.z]/));
window.location.href = https://www.openstreetmap.org/#map=' + zoom + '/' + lat + '/' + lon
みたいな感じでURLを変換するとGoogleマップからOSMに切り替えることが可能です。
OSMをやっているのですからやっぱりオープン化を進めないと、と思ったわけではありませんが、プログラムのバージョン管理をやってみたかったのでGithubで公開してみました。
すると、この地図追加して!ってリクエストが来たり、さらには、Firefoxで使えるように機能追加したよ!なんて連絡が入るようになりました。OSSの世界ってすごいですね。プルリクエスト送ってくれる人は神です。
現状の問題…?
Githubで公開してしまいましたが、そもそもプログラマではないので根本的な知識が足りていません。
- もうプログラムの中身は自分で理解できてません!申し訳ない!バグがあってもデバッグできないかも!
- Githubの使い方も分かってません。プルリクエストが来たら、どうやってチェックして、どうやって大元のプログラムに組み込んだらいいの?などなど手探りしながらやってます。Githubの使い方解説サイトは全部コマンドラインを使って説明しているので、デスクトップ版ユーザは困る…
今後の予定
- スマホに対応したいなぁ…と思っているのですが予定は未定。SafariやモバイルChromeは拡張機能がないみたいなので、Bookmarkletバージョンを考えたりしてます。実は開発当初はデスクトップ版もBookmarkletで開発していました。ですが、対応サービスを拡大するにつれてBookmarkletの制限がネックになり破綻。ファイルサーバに外部Javascriptファイルを置けば上手くいく可能性もあるが、個人用のファイル共有サービスに多くの人がアクセスするファイルを置くわけにもいかず。開発はストップ。→スマホやタブレットでも使えるWeb+Bookmarklet版を作りました。
- 起動一回目にメニューを開くのに時間がかなりかかる。各サービスのアイコン取得に時間がかかっているような気がするが、ボトルネックはどうやって調べたらいい?
- 地図サービスの追加要望は随時受け付けています。
ん~。OpenStreetMapとの関係が薄い話になってしまいました。このツールがOSM編集の促進に繋がったらいいなと思って作った側面はあるのでご勘弁を。