location — iOS 上の位置情報サービス

 location モジュールは、iOS 上のGPSなどの位置情報データへのアクセスを可能にします。加えて、住所を緯度軽度に変換したり、その逆に変換するのにも使えます。

 (注 最初にこのモジュールを使用する際に、iOS からの位置情報サービスを使用する許可を求めるダイアログが表示されます。Pythonista アプリに位置情報へのアクセスを許可しないと、以下の関数の多くは正しい値を返しません。)

location モジュールの関数:

location.get_location()

 入手した中で、最新の位置情報データを返します。戻り値は現在の位置を示す多くの値のディクショナリー型になっています。(最も大事なのは「緯度」「経度」「タイムスタンプ」です。)このディクショナリーは reverse_geocode() 関数の引数としても使えます。位置情報データが得られていない場合(あるいは Pythonista に位置情報へのアクセスを許可していない場合)には、None を返します。

location.start_updates()

 位置情報データの更新を開始します。get_location() を使用する前に必ず呼び出す必要があります。省エネのためには、位置情報が不要になったら stop_updates() を呼び出すことをお勧めします。

location.stop_updates()

 位置情報の更新を停止します。

location.geocode(address)

 引数 address の住所のディクショナリーから緯度経度への変換を行います。戻り値は該当する緯度経度のリストです。見つからなかった場合には空のリストを返します。リストの形式は、「緯度」(latitude)と「経度」(longitude)をキーとするディクショナリー型です。

 例)

import location
address_dict = {'Street': 'Infinite Loop', 'City': 'Cupertino', 'Country': 'USA'}
results = location.geocode(address_dict)
print(results)

location.render_map_snapshot(lat, lng, width=1000, height=1000, map_type='standard', show_poi=True, img_width=240, img_height=240, img_scale=0)

 引数で指定した範囲の地図画像をアップルの地図システムを使用して表示します。

 引数の lat(緯度)と lng(経度)で地図の中心を指定します。引数 width と height (単位はメートル)は地図の縮尺の設定の際に考慮されます。引数 map_type は「stndard」、「satellite」、「hybrid」のいずれかに設定します。

 戻り値は引数 img_width と img_height で指定したサイズと引数 img_scale(デフォルトではゼロ、すなわち使用しているデバイスの画面のスケール)で指定した縮尺の ui.image です。

 例)

import location
img = location.render_map_snapshot(48.8582, 2.2945, map_type='satellite', img_width=512, img_height=512)
img.show()
location.reverse_geocode(location)

 次に、緯度経度で表された場所を人が読んで分かる住所に変換してみましょう。場所を示す引数は、latitude(緯度) と longitude(経度) の値からなるディクショナリー型です。戻り値は(通常は単一の)住所のディクショナリー型のリストになります。

 例)

import location
coordinates = {'latitude': 37.331684, 'longitude': -122.030758}
results = location.reverse_geocode(coordinates)
print(results)

location.is_authorized()

 位置情報のアクセスが許可されている場合には True を、許可されていない場合には False を返します。(例えば、許可ダイアログがまだ表示されていない時や、ペアレンタルコントロールでアクセスが禁止されている場合など)