メニュー
Infomation
■お知らせ
[スパム対策]コメントにURLを含めると自動的に削除されます。
■このサイトについて
一応残していますが、全時代の遺物。全ての情報は古く役に立ちません 連絡先:メールアドレス
■日記更新情報
RSSRSS|RSS(本文のみ)|lirs
実験&リサーチ
巡回先
製作環境
 

 



2004|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|11|12|
2011|01|
2014|05|08|
2017|07|
2018|03|
2020|08|10|
2021|11|

2007年03月04日(Sunday)

_ [コンピュータ] 携帯GPSデータからGoogleMapのURLを取得

以前auの端末での取得方法を書きましたが、先日電話機をDoCoMoに変更したのでDoCoMo端末での取得方法をメモ。

・・・といってもやり方はauよりもより楽で、aタグかformタグに「lcs」という属性を付けるだけです。

後はURLにデータが足されて送られてきます。

得られるデータはauよりだいぶ少ないですが。


■送られるデータ

lat(緯度:latitude)「±dd.mm.ss.sss」で表記。

lon(経度:longitude)「±ddd.mm.ss.sss」で表記。

geo(測地系:datum)geo=wgs84(大文字か小文字かは指定がないのでどちらでも読めるようにしておくこと)

ただ、日本測地系はもう使われなくなったこともあり、GPSのデータは実質的にWGS84以外が来ることはないでしょう。

x-acc(測位レベル:accuracy)1~3の数字が入る。大きいほど正確。


auの時と同じようにこんな感じでGoogleMapとMapionのURLに変換するCGIを作りました。

「表示コード」というのは、生成したURLを携帯電話で扱うのがメンドクセーって人のためのオマケ機能で、このボタンを押すと5分間有効な4桁の数字が表示されます。その4桁の数字をPCでこちらのページに入力すると、携帯電話で取得したURLが表示される仕組みです。

ご旅行の記録をWeb日記に貼るときなどにどうぞー。

アクセスはこちらからどうぞ。

au版もこちらにあります。

http://www.knonline.net/m/


2010年03月04日(Thursday)

_ [日記][コンピュータ] URLエンコードをデコードするCコード

URLエンコード(Percent-Encoding)をデコードする方法は単純な処理なので実装するのは簡単なのですが、いざ欲しいと思うと何故かOSには用意されていなかったりします。


ググれば一発だろ! と思っても何故かすんなりは見つからないか、見つかっても冗長だったりするので毎回新たに書いているのですが、今回で最後にしたいのでここに貼りつけておきます。

エンコードは今回必要無かったので作ってませんが必要になった時に作ります。

urlDecode()にバッファとその長さと変換したい文字列を渡します。

なんか見本で見かけるソースよりやけに短くなってしまうのですが、何か自分が間違っているんだろうか・・・。(RFCは読んでいない)

     9 :int valueFromHexChar(char hex)
    10 :{
    11 :	if('0' <= hex && hex <= '9') return hex - '0';
    12 :	else if('A' <= hex && hex <= 'F') return hex - 'A' +10;
    13 :	else if('a' <= hex && hex <= 'f') return hex - 'a' +10;
    14 :	else return 0;
    15 :}
    16 :
    17 ://typedef unsigned int size_t;
    18 :void urlDecode(char* decoded 
    19 :			   ,size_t decoded_length
    20 :			   ,const char* source)
    21 :{
    22 :	decoded_length--;	//最後の\0の分
    23 :	while(*source && decoded_length){
    24 :		if(*source == '%'){
    25 :			if(*(source+1) == '\0') break; //%の後2Byte続かずに備えて
    26 :			*(decoded++) 
    27 :				= (valueFromHexChar( *(source+1) ) <<4 )
    28 :				+ valueFromHexChar( *(source+2) );
    29 :			source += 3;
    30 :		}else if(*source == '+'){
    31 :			*(decoded++) = ' ';
    32 :			source++;
    33 :		}else{
    34 :			*(decoded++) = *(source++);
    35 :		}
    36 :		decoded_length--;
    37 :	}
    38 :	*decoded = '\0';
    39 :}

最近のコメント

364,000 at 2008.06.14
Copyright (c) Suika KNOnline.NET