AU携帯でGPSデータを取ってMapServerで表示する

http://www.siisise.net/gps.html 参照。
form要素を使っていますが、GETアクションを使っているので a要素でもOK。

<a href="device:gpsone?url=(url)&ver=1&datum=0&unit=1&acry=0&number=0">GO</a>

こんなかんじ。

中心座標を受けて、緯度経度の範囲を出してimgextを付けてmapservにまわすリダイレクタを用意します。

#!/usr/local/bin/perl

$url_body = '/mapserv';
$nowait = 0;

# QUERY_STRING をとる
# うち lat =%2B34.49814 lon=%2B133.38658 %2Bは"+"に対応
@ary = split(/&/,$ENV{"QUERY_STRING"});
foreach $name_and_val ( @ary ) {
  ($name,$val) = split( /=/, $name_and_val );
  $name =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack("H2", $1 )/eg;
  $val =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack("H2", $1 )/eg;

  if( $name eq "lat" ) {
    $lat = $val + 0;
  }
  if( $name eq "lon" ) {
    $lon = $val + 0;
  }
}

# パラメータ
$param = "map=(マップへのパス)&layers=all&scale=0.1&zoomsize=2&mapxy=$lon+$lat";

# urlを生成
$url = $url_body.'?'.$param;

# nowait が true なら、Locationヘッダをつける
# (Location:フィールドは効くみたい)
$http_header = "Content-Type: text/html; charset=Shift_JIS\n";

if( $nowait ) {
  $http_header = $http_header . "Location: $url\n";
}

print << "_EOL_";
$http_header

<html>
<head>
  <title>位置決定</title>
</head>
<body>
  <h1>位置決定</h1>
  <p>次の通り転送します。</p>
  <dl>
  <dt>緯度(北緯)</dt>
  <dd>$lat</dd>
  <dt>経度(東経)</dt>
  <dd>$lon</dt>
  </dl>
  <p><a href="$url">移動</a></p>
</body>
</html>
_EOL_

nowaitを0以外にすると、HTTPヘッダの Location フィールドを生成するので、対応していれば(してると思うけど)、redirector.cgi から、目的のページに飛ぶ際に操作がいらなくなります。