1
我試圖按照this tutorial設置地理位置地理位置,但我想使用從我的Firebase數據庫中獲取的一系列信息創建地理圍欄。有誰知道我會怎麼做,或有任何教程,他們可以鏈接我?由於我對Swift非常陌生,我正在努力圍繞我如何做到這一點。有人可以幫我解釋一下我會做什麼,或者將我指向某個人/某個可以解釋這一點的地方?如何使用一組信息創建地理圍欄?
我試圖按照this tutorial設置地理位置地理位置,但我想使用從我的Firebase數據庫中獲取的一系列信息創建地理圍欄。有誰知道我會怎麼做,或有任何教程,他們可以鏈接我?由於我對Swift非常陌生,我正在努力圍繞我如何做到這一點。有人可以幫我解釋一下我會做什麼,或者將我指向某個人/某個可以解釋這一點的地方?如何使用一組信息創建地理圍欄?
事情是這樣的:
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,以便在設備進入或離開地理圍欄時通知您。
數據庫中有什麼?它是經度/緯度嗎?您通常需要一個點和一個半徑來製作地理圍欄。 –
數據庫具有經度+經度以及區域的半徑和標識符。感謝下面的例子,我會給它一個鏡頭。 –