Google Static Maps API の地図を拡大/縮小
座標や画像サイズなどのパラメータを渡すことで、静的な地図画像を返してくれる、Google Static Map API。 携帯電話など、普通のGoogle MAP が表示できるとは限らない環境では、手軽で便利ですね。
静的な画像とはいえ、パラメータは単純なので、CGIなどで画像のURLを生成してやれば、拡大・縮小や表示位置をずらすなどの操作も、それなりに実装できそうです。 毎度、画像を再読み込みすることになるので、パケット定額推奨ですが。
簡単なサンプルを作りましたので、ご紹介します。
Google Static Map APIのリファレンス的なものは、以前の記事(携帯で地図表示 Google Static Maps API)をご参照ください。
PerlのCGIプログラムです。 50~60行ぐらいなので、そのまま貼り付けておきます。
#!/usr/bin/perl use strict; use CGI; our $api_key = '(設置するサイトのドメインで取得したGoogleAPIKey)'; our $q = CGI->new(); # 縮尺は1~19、デフォルトは仮に13 my $zoom = $q->param('zoom') || 13; $zoom = 1 if ($zoom < 1 ); $zoom = 19 if ($zoom > 19); # 拡大・縮小リンク my ($zoom_in, $zoom_out); if ($zoom < 19) { $zoom_in = $zoom + 1; $zoom_in = qq|<a href="?zoom=$zoom_in">拡大</a>|; } if ($zoom > 1) { $zoom_out = $zoom - 1; $zoom_out = qq|<a href="?zoom=$zoom_out">縮小</a>|; } # 地図表示のimgタグ my $map = qq|<img src="http://maps.google.com/staticmap| . qq|?key=$api_key| . qq|&size=240x240| # 地図画像サイズ . qq|&markers=34.666587,133.914815| # 座標 . qq|&format=jpg| # 画像フォーマット . qq|&maptype=mobile| # 画像タイプ . qq|&zoom=$zoom| # ズーム . qq|" alt="ママカリフォーラム" />| ; # 出力HTML my $html = <<EOM; <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" /> <title>Google Static Map 地図サンプル</title> </head> <body> <p>Google Static Map 地図サンプル</p> $map <p>$zoom_in $zoom_out</p> </body> </html> EOM # 出力 print $q->header(-charset=>'shift_jis'), $html; exit;
このプログラムの動作サンプルはこちら。
このサンプルでは、目的地にマーカーを表示し、そこを中心とした地図を取得しています。 また、動的に書き換えているのはzoomだけで、その他のパラメータはソース中にベタ書きしています。
(たとえば)別のリストから緯度経度を読み込むとか、環境変数などを手がかりに画像のサイズやフォーマットを変えるとかすれば、それなりに実用になるかもです。
最終更新日:2009/02/05
[ ページ先頭へ ]