サーチ…


距離フィルタ

例:

   CLLocationManager *locationManager = [[CLLocationManager alloc] init];
   locationManager.delegate = self;
   locationManager.desiredAccuracy = kCLLocationAccuracyBest;
   locationManager.distanceFilter = 5;

例上記のコード例では、5m未満の位置の変更はコールバックに送られず、無視されます。

CLLocationManagerを使用してユーザーの場所を取得する

1 - プロジェクトにCoreLocation.frameworkを含めます。これは次をクリックすることで実現されます:

root directory -> build phases -> Link Binary With Libraries

(+)ボタンをクリックし、CoreLocation.frameworkを探して追加をクリックします。

2 info.plistファイルを修正して、ソースコードとして開くことで、ユーザーの場所を使用する権限を求めます。次のいずれかのキーを追加します:アプリケーションの使用中にユーザーの場所の使用を求めるタグの下にある値のペア。

<key>NSLocationWhenInUseUsageDescription</key>
<string>message to display when asking for permission</string>

3使用するViewControllerにCoreLocationをインポートします。

import CoreLocation

4- ViewControllerがCLLocationManagerDelagateプロトコルに準拠していることを確認する

class ViewController: UIViewController,CLLocationManagerDelegate {}

これらの手順の後、CLLocationManagerオブジェクトをインスタンス変数として作成し、ViewControllerで使用することができます。

var manager:CLLocationManager!

代理人、更新前の最小距離イベント、およびその精度を指定するためにマネージャを変更するため、ここでは「let」を使用しません

//initialize the manager
manager = CLLocationManager()

//specify delegate
manager.delegate = self

//set the minimum distance the phone needs to move before an update event is triggered (for example:  100 meters)
manager.distanceFilter = 100

//set Accuracy to any of the following depending on your use case

//let kCLLocationAccuracyBestForNavigation: CLLocationAccuracy
//let kCLLocationAccuracyBest: CLLocationAccuracy
//let kCLLocationAccuracyNearestTenMeters: CLLocationAccuracy
//let kCLLocationAccuracyHundredMeters: CLLocationAccuracy
//let kCLLocationAccuracyKilometer: CLLocationAccuracy
//let kCLLocationAccuracyThreeKilometers: CLLocationAccuracy

manager.desiredAccuracy = kCLLocationAccuracyBest

//ask the user for permission
manager.requestWhenInUseAuthorization()

//Start collecting location information
if #available(iOS 9.0, *) {
            
   manager.requestLocation()
            
 } else {
  
   manager.startUpdatingLocation()
  
  }

次に、位置更新にアクセスするために、distanceFilterに達したことを超過する関数を実装することができます。

func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {}

locationsパラメータは、デバイスの実際の位置を表すCLLocationオブジェクトの配列です。これらのオブジェクトから、 coordinate,altitude, floor, horizontalAccuracy, verticalAccuracy, timestamp, description, course, speed 、および次の属性にアクセスできます。 2つの場所間の距離を測定する関数distance(from:)

注:ロケーションの許可を要求している間、2種類の許可があります。

「使用中」認証は、アプリが使用中またはフォアグラウンドで使用されている場合にのみ、アプリにあなたの場所を受け取る権限を与えます。

「いつも」の許可は、アプリを閉鎖した場合にバッテリ寿命を低下させる可能性のあるバックグラウンドの許可をアプリに与えます。

Plistファイルは必要に応じて調整する必要があります。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow