2017-05-30 54 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) 
} 

我粉飾如何啓用位置訪問(你必須添加NSLocationAlwaysUsageDescription在您的info.plist爲例),但添加多個地理圍欄的一般原則所示。您還需要將代理添加到CLLocationManager,以便在設備進入或離開地理圍欄時通知您。

相關問題