2017-05-30 16 views
1

私はthis tutorialに沿って地点のジオフェンスを設定しようとしていますが、Firebaseデータベースから取得した情報の配列を使用してジオフェンスを作成します。どのように私はそれを行うか、彼らは私のためにリンクすることができますチュートリアルを持って誰かが知っていますか?私はSwiftにかなり新しいので、これをどうやってやるのか、私の頭を包み込むのに苦労しています。誰かが私がやることを説明するのを助けるか、これを説明できる誰か/どこかに私を指摘することができますか?情報の配列を使用してジオフェンスを作成するにはどうすればよいですか?

+0

データベースには何がありますか?緯度/経度ですか?ジオフェンスを作成するには、一般的に点と半径が必要です。 –

+0

データベースには、緯度+経度と半径の識別子、およびその領域の識別子があります。以下の例をありがとう、私はそれを撃つだろう。 –

答えて

0

このような何か:

func startMonitoring(_ manager:CLLocationManager, region:CLCircularRegion) { 
    if !CLLocationManager.isMonitoringAvailable(for: CLCircularRegion.self) { 
     print("Cannot monitor location") 
     return 
    } 
    if CLLocationManager.authorizationStatus() != .authorizedAlways { 
     print("Please grant access") 
    } else { 
     let locationManager = CLLocationManager() 
     locationManager.startMonitoring(for: region) 
    } 
} 

func getRegionForLocation(_ location:CLLocation) -> CLCircularRegion { 
    let radiusMeters:Double = 1000 
    let identifier = "MyGeofence \(location)" 

    let region = CLCircularRegion(center: location.coordinate, radius: radiusMeters, identifier: identifier) 

    region.notifyOnEntry = true 
    region.notifyOnExit = !region.notifyOnEntry 

    return region 
} 

func getLocationsFromFireBase() -> [CLLocation] { 
    var locations:[CLLocation] = [] 

    // .. populate with locations from DB 

    return locations 
} 


//where you want to enable 
let locationManager = CLLocationManager() 
locationManager.requestAlwaysAuthorization() 

let locations = getLocationsFromFireBase() 

for location in locations { 
    let region = getRegionForLocation(location) 
    startMonitoring(locationManager, region: region) 
} 

私は(あなたがたとえば、あなたのInfo.plistにNSLocationAlwaysUsageDescriptionを追加する必要があります)場所へのアクセスを有効にする方法の上に光沢のですが、複数のジオフェンスを追加する一般的な原則が示されています。また、CLLocationManagerにデリゲートを追加して、デバイスがジオフェンスに出入りする際に通知する必要があります。

関連する問題