SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

目的に応じて適材適所で使うPHPライブラリ

GPS携帯を使った口コミサイト構築 - Google Map上に投稿データを展開する -

目的に応じて適材適所で使うPHPライブラリ(4)


Google Maps上に投稿データを展開:PCからの閲覧

 投稿されたデータをGoogle Maps上に展開します。PCでの閲覧の場合は「Google Maps JavaScript API」を使ってGoogle MapsをHTMLの中に埋め込み、「pc_map.php?id=[mailテーブルのid]」という形式で呼び出される画面とします。

 「Google Maps JavaScript API」の公式ドキュメントはこちらのURLを参照ください。投稿データの取得は先に説明したconfirm.phpと同様のPDOによる形式のため、本項では割愛させていただきます。

 Google Maps APIを利用してブラウザ上に地図を表示するためには、次のようにGoogle Maps APIのjavascriptコードをHTML内に組み込む必要があります。

[リスト16]pc.php(抜粋)
<script type="text/javascript" charset="utf-8" src="http://maps.google.com/maps?file=api&v=2&key=<?php echo $google_map_key; ?>&hl=ja"></script>

 Google Maps APIのJavascriptは非常にメソッドが多いので、本サンプルで利用するもののみ簡単な概要を記載します。

Google Maps API Javascriptメソッドの概要
関数名 概要
GBrowserIsCompatible() Google Mapsが利用できるブラウザかどうかを返します
GMap2('divのid') 指定されたdivタグの中に地図を表示します
GMap2#setCenter(GLatLngオブジェクト, 倍率) 地図の中心、倍率を指定します
GMap2#addControl(コントロール, 位置) 地図上に「地図タイプ切り替え」「縮尺率切り替え」といったコントロールを配置します
GMap2#addOverlay(オーバーレイオブジェクト) 地図上にオーバーレイオブジェクト(ラインやマーカー)を表示します
GLatLng(緯度, 経度,) 地図上の緯度経度を指定するオブジェクト
GMarker(GLatLngオブジェクト) 地図上に表示するマーカーのオブジェクトを生成します
GMarker#openInfoWindowHtml(文字列) マーカー上にHTMLタグを含む文字列を情報ウィンドウ(吹き出し)として表示します
GEvent.addListener(オブジェクト、イベント、ハンドラ) 地図上にイベント、ハンドラを登録します

 地図を表示したい箇所をdivタグで表示させたい地図のサイズとともに定義します。

[リスト17]pc.php(抜粋)
<div id="map" style="width:640px; height:480px" align="center"></div>

 divタグで指定した領域に地図を表示させます。

[リスト18]pc.php(抜粋)
// id="map" で指定した部分に地図オブジェクトを指定
var map = new GMap2(document.getElementById("map"));
// 投稿の緯度、経度を地図に中心に、倍率を15倍に設定
var point = new GLatLng(<?php echo $lat; ?>,<?php echo $lon; ?>);
map.setCenter(point, 15);

 投稿された位置にマーカーを立てて情報ウィンドウに投稿情報を表示させます。

[リスト19]pc.php(抜粋)
// マーカーオブジェクトを作成
var mp = new GLatLng(point.lat(), point.lng());
var marker = new GMarker(mp);
// 情報ウィンドウ内に表示させるhtml
var html = '<table width="200" height="150" border=0><tr><td>'
     + '<img src="image.php?file=<?php echo $image_name; ?>&width=120" /><br />'
     + '</td><td> </td><td>'
     + '<?php echo $address; ?><br /><br />'
     + '<?php echo $subject; ?><br /><br />'
     + '<?php echo $body; ?><br /><br />'
     + '</td></tr></table>';
// 地図にマーカーを設置
map.addOverlay(marker);
// 情報ウィンドウに表示させるhtmlを指定
marker.openInfoWindowHtml(html);

 地図の他の場所をクリックすると情報ウィンドウが消えるので、マーカーをクリックした際に情報ウィンドウを表示するイベントを登録します。

 また倍率を変更するコントローラー、地図の種類を切り替えるコントローラーも追加します。

[リスト20]pc.php(抜粋)
// イベントを登録
GEvent.addListener(marker, "click", function() {
    marker.openInfoWindowHtml(html);
});
// 地図の左側に縮尺率コントローラーを配置
map.addControl(new GLargeMapControl(), new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(5, 5)));
// 地図の左側に地図タイプ切り替えコントローラーを配置
map.addControl(new GMapTypeControl(), new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(5, 5)));

 実行結果は次のようになります。

 情報ウィンドウも地図内に収まる様にGoogle Maps側で自動で調整されるため、地図の中心に指定した緯度、経度が必ずしも表示されている地図の中心になるとは限らないので注意してください。

PCでの投稿表示
PCでの投稿表示

次のページ
Google Maps上に投稿データを展開:携帯からの閲覧

この記事は参考になりましたか?

目的に応じて適材適所で使うPHPライブラリ連載記事一覧

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト 片渕 彼富(カタフチ カノトミ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/4833 2010/03/03 11:53

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー