#!C:\nadesiko\cnako.exe
!ProgramPath="http://www.mtst.jp/nako/fon/n_fon.nako"
!LogFile="{母艦パス}\search_log.dat"
経過ダイアログ=0
エラー無視
CNAKOモード=「CGI」
PNTとは配列。GPSPとは文字列。TTWとは配列
QUERY=クエリー取得
もしキャリア判定=「au」ならば
もしAND(QUERY@lat≠「」,QUERY@lon≠「」)=1ならば
#「+###」の「+」を削除
QUERY@latの1から1文字削除
QUERY@lonの1から1文字削除
#度分秒単位ならば
もしQUERY@unit=「0」ならば
QUERY@lat=DMS2DEG(QUERY@latの「.」を「」に置き換え)
QUERY@lon=DMS2DEG(QUERY@lonの「.」を「」に置き換え)
#日本測地系ならば
もしQUERY@datum=「1」ならば
TTW=TOKYO2WGS84(QUERY@lat,QUERY@lon)
QUERY@lat=TTW[0]
QUERY@lon=TTW[1]
GPSP=座標TO住所(QUERY@lat,QUERY@lon)
GD=近隣AP取得(QUERY@lat,QUERY@lon)
PNT=位置検索結果("測定",GPSP,GD[3],INT(GD[4]),GD[0],GD[1],GD[2])
もしキャリア判定=「softbank」ならば
#簡易位置情報
SQUE=『HTTP_X_JPHONE_GEOCODE』の環境変数取得
もしSQUE≠「」ならば
SQUE=SQUEを「%1A」で区切る
もしSQUE[2]をURLデコード=「位置情報なし」ならば
PNT=「位置情報取得失敗」
違えば
TTW=TOKYO2WGS84(SQUE[0],SQUE[1])
GD=近隣AP取得(DMS2DEG(TTW[0]),DMS2DEG(TTW[1]))
PNT=位置検索結果("測定",SQUE[2]をURLデコード,GD[3],INT(GD[4]),GD[0],GD[1],GD[2])
#GPS
違えば
もしQUERY@pos≠「」ならば
QUERY@posが「N(##.##.##.##)E(###.##.##.##)」に一致ならば
SQUE[0]=DMS2DEG(抽出文字列[0]の「.」を「」に置き換え)
SQUE[1]=DMS2DEG(抽出文字列[1]の「.」を「」に置き換え)
GPSP=座標TO住所(SQUE[0],SQUE[1])
GD=近隣AP取得(SQUE[0],SQUE[1])
PNT=位置検索結果("測定",GPSP,GD[3],INT(GD[4]),GD[0],GD[1],GD[2])
違えば
PNT=「位置情報取得失敗」
もしQUERY@address≠「」ならば
LAP=住所TO座標(QUERY@address)
もしLAP=「ERROR」ならば
PNT=「住所からの座標取得に失敗しました」
違えば
GD=近隣AP取得(LAP[0],LAP[1])
PNT=位置検索結果("検索",QUERY@addressからタグ削除,GD[3],INT(GD[4]),GD[0],GD[1],GD[2])
「Content-type: text/html{~}{~}」を表示
「
FON_AP検索
--最も近くのFON_APを表示します--(070123)(端末:{キャリア判定})
ご利用は自己責任でお願いします。
携帯電話でアクセスすると位置情報からの検索をご利用になれます。(現在:au:GPS - SoftBank:GPS,簡易に対応)
住所検索での注意:〜丁目〜番地のように入力してください。
掲示板
利用させていただいているサービス
{位置取得リンク}
{PNT}」を表示
RIP=「REMOTE_ADDR」の環境変数取得
もしGPSP≠「」ならば
もしLogFileをファイルロック=1ならば
「{GPSP[0]}[{RIP}][GPS][{キャリア判定}]{~}」をLogFileに追加保存
LogFileをファイルロック解除
もしQUERY@address≠「」ならば
もしLogFileをファイルロック=1ならば
「{QUERY@address}[{RIP}][FORM][{キャリア判定}]{~}」をLogFileに追加保存
LogFileをファイルロック解除
終了
●位置検索結果(PT,SP,AP,AL,AA,AO,AR)
TTWとは配列=WGS842TOKYO(AA,AO)
AA=TTW[0]
AO=TTW[1]
「{PT}位置:{SP}
--AP情報--
場所:{AP}付近
距離:約{AL}m
緯度:{AA}
経度:{AO}
登録情報:{AR}
地図」を戻す
●位置取得リンク
もしキャリア判定=「au」ならば
「
AU
GPS情報から検索
」を戻す
もしキャリア判定=「softbank」ならば
「
SoftBank
2G 簡易位置情報から検索
3G GPS又は簡易位置情報から検索
」を戻す
もしキャリア判定=「pc」ならば
「

」を戻す
「」を戻す
●キャリア判定
もしQUERY@ualock≠「」ならば
QUERY@ualockを戻す
UAとは文字列
UA=『HTTP_USER_AGENT』の環境変数取得
もしUAで「UP.Browser」が何文字目≠0ならば
「au」を戻す
もしUAで「DoCoMo」が何文字目≠0ならば
「docomo」を戻す
もしUAで「J-PHONE」が何文字目≠0ならば
「softbank」を戻す
もしUAで「Vodafone」が何文字目≠0ならば
「softbank」を戻す
もしUAで「SoftBank」が何文字目≠0ならば
「softbank」を戻す
もしUAで「DDIPOCKET」が何文字目≠0ならば
「willcom」を戻す
もしUAで「WILLCOM」が何文字目≠0ならば
「willcom」を戻す
もしUAで「AH-J300」が何文字目≠0ならば
「willcom」を戻す
「pc」を戻す
●クエリー取得
Qとは文字列。Sとは文字列
ANとはハッシュ。FNとは文字列。FDとは文字列
Q=『QUERY_STRING』の環境変数取得
Qを「&」で区切るで反復
S=対象を「=」で区切る
FN=URLデコード(S[0])
FD=URLデコード(S[1])
AN@FN=FD
ANを戻す
●近隣AP取得(AT,NG)
DPとは配列。NDとはハッシュ。ADとは文字列
DP=「http://maps.fon.com/index.php?action=getNearestRouter&lat={AT}&lng={NG}」からHTTPデータ取得をUTF8_SJIS変換から「node」のタグ切り出し
DPの0を配列削除
ND=DPから「node」のタグ属性一覧取得
AD=DPから「address」のタグ切り出しの「![CDATA[」から「]]」まで範囲切り取るの「,」を「.」に置換えからタグ削除
「{ND@LAT}{~}{ND@LONG}{~}{AD}{~}{座標TO住所(ND@LAT,ND@LONG)}{~}{距離取得(AT,NG,ND@LAT,ND@LONG)}」を戻す
●座標TO住所(AT,ON)
DXとは配列
DX=「http://nishioka.sakura.ne.jp/google/ws.php?lon={ON}&lat={AT}&format=simple」からHTTPデータ取得をUTF8_SJIS変換
DXから「address」のタグ切り出しからタグ削除を戻す
●住所TO座標(S)
ADとは文字列。DAとは配列。LATとは文字列。LNGとは文字列
AD=SをSJIS_UTF8変換をURLエンコード
DA=「http://www.geocoding.jp/api/?v=1.1&q={AD}」からHTTPデータ取得をUTF8_SJIS変換
LAT=DAから「lat」のタグ切り出しからタグ削除
LNG=DAから「lng」のタグ切り出しからタグ削除
もしLNG=「」ならば
「ERROR」を戻す
「{LAT}{~}{LNG}」を戻す
●距離取得(AT1,ON1,AT2,ON2)
「http://lab.uribou.net/ll2dist/?ll1={AT1},{ON1}&ll2={AT2},{ON2}」からHTTPデータ取得をUTF8_SJIS変換から「distance」のタグ切り出しからタグ削除を戻す
●ファイルロック(ファイル名の|ファイル名を)
ロック名とは文字列=ファイル名のロックファイル名作成
成功とは整数=0
10回
ロック名が存在
もしそれ=0ならば
成功=1
ロック名にフォルダ作成
抜ける
違えば
0.5秒待つ
成功を戻す
●ファイルロック解除(ファイル名の|ファイル名を)
ロック名とは文字列=ファイル名のロックファイル名作成
ロック名が存在
もしそれ=1ならば
ロック名のフォルダ削除
●ロックファイル名作成(Fで|Fの)
F=Fの「:」を「_」に置換の「\」を「_」に置換の「.」を「_」に置換
「lock-{F}」を戻す
#度→度分秒
●DEG2DMS(S)
DMSとは変数。RMとは実数。RM=(N)
DMS=FRAC(S)*60
もしSで3が何文字目=1ならば
RM=((N)*-1)
INT(S)&"."&INT(DMS)&"."&MID(((FRAC(DMS)*60)+RM),1,6)を戻す
#度分秒→度
●DMS2DEG(S)
Dとは実数。Mとは実数。Cとは実数。Aとは実数
もしSで3が何文字目=1ならば
D=MID(S,1,2)
M=MID(S,3,2)
C=MID(S,5,2)+(N)
A=(Sの1から6文字削除)
違えば
D=MID(S,1,3)
M=MID(S,4,2)
C=MID(S,6,2)+((N)*-1)
A=(Sの1から7文字削除)
D&"."&INT(((M*60000)+(C*1000)+A)/3.6)を戻す
#Tokyo→WGS84 入力:度
●TOKYO2WGS84(B,L)
「{B-(0.00010695*B)+(0.000017464*L)+0.0046017}{~}{L-(0.000046038*B)-(0.000083043*L)+0.010040}」を戻す
●WGS842TOKYO(B,L)
「{B+(0.00010696*B)-(0.000017467*L)-0.0046020}{~}{L+(0.000046047*B)+(0.000083049*L)-0.010041}」を戻す