rhacoでGoogle Map Geocodingする方法。Google map APIを使って住所から緯度経度を検出する。

住所から緯度経度を調べるサービス(http://www.geocoding.jp/ など)がありますが、サービスを通さずに簡単に住所→緯度経度を検出できます。実際はGoogleにどこも頼っているわけですし。どこもここを参照するわけです。Google map api なんでわざわざ他のサービスを利用するのかよく分からん。

というわけでrhacoを使って住所から緯度経度を調べる方法を下記にあげます。結構かんたんです。

	
	require_once('__settings__.php');
	
	Rhaco::import('network.http.Http');
	Rhaco::import("tag.data.SimpleTag");

	// 必ずGoogle map api keyを取得してください。
	// http://code.google.com/intl/ja/apis/maps/signup.html
	$gmap_api_key = '上記のURLからそれぞれが取得すること';

	$gmap_addr = '石川県金沢市'; // 住所指定
	$gmap_sensor = 'false'; // センサーで取得した場合はtrue
	$gmap_output = 'xml'; // xml、kml、csv、jsonが指定できる。今回はxml
	$gmap_oe = 'utf-8'; // 必須ではないがエンコード指定
	
	$url = 'http://maps.google.com/maps/geo';
	$headers = array(  
		'User-Agent' => 'Mozilla/5.0'
	); 
	$params = array(
		'api_key' => $gmap_api_key,
		'q' => urlencode($gmap_addr),
		'sensor' => $gmap_sensor,
		'output' => $gmap_output,
		'oe' => $gmap_oe
	);
	$query_string = '';
	foreach($params as $key=>$val){
		$query_string .= $key.'='.$val.'&';
	}
	
	list($head, $xml_content) = Http::request($url.'?'.$query_string, 'GET', $headers);
	
	$xml = new SimpleTag();
	$xml->set($xml_content, 'coordinates');
	
	print_r($xml->value);

かんたんに取得できますねー。