アクセスユーザーのIPアドレスから地図上に位置を表示できるDIY MapをHome下部に設置した。
DIY Mapはrecent visitor web siteへ移動。
地図のクオリティーはちょっと残念な感じもするけど、地図を表示しアクセスユーザーのIPアドレスをもとに緯度経度地点をポイントできるのはゴキゲン。
拡大縮小などの最低限のインターフェースをもち、背景色や文字サイズなどの設定はXML形式で指定できる。
IPアドレスから緯度経度(lat,long)の取得は hosttip.info APIを利用している。
hosttip.infoは皆で geolocate IP addresses Database を作ろう、な様子で必ず緯度経度が取得できるわけではなく、表示できなかったら都市名を教えてくれたら追加していくよ、な人力プロジェクト。
上記サイトにアクセスし緯度経度の表示ができない場合は追加していくと精度が上がるので協力してあげると良いかも。
DIY Map
PHPファイル x 4
swf x 1
が解凍される。
【PHP】
README.php
簡単な使い方が記述されている。
setupdb.php
データベース(MySQL)テーブルを1つ作成する。一度実行したら後は不要。
geodisplay.php
swf表示用設定ファイル、DB接続情報が必要。
geocounter.phpでDBに格納したデータを都市ごとにXML形式に吐き出す。
XML形式で設定、設定詳細はconfigureで確認できる。
geocounter.php
アクセス情報をDBへinsertする、DB接続情報が必要。
各コンテンツへincludeすることでアクセス情報を蓄積していく。
READMEにも記述があるが、hosttip.infoにIP Addressを送りLatitude, Longitudeを取得するのにタイムラグが発生しパフォーマンスが悪くなる恐れがある、そうです。
【swf】
world.swfを表示させたいコンテンツにタグを記述。
swfobject 2.0 を使い埋め込んだ。
swfソースの指定に併せてgeodisplay.phpの指定が必要。
GET渡しのようにdata_file=geodisplay.phpの記述をする、ブログなどで使う時はgeodisplay.phpまでのパスを絶対パスで指定すると吉。
world.swf?data_file=geodisplay.php
設置はうまく行っているようで、DBにデータがたまり始めている。
後は表示swfに反映できるか!?
ある程度データが揃わないといけないようなので1ヵ月後ぐらいが楽しみな感じ。
表示されなかったのは、geodisplay.phpのクエリにテーブル名がハードコードされていたため。
ファイル先頭で変数へセットしているので見逃した。
geodisplay.php, geocounter.phpはWordpressように$wpdbを使う形に改造した。
update
hosttip.infoのDB精度がイマヒトツで沖縄でishikawaな様子も見られる。
海外の都市の位置は良くわからないのですが、どうなんでしょ?
IP Addressからlat, longは有料サービスしか見つけられなかった。
それも結構なお値段、無料で使えて精度もイイヨなところないかな。