簡単に使えるjQuery Google Mapsプラグイン

Cakephpでgoogle mapを利用する

Cakephpでgooglemapを活用する一つの方法として以下のjqueryプラグインを利用することができます。

http://labs.d-s-b.jp/plugins/jQuery/jQueryGoogleMaps/

使い方

latとlngの取得

地図を表示するために緯度経度(latとlng)を取得します。Cakephpのコントローラでプライベート関数を定義してみます。

function _getLatLng($address){
	$api = 'http://maps.googleapis.com/maps/api/geocode/xml?address='
              . urlencode($address)
              . '&sensor=false';

	$xml = simplexml_load_file($api_uri);

	$code = $xml->status;
	if( $code == 'OK' )
        {
    	$lat = $xml->result->geometry->location->lat;
    	$lng = $xml->result->geometry->location->lng;
    	$coordinates = $lat. ',' . $lng;
  	}

        else
        {
    	$coordinates = false;
  	}
  	return $coordinates;
}

googlemapのapiに$address(住所)を引数としてリクエストを行い、レスポンスとしてlatとlngを取得している例です。

lat, lngデータの格納

上で定義した_getLatLngをコントローラ内で呼び出す例です。以下の例は、フォームからユーザーに入力してもらった住所を引数として上で定義したプライベート関数に渡しています。最後にsaveでデータベースに緯度経度を保存しています。

if( $this->data['Model']['address'] )
{
	$address = $this->data['Model']['address'];
	
	if( $coordinates = $this->_getLatLng($address) )
	{
		list($lat, $lng) = explode(',', $coordinates);
		$this->data['Model']['lat'] = $lat;
		$this->data['Model']['lng'] = $lng;
	}
	
	else
	{
		$this->Model->invalidate('address', '住所を入力してください。');
	}

        $result = $this->Model->save($this->data);
}

緯度経度情報を利用して地図を表示

緯度経度をデータベースに保存しましたので、任意の場所に表示させることができます。表示させたいページのviewでjqueryの本体やライブラリを読み込み処理を書きます。

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type="text/javascript" src="/js/jquery.GoogleMaps.js"></script>

地図の読出し部分コードは公式ドキュメントを参考に以下のようにしました。

	<script type="text/javascript">
		jQuery('#gmap').GoogleMaps({
			lat: <?php echo $lat; ?>,
			lng: <?php echo $lng; ?>,
			zoom: 15
		});
	</script>

latとlngを変数で記述することにより、緯度経度を動的にとるようにしています。動的にデータを取得するためにコントローラ側でviewに対して緯度経度情報をsetしてあげる必要があります。

#gmap{
	width: 100%;
	height: 280px;
}

cssを設定し見た目を調整することができます。

Webエンジニアブログにコメント

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

簡単に使えるjQuery Google Mapsプラグインの記事にコメントを投稿