2

迅速に distanceFromLocation メソッドを使用して、ユーザーの場所と別の事前定義された CLLocation の間の距離を見つけることができるように、MKUserLocation を CLLocation に変換する方法が必要です。

4

3 に答える 3

4

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!) を使用してユーザーの場所を取得します。
于 2015-02-22T19:33:17.470 に答える
0

Xcode 6.4、iOS 8.4 用、ARC 対応

良い答えはすでにここに投稿されています。ただし、迅速に特定の例を示すものはありません。次の点に注意してください。

MKUserLocation クラスは、ユーザーの現在の場所を識別する特定のタイプの注釈を定義します。このクラスのインスタンスを直接作成することはありません。代わりに、アプリに表示されるマップ ビューの userLocation プロパティから既存の MKUserLocation オブジェクトを取得します。

ロケーション プロパティは読み取り専用です。

var location: CLLocation! { get }

したがって、このプロパティを使用すると、distanceFromLocation: を直接使用できますが、現在のユーザーの場所は使用しないでください。明らかに 0 メートルが返されるためです。ほとんどの場合、測定する新しい CLLocation を初期化する必要があります。

func distanceFromLocation(_ location: CLLocation!) -> CLLocationDistance

お役に立てれば!乾杯。

于 2015-07-29T16:31:07.550 に答える