1000以上のルートを、ユーザごとの地図に投影する方法(1) - はじめに
最近日記が続けられているので、技術的なネタも書いてみようかと思います。
一気に書くのも大変ですし、複数回に分けて書きます。
今のヤマレコの機能として、「地図上にルートをクリックして残す」
というものがあります。
そうすると「自分が行ったルートで地図が埋まっていく」という
楽しみを得るために、過去に行ったルートを1枚の地図上に投影したい
というニーズが出てきました。
■要件:
地図上にルートを表示したい。表示の集計方法は
・システム全体
・グループごと
・ユーザごと
の3種類、現時点で言うとシステム全体(1)+グループ数(85)+ユーザ数(1800)、
つまり2000弱種類のルート地図を表示する必要がある。
■方法検討:
方法としては、クライアント側で描くのか・サーバ側で描くのかの2択かと。
方法1)ポイント数を間引きして、Javascriptのpolylineで線画
⇒ 作成してみましたが、表示に数分かかってドラッグできないぐらい重いし、
データは間引きしているので不正確になるし、ちょっと使えそうにないです。
方法2)オーバーレイの機能を使う
⇒ Googleマップだけが実現可能。
地図画像を各縮尺ごとに用意して、Googleの地図の上に重ね合わせて
ルートを表示する。
過去にこれなら動作することを確認済み。
■方式決定:
・利用者の立場から考え、体感速度を優先して2で考える。
■クリアすべき課題:
・課題1:地図データの画像数が膨大になる(HDD容量)。
・課題2:作成時間がかかりすぎる影響をどう回避するか。
■作成手順:
- Google Mapの仕様確認 & タイル画像の用意(線画方法)
- ルートの各座標位置から、タイル画像のピクセル位置特定
- 複数のタイル画像をまたがる線画
- Google Map上に作成したオーバレイ用のタイル画像を表示
- 画像の更新/作り直しのスクリプト作成