実録、ともおじちゃん

典型的な客先常駐型ソフトウェア技術者の13年の軌跡

Google Maps API:エンコード化ポリライン

2009年06月08日 | コンピュータ・家電
ルート検索結果をポリラインで表示すると、頂点数が多くなりすぎて遅くなってしまうので、頂点とエンコーディングレベルをエンコード化してからポリラインを作成しています。プロトタイプということもあって、対話型ポリラインエンコーダユーティリティのソースから関数を拝借して使用していましたが、そのままサービスを公開するわけには行かないので、頑張って自作しました。

業務用のコードなのでココで公開するわけには行きませんが、そもそも、エンコード化した地点情報、エンコーディングレベルからポリラインを生成するAPI GPolyline.fromEncoded()があるんだから、エンコードもAPIとして提供してくれればいいのに…

基本的にEncoded Polyline Algorithm Formatに従って、緯度と経度は符号つき実数のエンコード手順でコード化し、1つの地点は緯度 + 経度の順番でコード化して得られた文字列を連結したもので表現されます。エンコーディングレベルは符号なし実数のエンコード手順でコード化します。

すべての地点を表すコードを順に連結したものが、コード化された頂点情報、すべての地点に対するコーディングレベルを表すコードを順に連結したものをコード化されたコーディングレベルになります。

緯度、経度のコード化には注意が必要です。単に緯度・経度をコード化してもダメで、直前の地点(先頭の頂点の場合は0)からのオフセット値をコード化しなければなりません。

これに気付かないとハマります。私は結構、悩みました…

最新の画像もっと見る