« 日記 |Main| 位置メール »

« 「MovableTypeで箇条書きを楽に入力するプラグイン」の改良 | MTHack | はてなブックマークの件数を表示 »

GPSで取った現在位置からGoogleマップへのリンクを作成する

SA702iを使ってGPSで取得した現在位置をメールでMTに投稿した時に、デフォルトのままではPCユーザが見ることが出来ないDocomoサーバ内の地図のURLが表示されるだけで面白くないので、適当な地図サイトへのリンクにすることを考えてみました。

携帯のGPSで取った緯度経度でそのままマピオンの地図を表示するとずれています。測地系 - Wikipediaで紹介されている国土地理院による日本陸上用の変換CGIを使って、携帯GPSからの情報を世界測地系として日本測地系に変換した上でマピオンに渡すとそれっぽい位置になりました。しかし変換は面倒なので世界測地系を採用している地図を探してみると…。Googleマップでいいようですね。

Pythonで試し書き。

data = "http://docomo.ne.jp/cp/map.cgi?lat=%2B33.35.26.977&lon=%2B130.25.15.976&geo=wgs84&x-acc=1"
PAT = "(http://docomo.ne.jp/cp/map.cgi\?lat=%2B(\d+).(\d+).(\d+.\d+)&lon=%2B(\d+).(\d+).(\d+.\d+)&geo=wgs84&x-acc=\d+)"
TEMPLATE = "http://maps.google.co.jp/?t=k&ll=%f,%f"
def docomo2google(m):
  (a, lat1, lat2, lat3, lon1, lon2, lon3) = m.groups()
  lat = (float(lat3) / 60 + float(lat2)) / 60 + float(lat1)
  lon = (float(lon3) / 60 + float(lon2)) / 60 + float(lon1)
  return TEMPLATE % (lat, lon)
  
re.subn(PAT, docomo2google, data)

こんな感じですね。 あとはこれをPerlで書き直してMovableTypeのフィルタにすればOK、と。 問題はそんなことより、僕の携帯のGPSナビゲーションがなぜか「接続できません」というエラーで使えないことなのですけどねー。近いうちにドコモショップに聞きに行かないと…。

sub docomo2google{
    my($lat1, $lat2, $lat3, $lon1, $lon2, $lon3) = @_;
    my $result = "";

    my $lat = ($lat3 / 60.0 + $lat2) / 60.0 + $lat1;
    my $lon = ($lon3 / 60.0 + $lon2) / 60.0 + $lon1;
    return "<a href='http://maps.google.co.jp/?t=k&ll=$lat,$lon'>[GoogleMap]</a>";
}

# 変換部分(自作フィルタの中)
$text=~s|http://docomo\.ne\.jp/cp/map\.cgi\?lat=%2B(\d+)\.(\d+)\.(\d+\.\d+)&lon=%2B(\d+)\.(\d+)\.(\d+\.\d+)&geo=wgs84&x-acc=\d+|&docomo2google($1,$2,$3,$4,$5,$6)|ieg;

出来ました。

トラックバック(Trackback)

Trackback URL: http://www.nishiohirokazu.org/mt/mt-tb.cgi/277

フィードバック

by さんじゅうろう | 2006年09月08日 11:50

はじめまして。さんじゅうろうと申します。SA702iで検索してこちらにたどり着きました。

私も同じように「デフォルトのままではPCユーザが見ることが出来ないDocomoサーバ内の地図のURLが表示されるだけで面白くない」 と思っていました。 プログラミングスキルがないので、PCユーザーにはマピオンの携帯サイトの「ここでねマピオン」のサービスを利用して、地図情報のリンクを送ってます。

GPSナビゲーション中に「接続できません」のエラーメッセージが表示される現象、私の端末でも発生しました。 結構な頻度で発生するので、ナビゲーションはほとんど使用していません。単純に電波の感度の問題ならいいんですけどね。

ご意見・ご感想をお送りください(フィードバック)

(フィードバックはメールで送信され、基本的に表示されませんが、内容によっては公開させていただくこともございます。ご了承ください。Your comment doesn't appear the page immediately. If the comment has value to other people, it will be put on the page or subsequent entries. Thank you.)

上の情報は、いずれも未記入でかまいません。 All of above questions are optional.