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
[ ページ先頭へ ]