Processingでお手軽にGoogleマップから画像を取得する
Google Mapper for ProcessingというGoogleマップから地図画像を取得するためのProcessing用のライブラリがあります.ごくシンプルな機能しかありませんが,とても簡単に扱えるので遊んでみてください.
使い方
上記の配布サイトに行くと,Downloadと書かれたところに投げやりにjarファイル(googleMapper.jar)が置いてあるので,それをダウンロードします.Processingを起動して,スケッチ上にgoogleMapper.jarをドラッグ&ドロップすればそのスケッチで利用可能になります.普段使いするならば,Processing/libraries/googleMapper/library/というフォルダ構成を作ってそこに置くのが良いでしょう.
コードはこんな感じです.短い.恐ろしく短い.何の冗談かと.
import googlemapper.*; GoogleMapper gMapper; PImage mapImage; void setup() { size(640, 480); double mapCenterLat = 35.709961; // 緯度 double mapCenterLon = 139.810858; // 経度 int zoomLevel = 16; // ズームレベル String mapType = GoogleMapper.MAPTYPE_HYBRID; // 表示の種類 int mapWidth = width; // 横サイズ int mapHeight = height; // 縦サイズ // インスタンスの作成 gMapper = new GoogleMapper(mapCenterLat, mapCenterLon, zoomLevel, mapType, mapWidth, mapHeight); //マップ画像の取得 mapImage = gMapper.getMap(); } void draw() { image(mapImage, 0, 0); // 画像の描画 }
実行するとこんな感じ.ズームレベルと画像サイズを変更すれば,見える範囲を変更できます.
上記サンプルコードではスカイツリーの緯度・経度を指定しています.任意の場所の緯度・経度が知りたければ,以下のサイトなどでチェックしてください.
マップの種類は以下のパラメータから選べます.
GoogleMapper.MAPTYPE_ROADMAP // 通常の地図 GoogleMapper.MAPTYPE_SATELLITE // 航空写真 GoogleMapper.MAPTYPE_HYBRID // 航空写真+地名 GoogleMapper.MAPTYPE_TERRAIN // 地形
あと,緯度経度⇔スクリーン座標変換のメソッドが用意されています.例えばこんな感じで相互変換できます.
// 画像上の座標値(x,y)から経度・緯度を算出 println("longitude = " + gMapper.x2lon(320)); println("latitude = " + gMapper.y2lat(240)); // 経度・緯度から対応する画像上の座標値を算出する println("x = " + gMapper.lon2x(139.810858)); println("y = " + gMapper.lat2y(35.709961));
かつてGoogleマップを背景に使った縦スクロールのシューティングゲーム(ゼビウス的な感じの)がありましたが,そういうのをProcessingで作ってみると面白いかもしれませんね.あとはGPSモジュールと連動させるのも面白そう.