HOME備忘帳

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|&amp;size=240x240|                  # 地図画像サイズ 
		. qq|&amp;markers=34.666587,133.914815|  # 座標
		. qq|&amp;format=jpg|                    # 画像フォーマット
		. qq|&amp;maptype=mobile|                # 画像タイプ
		. qq|&amp;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

[ ページ先頭へ ]