先日ご紹介した、AsialBlogの「携帯でGoogleMapを手軽に表示するPHPクラス」という記事なのですが、読み返すと次のような注意書きが記載されていました。
最後に使用する際には、GoogleMapの利用規約に記述されている規約に違反しないようにお気をつけください。
コメント欄にもNGの可能性があるといったような微妙なコメントが寄せられています。
しかしPCのように、携帯でも任意の場所の地図を表示したい場合は多いと思います。
何とか規約に反しない方法は無いかと思い、次のようなプログラムを考えてみました。
<?php
$address = '札幌市北区北6条西4丁目';
$url = 'http://www.google.co.jp/m/lcb';
$query = '?mp=1&source=m&id=%s&ie=Shift_JIS&action=setloc&loc=%s';
// IDを取得
ini_set('user_agent','DoCoMo');
$tmp = file_get_contents($url);
preg_match_all('/ name="id" value="([0-9a-f]{32})"/', $tmp, $arr);
$id = $arr[1][0];
// ページを移動
$location = $url . sprintf($query, $id, urlencode($address));
header('Location: ' . $location);
?>
※プログラムはシフトJISで記述してください
基本は地図検索のキーワードとして住所を渡しているだけです。
番地まで指定してやれば、かなり正確に場所を指すことができます。
ただそれだけだとIDが指定されていないため、表示後の画面が正しく動作しません。
そのため、一度file_get_contentsでIDを取得しています。
わざわざGoogleに接続しなくても、例えば「$id = md5(time() . microtime());」といったように、32文字の文字列を作成してやれば動作するような気がするのですが、天文学的な確率ですがIDが重なる等の問題が起きてGoogle側に迷惑をかけてもいけないので、Google側で生成したIDを取得する処理をかませています。

メリットとしては、画像表示方式と違い、拡大縮小や移動ができること。
デメリットとしては座標指定ではないために、あまり細かい位置は指定できないということです。
処理の流れ的には検索フォームから住所で検索するのとあまり変わらないのですが、やはり規約違反なんでしょうかね。。。
どなたか詳しい方がいましたら教えてください。
また、このページの情報をご利用の方もGoogleの規約に違反しないようお気をつけください。
関連: