Category Archives: PHP

携帯向け周辺情報検索サイト”.Moyori”を作りました

携帯電話のGPSを使って位置情報を取得し、YahooのWebサービスを使って周辺のお店の情報を取得し、そこまでの距離をなんとなく計算するサイト「.Moyori」を作成しました。
今のところ、AUの携帯とiPadでは動作確認できております。また、ChromeやGoogleツールバーが入っているIEのような、PCブラウザで位置情報が取得できるものであれば動作します。
(他は持ってないのでしらん)
http://moyori.roadsterlabs.com/

GoogleNewsのRSS(XML)をPHPで取得して表示する

Google Newsは、日本語版だとRSSへのリンクがなく、US版には画面の下のほうにあるのですが、フォーラムにもRSSの利用については載っているのでそれを参照しつつ使ってみることにしました。それにしてもフォーラムの和訳はヘン。
http://www.google.com/support/news/bin/topic.py?topic=8848

次のようなコードを書きました。実例はこちら
別に難しいことをしているわけではありませんが、単純にsimplexml_load_fileで読み込みして処理をします。
Google NewsのRSSのdescriptionは中にテーブル記述がごってりで汚いので、そのへんはstr_replaceでもかければいいと思います。

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>

<form action="googlenews.php" method="post">
<input type="text" name="search" value="ロードスター"><input type="submit" value="検索">
</form>

<?php 

if (isset($_POST["search"])) {
	$str = $_POST["search"];
} else {
	$str = "ロードスター";
}

$querytag = "http://news.google.com/news?hl=ja&ned=us&ie=UTF-8&oe=UTF-8&num=10&output=rss&q="
	. urlencode($str);

echo $querytag . "<br>";

$gxml = simplexml_load_file($querytag);

foreach ($gxml->channel->item as $item) {
	echo $item->title;
	echo "<br>";
	echo $item->description;
}

?>
</body>
</html>

携帯電話の位置情報をPEARライブラリで取得する

携帯電話の位置情報を取得するのは、3キャリアでそれぞれやり方が違いますが、PEARのGPSライブラリを使えば非常に簡単に取得することができます。(※残念ながら2011/04/01の時点では、PEARのGPSライブラリはiPadには未対応です。持っていないので検証できませんが、おそらくiPhoneやAndroidも。)

<?php
require 'Net/UserAgent/Mobile/GPS.php';
//何かあればエラーメッセージが表示されます
	try {
		$g = Net_UserAgent_Mobile_GPS::factory();
	}
	catch (Net_UserAgent_Mobile_GPS_Exception $e) {
		echo ($e->getMessage());
	}
	echo "<br><hr><br>";
//PEARを呼び出します
	$url = "http://hoge.com/hoge.php"; //処理の戻り先URLを指定します(この例ではこのphpファイル)
	$str = 'GPSでの測位開始!';
	$glink = $g->getGPSLink($url, $str);
//戻り値は配列で戻ります
	echo "<pre>";
	print_r($glink);
	echo "</pre>";
	echo "<br><hr><br>";

//配列の"tag"はリンクも指定されているので、それを使うのが簡単
	echo"<pre>";
	print $glink["tag"];
	echo"</pre>";
	echo "<br><hr><br>";

//戻ってきた値をGoogleStaticMapで表示します
	$lat = $_GET{'lat'};
	$lon = $_GET{'lon'};
	$datum = $_GET{'datum'};
	$unit = $_GET{'unit'};

	$result = "緯度:" . $lat . "<br>n"
		. "経度:" . $lon . "<br>n"
		. "測地系:" . $datum . "<br>n"
		. "座標系:" . $unit;
	echo $result;

	preg_match("/^([+-0-9]+).([0-9]+).([0-9.]+)$/", $lat, $lat_match);
	preg_match("/^([+-0-9]+).([0-9]+).([0-9.]+)$/", $lon, $lon_match);

	$latx = $lat_match[1] + ($lat_match[2] / 60) + ($lat_match[3] / 60 / 60);
	$lonx = $lon_match[1] + ($lon_match[2] / 60) + ($lon_match[3] / 60 / 60);

	$maptag = "<img src="http://maps.google.com/staticmap"
		. "?center=" . $latx . "," . $lonx
		. "&markers=" . $latx . "," . $lonx . ",greena"
		. "&zoom=17"
		. "&size=240x300"
		. "&maptype=mobile"
		. "">";
	echo $maptag;
?>

上記のコードの稼動サンプルはこちら(携帯でないと動きません)

実際に動かしてみるとわかりますが、携帯電話の状態によっては実際の位置とはかなりずれがあり、数百メートルずれることもあります。ですが、だいたいの場所を取るにはこれで十分と思います。iPadやAndroidのGPSについては今後の検討課題といたします。