H11Tで現在地を取り出す(改)

追記:サービスとして公開を始めました。http://doyasa.jp/gps
久々にcrazyupなネタを。ということで以前書いたやつを題材にして自習してみました。
ただ、現在はEMnetに加入していないので確認できません。
今度余裕が出ればEMnet再契約してテストしてみたいと思います。
ちなみに前回記事はH11Tから現在地を取り出す。 - crazyuplogです。
あと、地味に修正し続けています。ご注意下さい。

変化したところ

  • ドコモのGPSケータイにも対応しました。
    • SO906iで実働確認しました。
  • NAVITIMEに対応しました。
  • 相手にメールでアドレスを送信できるようになりました。
    • メール添付用の値を用意しました。
  • 1ファイル完結になりました。
    • 地味にほとんど書き直しました。
  • 地味に他のサイトの仕様さえ分かれば拡張できるようになりました。
    • データの出力を極力複数できるようにしました。

地味にやりたいこと

  • 全キャリア対応
    • iPhone以外ならどうにかなりそう。(地味に今書いてます。)
  • 地図写真を出す。
    • 割とここらへんは権利関係で難しそう・・・

コード

<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>New GPS</title>
</head>
<body>
<?php
    $map = array();
function mapEnc ($pos){
    $mapdata = substr ($pos,1);
    $map = explode ("E",$mapdata);
    return $map;
}
function datumSel ($geo) {
    if ($geo = "wgs84") {
        $datum = "0";
    } else {
        $datum = "1";
    }
    return $datum;
}
if (!empty($_GET['mail'])) {
    $mail = explode("x",$_GET['mail']);
    $pos = $mail[0];
    $datum = $mail[1];
    $xacy = $mail[2];
    $map = mapEnc($pos);
} elseif (!empty($_GET['lat'])&&!empty($_GET['lon'])) {
    $lat = substr ($_GET['lat'],1);
    $lon = substr ($_GET['lon'],1);
    $map[0] = $lat;
    $map[1] = $lon;
    $geo = $_GET['geo'];
    $datum = datumSel ($geo);
    $xacy = $_GET['x-acc'];
    $alt = $_GET['alt'];
    $pos = "N".$map[0]."E".$map[1];
} elseif (empty($_GET['pos'])) {
    $map = array(0,0);
    $xacy = "1";
    $geo = "wgs84";
    $datum = "0";
    $pos = "データが取得できませんでした。";
    echo $pos."<br />";
} elseif (preg_match("/^[0-9A-Z.]+$/",$_GET['pos'])) {
    //元データはこんなの→N35.44.33.156E135.22.33.124
    $pos = $_GET['pos'];
    $map = mapEnc($pos);
    if (empty($_GET['geo'])) {
        $geo = "wgs84";
        $datum = "0";
    } else {
        $geo = $_GET['geo'];
        $datum = datumSel ($geo);
        break;
    }
}
if (empty ($_GET['x-acy'])) {
    $xacy = "1";
} else {
    $xacy = $_GET['x-acy'];
}
?>
□New GPS□<br />
<a href="<?php echo $_SERVER['PHP_SELF']; ?>" measure="auto" accesskey="1" lcs>[1]再取得</a><br />
▽現在地表示▽<br />
<a href="http://www.navitime.co.jp/map/index.jsp?datum=<?php echo $datum; ?>&lat=+<?php echo $map[0]; ?>&lon=+<?php echo $map[1]; ?>" accesskey="2">[2]NAVITIME(PC/携帯)</a><br />
<a href="http://www.mapfan.com/m.cgi?MAP=<?php echo "E".$map[1]."N".$map[0] ?>" accesskey="3">[3]mapfan(PCだけ)</a><br />
▽携帯にメール▽<br />
      <a href="mailto:?Subject=いまここ&Body=<?php echo "http://".$_SERVER['SERVER_NAME'].$_SERVER['SCRIPT_NAME']; ?>?mail=<?php echo $pos; ?>x<?php echo $datum; ?>x<?php echo $xacy; ?>" accesskey="4">[4]送信</a><br />
緯度:<?php echo $map[0]; ?><br />
経度:<?php echo $map[1]; ?><br />
元データ:<?php echo $pos; ?>
</body>
</html>

一応、前回と同じように基本は適当です。
さらにH11T上ではテストもしていませんのでどう動くか不明です。
ご利用される際は各自の責任の上でお願いします。
あと、文字コードはお好みで。今はUTF-8になっていますが、Shift_JISにしたほうが良さげかも。
また、自習のネタにこいつを使う予定です。
地味に機能追加をし続けてみたいと思います。

最後に、ご利用は自己責任でお願いします。