2015.09.09
Laravelで住所からGoogle Map APIを用いて地図表示
Gmaps.jsを利用して、指定住所の場所をGoogle Map上に表示してみました。
Gmaps.jsはjavascriptのパッケージですので、Laravelではなくても使用可能ですが、今回はLaravelを利用してプロジェクト上でGmaps.jsを使ってみました。
環境は以下となります。
筆者の環境ではbowerでインストールしたパッケージは「C:\dev\project\test_gmaps\public\bower_components」に配置されるように設定されています。生成されているか確認しましょー!
「C:\dev\project\test_gmaps\app\Http\Controllers\GmapsController.php」が追加されましたね。追加されたコントローラを以下のように修正しましょ~!コントローラは東京都庁の住所をビューに渡します。
生成したビューに以下のようにコーディングします。
※参考サイト:https://hpneo.github.io/gmaps/
※Google Map APIを利用する際には制限があるので注意しましょ~!
- OS:Windows 10 64bit
- PHP 開発環境:XAMPP 5.6.3
- PHP Framework:Laravel 5.1
- パッケージインストール
- Google Map表示画面へのルーティング設定
- Google Map表示用コントローラ作成
- Google Map表示画面(ビュー)作成
パッケージインストール
Gmaps.jsを利用するためにはJqueryが必要となります。 そのため、先にJqueryをインストールしておきましょ~! コマンドプロンプトを開いて、プロジェクトの場所(Laravelがインストールされている場所)に移動します。筆者の環境では「C:\dev\project\test_gmaps」なので「cd C:\dev\project\test_gmaps」で移動します。 そのあと、「bower install jquery –save」を入力して、jqueryをインストールします。次は、Gmaps.jsをインストールしましょ~!「bower install gmaps –save」を入力してください。
筆者の環境ではbowerでインストールしたパッケージは「C:\dev\project\test_gmaps\public\bower_components」に配置されるように設定されています。生成されているか確認しましょー!
ルーティング設定
「http://localhost:8000/map」に接続するとGoogle Mapが表示されるようにルーティングを設定します。 「C:\dev\project\test_gmaps\app\Http\routes.php」を開いて以下のソースコードを追加します。
Route::get('/', function () {
return view('welcome');
});
// 【追加部分】「Google Map 画面表示機能」を起動
Route::get('/map', 'GmapsController@view');
コントローラ作成
プロジェクトの場所(Laravelがインストールされている場所)に移動して、「php artisan make:controller GmapsController」コマンドにてGoogle Map表示用コントローラを作成しましょ~!
「C:\dev\project\test_gmaps\app\Http\Controllers\GmapsController.php」が追加されましたね。追加されたコントローラを以下のように修正しましょ~!コントローラは東京都庁の住所をビューに渡します。
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
class GmapsController extends Controller
{
/**
* Google Map 画面表示機能
*/
public function view()
{
// データーベースなどから表示したい住所を取得。
// 本記事では「東京都庁」の住所を固定で設定する。
$address = "東京都新宿区西新宿2−8−1";
// 取得した住所を利用して、画面(ビュー)を作成
return view('gmaps/view', compact('address'));
}
}
ビューを作成
Google Mapを表示する画面を作成します。ここでGmaps.jsを利用します。コントローラから渡された東京都庁の住所をGoogle Map上に表示します。 「C:\dev\project\test_gmaps\resources\views」配下に「gmaps\view.blade.php」を作成します。ビューを作成するartisanコマンドは特にないので直接作成します。
生成したビューに以下のようにコーディングします。
<!DOCTYPE html>
<html>
<head>
<title>Gmaps.js テスト</title>
<script type="text/javascript" src="bower_components/jquery/dist/jquery.min.js"></script>
<script type="text/javascript" src="//maps.google.com/maps/api/js?sensor=true"></script>
<script type="text/javascript" src="bower_components/gmaps/gmaps.min.js"></script>
<script type="text/javascript">
// コントローラから渡された住所を取得
var addressStr = "{!! $address !!}";
$(document).ready(function(){
// Gmapsを利用してマップを生成
var map = new GMaps({
div: '#map',
lat: -12.043333,
lng: -77.028333
});
// 住所からマップを表示
GMaps.geocode({
address: addressStr.trim(),
callback: function(results, status) {
if (status == 'OK') {
var latlng = results[0].geometry.location;
map.setCenter(latlng.lat(), latlng.lng());
map.addMarker({
lat: latlng.lat(),
lng: latlng.lng()
});
}
}
});
});
</script>
<style>
@charset "utf-8";
#map {
height: 400px;
}
</style>
</head>
<body>
<h1>Gmaps.js テスト</h1>
<p>住所:{{ $address }}</p>
<div id="map"></div>
</body>
</html>
コーディングが終わったら、「http://localhost:8000/map」に接続してみましょ~!以下の画面が表示されたら成功です!!
※参考サイト:https://hpneo.github.io/gmaps/
※Google Map APIを利用する際には制限があるので注意しましょ~!
