たたみラボ

  • about
  • member
  • r&d
  • blog
  • tatamicast

blog

RSS

マッシュアップ日記(1)Map!緯度経度!

icon 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が採用しているフォーマットをまとめてみると、

 フォーマット測地系
Googledegree(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を貼ってみます。

TRACKBACKS

ページトップへ



(C) RECRUIT MEDIA COMMUNICATIONS CO., LTD.