迅速に distanceFromLocation メソッドを使用して、ユーザーの場所と別の事前定義された CLLocation の間の距離を見つけることができるように、MKUserLocation を CLLocation に変換する方法が必要です。
3 に答える
MKUserLocation にはプロパティ location があり、たまたま CLLocation タイプです。
https://developer.apple.com/library/ios/documentation/MapKit/Reference/MKUserLocation_Class/index.html#//apple_ref/occ/instp/MKUserLocation/locationを参照してください。
ただし、最初に配置する必要があるものがいくつかあります。
- 位置情報を使用する許可をユーザーに求める必要があります。これには、CLLocationManager の requestWhenInUseAuthorization の呼び出しと非同期結果のチェックが含まれます。
- NSLocationWhenInUseUsageDescription エントリを情報 (上記のリンクで説明) に追加して、その情報で何をしたいのかをユーザーに伝えます。
- ほとんどの場合、場所を非同期で取得する必要があります。これを行うには、View Controller で MKMapViewDelegate を実装する必要があり、func mapView(mapView: MKMapView!, didUpdateUserLocation userLocation: MKUserLocation!) を使用してユーザーの場所を取得します。
Xcode 6.4、iOS 8.4 用、ARC 対応
良い答えはすでにここに投稿されています。ただし、迅速に特定の例を示すものはありません。次の点に注意してください。
MKUserLocation クラスは、ユーザーの現在の場所を識別する特定のタイプの注釈を定義します。このクラスのインスタンスを直接作成することはありません。代わりに、アプリに表示されるマップ ビューの userLocation プロパティから既存の MKUserLocation オブジェクトを取得します。
ロケーション プロパティは読み取り専用です。
var location: CLLocation! { get }
したがって、このプロパティを使用すると、distanceFromLocation: を直接使用できますが、現在のユーザーの場所は使用しないでください。明らかに 0 メートルが返されるためです。ほとんどの場合、測定する新しい CLLocation を初期化する必要があります。
func distanceFromLocation(_ location: CLLocation!) -> CLLocationDistance
お役に立てれば!乾杯。