マッシュアップ日記(1)Map!緯度経度!
June 21, 2006 10:07 PM by ooi1
大井宏友です。
マッシュアップアワードが始まってはや2週間、もうアイデアが浮かんで手が動き始めている方も多いのではないかと思いますが、リクルートが提供するAPIもようやく出揃いました。
やっぱり地図とマッシュアップ?
「マッシュアップ」でまず思いつくのが、地図を使ったものじゃないかと思います。実際、Internet Magazine2006年4月号付録の「世界のマッシュアップサイト50」のうち、過半数の26サイトが地図をマッシュアップしたサイトでした。
リクルートのAPIを俯瞰して見てみると、じゃらん・フロムエーの二つのresponseに緯度経度が含まれています。これはもう「地図とマッシュアップしてください」というメッセージに違いありません(笑)。
ということで、私もじゃらん・フロムエーと、Google Mapsをマッシュアップしてみたいと思います。
開発言語はPerlとJavaScriptにします
マッシュアップアワードでは
開発実行環境として、NetBeans、Sun Java Studio開発ツール群、Sun Java Systemミドルウェア群を推奨しており、同ツール、ミドルウェアの利用作品はアワードの選考・評価時に加点評価されます。とされていますが…
ごめんなさいっ!
たたみラボにはこれらの環境で開発できる人間がおりませんので、Perlで開発させていただきます。
緯度経度のフォーマット
いろいろあって、バラバラ
先日のエントリーにありますとおり、緯度経度を表すフォーマットは何種類か存在します。これから作ろうとしている、じゃらん・フロムエー・Google Mapsが採用しているフォーマットをまとめてみると、
| フォーマット | 測地系 | |
| degree(xxx.xxxxxxxx) | wgs84 | |
| じゃらん | ミリ秒(yyyyyyyyy) | 日本 |
| フロムエー | 度・分・秒(zzz.zz.zz) | 日本 |
と、まるでバラバラです(リクルート内でもそろってないことはグループ会社としても申し訳なく思います)。そのため、じゃらん・フロムエーの情報をGoogle MapsにプロットするためにはGoogleが採用しているdegree/wgs84に変換する必要があります。
緯度経度を扱うPerlモジュール
そこで、今回は緯度経度を扱うPerlモジュール(ライブラリのようなもの)である、「Location::GeoTool」(公式サイト/作者のサイト)を利用したいと思います(すばらしいpmを開発された大塚さんに大感謝です)。
モジュールについては公式サイトなどを見ていただくとして、じゃらん・フロムエーからGoogle Maps用に変換するコードの例を紹介します。
じゃらん→Google
use Location::GeoTool;()#ソースファイル内で一度だけでいい my $lat = 163501149; #じゃらんAPIで返ってきた緯度 my $lon = 510057281; #じゃらんAPIで返ってきた経度 #GeoToolオブジェクトを作る my $jalanGeo = Location::GeoTool->create_coord($lat / 1000, $lon / 1000, 'tokyo', 'second'); #wgs84に変換 my $worldGeo = $jalanGeo->datum_wgs84; #degreeに変換 my $degreeGeo = $worldGeo->format_degree; #degree/wgs84の緯度経度を取り出す my $newLat = $degreeGeo->lat; my $newLon = $degreeGeo->long;
こんな感じで変換できます。オブジェクト作成~変換までを1行で書くと、
my $degreeGeo = Location::GeoTool->create_coord($lat / 1000, $lon / 1000, 'tokyo', 'second')->datum_wgs84->format_degree;
フロムエー→Google
use Location::GeoTool;()#ソースファイル内で一度だけでいい my $lat = "35.51.25"; #フロムエーAPIで返ってきた緯度から頭文字をとったもの my $lon = "139.43.44"; #フロムエーAPIで返ってきた経度から頭文字をとったもの #GeoToolオブジェクトを作る my $faGeo = Location::GeoTool->create_coord($lat . ".000", $lon . ".000", 'tokyo', 'gpsone'); #degreeに変換 my $degreeGeo = $faGeo->datum_wgs84->format_degree; #degree/wgs84の緯度経度を取り出す。 my $newLat = $degreeGeo->lat; my $newLon = $degreeGeo->long;
次回
次はGoogle Mapを貼ってみます。
TRACKBACK URL:
TRACKBACKS
? ZAPAnet宿・ホテル検索作りました by [Z]ZAPAブロ〜グ2.0ZAPAnet宿・ホテル検索作りました。 →ZAPAnet宿・ホテル検索 ZAPAnet宿・ホテル検索では、じゃらんWebサービスを利...

