Web アプリケーションを作成する際、背景地図に何を使用していますか?
おなじみの Google マップ、Bing Maps、そして ArcGIS.com マップ ビューアや ArcGIS Explorer Online で使用されている ArcGIS Online の道路地図といった世界地図のマップ サービスをお使いの方もいらっしゃると思います。
そして、アプリケーションの機能にマウス ポイントの座標値を取得するなどの機能はありませんか?
もし、座標値を取得する機能がある場合、通常そのまま座標値を取得したとしても、それは緯度経度ではないはずです。上記で紹介しました世界地図のサービスの座標系は WGS 1984 Web メルカトル (Auxiliary Sphere)(以下、Web メルカトル) を使っており、座標の単位は、メートルになります。
下図をご覧ください。単に座標値を表示していますが、メートル単位で、やはりこれだと私たちの感覚としてわかりづらいのではないでしょうか。
そこで、Web メルカトル の座標を緯度経度(度(10 進数))の座標値に変換する方法を、各 Web API でご紹介します。
変換と聞くと、変換式などいろいろ難しいと思うかもしれませんが、各 API* が提供しているライブラリを使うだけで、とてもシンプルに座標変換を行うことができます。
具体的には、各 API の変換メソッドを呼び出すだけです。
・ArcGIS API for JavaScript
Esri 名前空間の geometry クラスの webMercatorToGeographic メソッドを使います。
esri.geometry.webMercatorToGeographic(<ジオメトリ>)
・ArcGIS API for Flex
Flex では、com.esri.ags.utils パッケージの WebMercatorUtil クラスを用いて変換します。
WebMercatorUtil.webMercatorToGeographic(<ジオメトリ>)
・ArcGIS API for Silverlight
ESRI.ArcGIS.Client.Projection 名前空間の WebMercator クラスの ToGeographic メソッドを使用して変換できます。
<WebMercator クラスの変換>.ToGeographic(<ジオメトリ>)
*各 API の対応バージョンは、以下の通り。
ArcGIS API for JavaScript:バージョン 1.4 以降
ArcGIS API for Flex:バージョン 1.2 以降
ArcGIS API for Silverlight:バージョン 2.0以降
上記の方法を使用すると、下図のように緯度経度で座標値を取得できます。
API を使えば、シンプルなコードで見慣れた緯度経度で表示することができます。
各 API ではその他様々なクラス、そしてサンプルを数多く提供しています。 何かを実現したくなったとき、お使いの API に用意されている 「API Reference」 や「samples」を参考にしてみてください。
関連リンク
- ArcGIS API for JavaScript (ESRI ジャパン Web サイト)
- ArcGIS API for JavaScript (米国 Esri 社 Web サイト)