C#でGoogle Static Maps APIの使い方(ソースコードあり)
C#でGoogle Static Maps APIで地図画像をダウンロードする方法を紹介します。
まず、
- Google Static Maps APIの公式サイトを斜め読みする
- APIキーを取得する
- http://code.google.com/intl/ja/apis/maps/signup.html
- このサイトでデスクトップアプリの場合は 「http://localhost/」 等で取得。
- ウィザードページでダウンロードしたいURLを作成する
- http://gmaps-samples.googlecode.com/svn/trunk/simplewizard/makestaticmap.html
- ここでドラッグ、拡大縮小等して位置合わせ。画像は最大640x640までのサイズです。大量にアクセスすると1日にDLできる制限に引っ掛かります。引っかかった場合は次の日まで待ちましょう(別のインターネット環境とか別のマシンからアクセスなら大丈夫かも)。
- C#でダウンロードのプログラムを実行。
下記が、C#でのコードです。
//Author : Eiji Kamiya 2009/10/4 //Licence : BSD //Google Static Maps APIで画像を取得し、ファイルに保存する private void SaveGoogleMap(string url, string fileName) { try { WebClient web = new WebClient(); using (FileStream fs = new FileStream(fileName, FileMode.Create)) { using (BufferedStream bs = new BufferedStream(web.OpenRead(url))) { byte[] buf = new byte[4096]; int size; while ((size = bs.Read(buf, 0, buf.Length)) != 0) { fs.Write(buf, 0, size); } } } MessageBox.Show(fileName + "を保存しました。", "成功", MessageBoxButtons.OK); } catch (Exception ex) { MessageBox.Show(ex.Message, "Error at SaveGoogleMap", MessageBoxButtons.OK, MessageBoxIcon.Error); } } //メニュー:つくばの地図をGoogle Static Maps APIで取得してファイルに保存する private void saveTsukubaMapToolStripMenuItem_Click(object sender, EventArgs e) { //center : 画像中心位置(緯度経度、単位:度) //zoom : ズームレベル0〜19 //maptype:satellite or roadmap //size : 画像サイズ(単位:ピクセル) //sensor : false //format : jpg or gif //key : MAPS_API_KEY string url = "http://maps.google.com/maps/api/staticmap?" + "center=36.084782,140.110584&zoom=18&maptype=roadmap&" + "size=640x640&sensor=false&format=gif&key=" + MAPS_API_KEY; SaveGoogleMap(url, "Route\\Tsukuba.gif"); }
SaveGoogleMap()メソッドにURLと保存先のファイル名を入力するだけです。
画像を大量にダウンロードすると止められたり(1日にDLできる上限がある)します。これでGoogle Earthみたいなものを作ったりカーナビみたいなアプリを作るとGoogleに怒られると思います。自己責任で利用ください。