Google Maps API、じゃらん宿表示API、グルメサーチAPIで緯度・経度を使い回す方法
当サイトではアフィリエイト広告を利用しています。
Jリーグスタジアム情報のサイトを作るにあたって、APIでデータを持ってくるのに「キー」になってくるのが、『緯度・経度』になります。しかし一言で『緯度・経度』といっても各サービスで使われる仕様が違っているので、これを変換しないと使えません。
色々と試行錯誤をした結果自分的には綺麗に整理できたと思うので、メモとして書いておこうと思います。
緯度・経度の表示方式については、色々とあって複雑怪奇(ってこともないのか)のため、自分が説明すると逆に混乱するので、詳しく知りたい方はどんどんと検索してください。
緯度経度とは
緯度経度 座標変換
各APIの緯度・経度の仕様確認
緯度・経度の詳細はさておき、実際に各APIで使われている緯度・経度の仕様を確認してみます。
なお、Google Maps APIはGoogle Labsでリリースされている「Google Maps JavaScript API V3」を使っています。
API名 | 仕様名 | サンプル |
---|---|---|
Google Map API | DEGREE形式(世界測地系) | 35.678167 |
じゃらん宿表示API | ミリ秒形式(日本測地系) | 128429787 |
グルメサーチAPI | DEGREE形式(日本測地系) | 35.674931 |
サンプルはすべて「国立競技場」のものですが、全部数字が違うんですよね・・・
各APIの緯度・経度の変換方法
違いがわかったところで、これを一つ一つ調べていたのではやってられないし、マッシュアップの意味が無くなってしまうので、一つを基準に変換していくことにしました。
基準にしたのは、Google Map APIで使う「DEGREE形式(世界測地系)」です。ちなみに、サイト公開のところでも書きましたが、この数値だけはAPIで持ってこないでGeocodingで調べて転記しています。
※Geocoding APIを使えば住所orランドマークから緯度経度を参照させることができます。
まずは、実際に使っているソースから
$lat = <MTIfNonEmpty tag=”lat”><MTlat></MTIfNonEmpty>;//緯度
$lng = <MTIfNonEmpty tag=”lng”><MTlng></MTIfNonEmpty>;//経度
$lat_en = urlencode($lat); //緯度エンコード
$lng_en = urlencode($lng); //経度エンコード
$lat_ = $lat_en * 1.00010696 – $lng_en * 0.000017467 – 0.0046020;//緯度日本表示
$lng_ = $lng_en * 1.000083049 + $lat_en * 0.000046047 – 0.010041;//経度日本表示
$lat_j = ceil($lat_ * 3600000);//緯度丸め込み
$lng_j = ceil($lng_ * 3600000);//経度丸め込み
上から順番にカスタムフィールドに入力した緯度経度情報を取得
次に、カスタムフィールドからきたデータが文字列になっているので、数値データにエンコード
次の計算式で、世界測地系から日本測地系に変換
最後に、日本測地系になった緯度経度をミリ秒形式に変換
このとき「ceil関数」を使っているのは、かけ算をしたときに小数点以下が大きくなってしまうときがあるので、それを切り上げるためです。
このステップで、すべての変換作業が終了です。
ここから、じゃらん宿表示APIには「$lat_j」と「$lng_j」を、グルメサーチAPIには「$lat_」と「$lng_ 」を渡せばOKです。
Sponsored Links