ジオポを使って自分の位置をメール送信できるサービスを作って見ました。

今まで作ったことをまとめただけですが、携帯からアクセスし易い様に短いURLにしました。

携帯電話でアクセスして下さい。

http://mk18.x0.com/


以下サイトが大変参考になりました。
ありがとうございます。


PHPで携帯位置情報を扱うライブラリ「Geomobilejp_Converter」を作りました
http://labs.unoh.net/2008/08/phpgeomobilejp_converter.html

■携帯電話のUserAgent判定クラス
http://d.hatena.ne.jp/ya--mada/20081213/1229173330


ソースコード

<?php
mb_internal_encoding('UTF-8');
mb_http_output('SJIS-win');

require_once dirname(dirname(__FILE__)) . '/lib/Geomobilejp/Converter.php';
require_once dirname(dirname(__FILE__)) . '/lib/Geomobilejp/IArea.php';
require_once dirname(dirname(__FILE__)) . '/lib/Geomobilejp/Mobile.php';

$url = 'http://' . $_SERVER['SERVER_NAME']
     . preg_replace('/\?.+?$/', '', $_SERVER['REQUEST_URI']);
?>

<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" />
  <title>mk18 携帯情報サービス</title>
</head>
<body>
<P align="center">mk18 位置情報サービス</P>
<hr>
<?php
require_once ("Keitai.class.php");
$ua =& Keitai::singleton();

if ( !$ua->isValidIp() ) { // Keitai_IP_List.class.phpが必要です
  	print "<br>携帯電話からアクセスして下さい。<br>";
	print "\n<br><br>(C)2009 <a href='http://d.hatena.ne.jp/mk18/'>mk18</a><br>\n";
  	die();
}


$id = $ua->getKeitaiId();
//print "{$id}<br>\n";

$carrier = $ua->getCarrier();/*キャリア名 DoCoMo, KDDI, SoftBank, Willcom*/
print "{$carrier}<br>\n";

$mobile = new Geomobilejp_Mobile();

if ($mobile->hasParameter()) {

    $converter = new Geomobilejp_Converter(
        $mobile->getLatitude(),
        $mobile->getLongitude(),
        $mobile->getDatum()
    );

//    $c1 = $converter->convert('wgs84')->format('dms');
    $c2 = $converter->convert('wgs84')->format('degree');
//    $c3 = $converter->convert('tokyo')->format('dms');
//    $c4 = $converter->convert('tokyo')->format('degree');

//    $area = Geomobilejp_IArea::seekArea($converter);

	$lat2 = $c2->getLatitude();
	$lon2 = $c2->getLongitude();
	
//    print"wgs84(degree)<br>";
	print"緯度:{$lat2}<br>";
	print"経度:{$lon2}<br>";
    print "<br><hr>";
	
	//ジオポ
	require_once ("geopo.php");
	$location['lat'] = $lat2;
	$location['lng'] = $lon2;
	$location['scale'] = 6;
	$geopo = geopoEncode($location);
//	print "<br>geopo={$geopo}<br>\n";
	print "<a href='http://geopo.at/{$geopo}'>ジオポで地図を表示</a>";
	print "<br>\n";
	print "<a href='mailto:xxx@xxx?subject=my location&amp;body=http://geopo.at/{$geopo}'> メールで現在位置を送信</a>";
	print "<br>\n";	
	
	
}//endif


//携帯メーカーを判定して振り分け表示する
print "<br>";

//$carrier = "DoCoMo";	//for test

$url = htmlspecialchars($url);
//print "{$url}<br>\n";

if($carrier=="DoCoMo"){
print'
    docomo<br />
    <form action="sample.php" method="get" lcs="lcs">
      <input type="submit" value="位置情報を送信" />
    </form>
    <br />
';
}

if($carrier=="KDDI"/* || $carrier=="NonMobile"*/){
print'
	au<br />
    <form action="device:gpsone" method="get">
	<input type="hidden" name="url" value=
	';
print"{$url}";
print'	
	/>
      <input type="hidden" name="datum" value="0" />
      <input type="hidden" name="ver" value="1" />
      <input type="hidden" name="unit" value="0" />
      <input type="hidden" name="acry" value="0" />
      <input type="hidden" name="number" value="0" />
      <input type="submit" value="位置情報を送信" />
    </form>
    <br />
';
}

if($carrier=="SoftBank"){
print'
	SoftBank<br />
    <a href="location:gps?url=sample.php"位置情報を送信</a>
    <br />
';
}

if($carrier=="Willcom"){
print'
	WILLCOM<br />
    <a href="http://location.request/dummy.cgi?my=<?php echo htmlspecialchars($url) ?>&pos=$location">位置情報を送信</a>
    <br />
';
}

print "\n<br><br>(C)2009 <a href='http://d.hatena.ne.jp/mk18/'>mk18</a><br>\n"
?>

</body>
</html>