仕事で、Yahoo! 地図を使用することがあって、1つだけハマったので、メモ。
とりあえずは、チュートリアルとして、Yahoo!デベロッパーネットワークのサンプルを試してみることにした。
http://developer.yahoo.co.jp/webapi/map/maps/v2/js/
まずは手順ですが、JavaScript 版の Yahoo! 地図を使用するにあたり、Google Map 等と同様、アプリケーションIDの取得を行う必要があります。
アプリケーションIDの取得が完了したら、あとは サンプル通り、アプリケーションIDを設定したパスで、SCRIPT タグを HTML 内に定義し、JavaScript にて、YahooMapsCtrl (地図制御クラス?)を初期化して使用します。
ここで、Yahoo! が提供しているサンプルをそのまま使用し、問題なく動作したので、早速、自分の指定した座標で使用してみることにしました。
で、座標の求め方ですが、解説にある「緯度経度の調べ方」を参考に地図を検索して URL より座標を取り出して、JavaScript に記述したところ、ほんの少しズレるんですよ。
なぜだかよーわからんと思ってもう一度、緯度経度情報を取得する部分の解説を読んでみたところ、
「※ここで表される緯度経度は、度形式、日本測地系(TOKYO97)です。」と。
「日本測地系」と言われてももー何のことかさっぱりわからんので、探してみたところ、
http://www.gsi.go.jp/LAW/G2000-g2000-h3.htm に簡単な解説がありました。
まー要するに、日本測地系と世界測地系ってのがあって、東京付近では北西方向へ450mほどずれるということです。(笑)
ここで腹立たしかったのは、YahooMapCtrl クラスのコンストラクタのデフォルト(サンプルもデフォルトを使用)は日本測地系となるのに、その先の緯度経度の求め方で取得できる緯度経度は世界測地系でしかとれないってところ。
サンプル通りだとクラス自体は日本測地系なのに、世界測地系の緯度経度を渡してもそりゃズレるわな。
今時なので、クラスのデフォルトは世界測地系にすべきではないかと思うし、せめてサンプルコードを世界測地系を基準に書かないと変に迷うよね。なんかかみ合ってないよー。
ってことで、リファレンスを参照して、YahooMapsCtrl(id, pos, layer, mode, datum) の datum に YDatumType.WGS84 を指定して無事解決。
とはいえ、Yahoo! 地図は、私の環境では Google Map よりも軽快に動作するし、APIも割りとシンプルで扱いやすそうなので、当分使ってみることにしました。