携帯からGoogleMapで指定の場所を表示する方法(住所指定方式)
    このエントリをはてなブックマークに登録

先日ご紹介した、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を取得する処理をかませています。

20080130-gmap.jpg

メリットとしては、画像表示方式と違い、拡大縮小や移動ができること。
デメリットとしては座標指定ではないために、あまり細かい位置は指定できないということです。

処理の流れ的には検索フォームから住所で検索するのとあまり変わらないのですが、やはり規約違反なんでしょうかね。。。
どなたか詳しい方がいましたら教えてください。
また、このページの情報をご利用の方もGoogleの規約に違反しないようお気をつけください。

 

関連:


 

最近の記事







8 Responses to “携帯からGoogleMapで指定の場所を表示する方法(住所指定方式)”

  1. […] ke-tai.org > Blog Archive > 携帯からGoogleMapで指定の場所を表示する方法(住… (tags: mobile google googlemaps) […]

  2. hiroshi_jp Says:

    こんにちは。上記phpを使用させて頂きました。
    どうやらdocomo携帯では使用できないようです。
    もともとdocomoでは使用できないようになっているんでしょうか。
    宜しければご教授をお願い致します。

  3. hiroshi_jpさん

    コメントありがとうございます。
    私のケータイもドコモなので、ドコモだけ動かないということはないはずですね。
    もしかしたらGoogle側の仕様が変わったのかもしれません。
    手が空いたらちょっと調べてみますね。

  4. hiroshi_jp Says:

    スイマセン、解決しました。
    UTF8でDOMを外したら、3キャリアとも上手くいきました。
    仕様が変わったのでしょうか。失礼しました。

  5. hiroshi_jpさん

    解決したとのことで何よりです。
    また何かありましたらコメントしてください。

  6. はじめまして。
    携帯でGoogleMapを使いたくこのページにたどり着きました。

    上記のソースを使わせて頂きたいと思うのですが、ご質問があります。

    コピペで利用するとGoogleのページに着いた時に文字化けとなってしまうのですが、なぜでしょうか?

    ファイルはShift-JISで作成しております。
    もしわかりましたら、教えて下さい。

    また、AUとSoftBankの場合はどのように記述すればよいのでしょうか?

    ini_set(‘user_agent’,’DoCoMo’);
    ↑この行は何をしているのでしょうか?

    お忙しいとは思いますが、ご解答頂けたら幸いです。よろしくお願いします。

  7. coxさん

    はじめまして、コメントありがとうございます。
    文字化けしてしまいますか、少し古い記事なのでGoogleの仕様が変わったのかもしれませんね。
    色々と文字コードを変えて試してみてはどうでしょうか。

    >ini_set(‘user_agent’,’DoCoMo’);
    >↑この行は何をしているのでしょうか?

    こちらGoogleのIDを取得するため、ドコモのユーザエージェントを騙っています。

    >また、AUとSoftBankの場合はどのように記述すればよいのでしょうか?

    上記コードで大丈夫ですよ。
    DoCoMoの文字がありますが、ドコモ専用というわけではありません。

    ではでは。

  8. ブルーノ Says:

    初めまして。質問させてください。今まではgoogle検索の「プレイス」をクリックし、知りたい場所の住所を記入して検索を押すと「googleマップを表示しますか?」と表示されていたのですが、今日それができなくなっていました。「googleマップを表示しますか?」がなくて小さな画面の地図があるだけなのです。
    住所から目的の地図を表示させるにはどのようにすれば宜しいのでしょうか?
    回答宜しくお願い致します。
    尚私はパソコンがなくて携帯です。

コメントを書く