symfonyでGoogle Map(グーグルマップ)を使う



SymfonyでGoogleMapを使う方法を紹介します。いろいろ方法はあるのだろうが、一番手っ取り早くて、JavaScriptを書かなくても利用できる方法を紹介します。
具体的には、PHP Google MAP APIクラスライブラリを利用します。
PHP GoogleMapAPIでクラスライブラリが公開されており、これをダウンロードしてSymfonyの/myproject/apps/myapp/lib/におき、該当するモジュールのaction.calss.phpでrequireしてパラメータをセットします。
例えば、下記のような感じです。各行の意味はだいたいわかると思いますが、詳細はクラスライブラリのソース内に記載(英語)がありますので、そちらを参照してください。

“actions.class.php”

require('GoogleMapAPI.class.php');
 
$this->map = new GoogleMapAPI();
$this->map->setHeight('400px');
$this->map->setWidth('400px');
$this->map->enableMapControls();
$this->map->enableZoomEncompass();
$this->map->enableOverviewControl();
$this->map->enableSidebar();
$this->map->setBrowserAlert(
          'お使いのブラウザでは地図を表示することができません。'
          .'Internet Explorer 6.0以降か、'
          .'Firefox 1.0以降をおすすめします。');
$this->map->setJSAlert('お使いのブラウザではJavascript'
          .'に対応していないか、Javascript がオフになっています。'
          .'Javascript の動くブラウザでないと地図は表示できません');
$this->map->setInfoWindowTrigger('mouseclick');
$this->map->disableDirections();
$this->map->addMarkerByCoords($lat, $lng, $title, $html);

また、テンプレートファイルには表示するためのコードを記述します。

“indexSuccess.php”

<?php $map->printSidebar() ?>
<?php $map->printMap() ?>

さらに、当然のことながら、Google MAPはJavaScriptを使っているので、HTMLのheadにJavaScriiptのパス設定が必要です。

“template.php”

<?php $map->printHeaderJS() ?>
<?php $map->printMapJS() ?>

実際に実装した結果は以下です。

ドッグランファンサイト

Leave a Reply