2011/12/24更新

[XCODE] iPhone Mapの地点を扱う3つの方法

このエントリーをはてなブックマークに追加            

今日もiPhoneアプリケーションで地図情報を扱う場合に、意識すべき3つの位置情報を記載します。

地図上の場所をiPhoneで特定する場合に、3つの方法があります。 経緯度で特定する方法、メルカトル図法のx、y座標で特定する場合、画面の表示位置で特定する場合です。 詳細を以下に記載していきたいと思います。





球体の地球を2次元という平面上に表現するという意味

地球は丸い。その丸い地球を平面上に完全に表現する事は出来ないと言われています。そのため、iPhoneで利用している地図(GoogleMap)では、メルカトル図法を採用しています。メルカトル図法の詳細はwikipedia:メルカトル図法を参照してみてください。メルカトル図法では、どの緯度における経線も赤道における経線の長さと同じなるため、北極(または南極)に近づくにつれて実際よりも土地が拡大されて表現されます。例えばグリーンランドは実際より16倍大きく表現されるみたい。

Location Awareness Programming Guide(p.28)より

f:id:yoheiM:20110321172506p:image





1つ目:経緯度(Map Coordinates)

経度(longitude)、緯度(latitude)を利用して地図上の地点を特定できます。この経緯度は地球上の位置特定のため最も良く使われる方法です。iPhoneではCLLocationCoordinate2D構造体を利用してlongitude, latitudeを纏めて扱うことができます。またMKCoordinateSpan構造体やMKCoordinateRegion構造体を利用して、表示する範囲を指定する事が出来ます。





2つ目:x座標y座標(Map Points)

メルカトル図法上のx、y座標を利用して地点を特定できます。この方法は、地点や距離や範囲に関して、四則演算を手軽に行う事が出来ます。また、マップ上に表現する図形(オーバーレイ)の地点や範囲を指定するために利用します。iPhoneでは、MKMapPoint構造体やMKMapRect構造体を利用します。





3つ目:ディスプレイ上の地点(Points)

UIViewオブジェクトが持つグラフィック上の座標を利用して地図上の地点を特定できます。CGPoint構造体やCGSize構造体、CGRect構造体を利用してグラフィック上の地点(または範囲)情報を保持します。画面上の○○ピクセル右は、経度××といった特定を行うことができます。





3つの地点情報の変換方法

それぞれ異なる地点特定方法は、値をそれぞれに変換することができます。以下の図は、Location Awareness Programming Guide(p.29)より。

f:id:yoheiM:20110321172507p:image





座標系の計算に用いる事の出来る便利な関数

MapKitには、便利な関数が多数用意されているようです。詳細はこちらMap Kit Functions Referenceを参考にしてみてください。





最後に

今日はMapの地点特定方法を学びましたが、3種類もあるとは。メルカトル図法という単語は、その昔、学校で聞いた事あったなと懐かしく思い出しました。プログラミングの勉強をしていますが、その他にも様々な理系な内容を学ぶことができてとてもありがたいなぁと思う今日この頃。プログラムをする上で科学という事は必要不可欠なんですね。まだまだ学び足りないと思いました。

次はMap上の位置特定を行う注釈(アノテーション)を利用してみようと思います。またブログに残せたら良いな。

最後になりますが、私のTwitter(@yoheiMune)も宜しくお願いします。







こんな記事もいかがですか?

RSS画像

もしご興味をお持ち頂けましたら、ぜひRSSへの登録をお願い致します。