前回 に引き続き今回も Processing による日本全国コンビニ店舗分布地図について書いてみる。前回は大きさが固定された地図で拡大・縮小や移動ができなかったので、高解像度インタラクティブ版として、それをできるようにしてみた。 まず、日本地図がPNG画像なのでこれをベクタ画像に変更する。フォーマットはSVGだ。前回と同様に「 カビパン男と私 」で提供されている日本地図のSVGファイルを若干加工して利用させてもらった。 次にこのSVGデータをProcessingで利用する方法について述べる。「 ビジュアライジング・データ 」にもSVGの利用方法(processing.candy.*)が書いてあるのだが、実はここに書いてある情報は古くて現在では使用できない。現在では、PShapeを使ってSVGを利用する。 PShape mapShape = loadShape("japan.svg"); こんな感じだ。画面の(x, y)座標に表示するにはdraw関数内で以下のように記述すればいい。 shape(mapShape, x, y); 詳しくは Processingのリファレンス に書かれているので、下記のソースコードなどを参考にして調べてみて欲しい。 さて、これでSVG画像が利用できるようになったので、今度はこれを使って、 マウスの左ボタンのドラッグで平行移動 を行えるようにしてみる。やり方としてはmouseDragged関数を使う。移動したピクセル分だけ画像も移動する。mouseDragged関数内で移動分のオフセットを変数に入れるようにし、上述のshape関数でオフセット分だけ移動した位置に描画すればいい。 次に画像の拡大・縮小を行う。 マウスの右ボタンのドラッグで操作 する。 マウスを上に移動すれば拡大、下に移動すれば縮小 だ。SVG画像の縮小・拡大はscaleメソッドを使う。例えば、上記の例で元の画像を1.5倍にしたければ以下のようにする。 mapShape.scale(1.5); scaleメソッドによる拡大・縮小は画像の位置やそのオフセットなどもちゃんと正しい位置になるようにしなければならないのだが、それらについてはソースコードを参考にして欲しい。 上記はSVG画像による日本...