GeoFire - 将项目保存到具有半径的特定位置

时间:2018-02-19 13:33:05

标签: firebase firebase-realtime-database geolocation geofire

此时我还没有任何代码可以分享,但我想弄清楚如何解决我的问题。我希望你们中的一些人可能会有一些建议。

我构建了一个应用程序,我从geolocation获取用户的lat / long,如果他们在半径的预定区域,他们可以将数据发布到服务器,但不是如果它们不在我指定的区域中,则允许使用。例如:这是一个图像:

enter image description here

因此,在此示例中,如果用户位于其中一个圆圈的半径内,则可以发布,但如果他们不是。

我还必须根据它们所在的圈子来获取数据。

我想知道的是,我如何指定这些半径的位置'存在,这容易扩大吗?如果我需要添加10-30个新位置,那么这很容易吗?

1 个答案:

答案 0 :(得分:1)

您拥有设备中的用户位置,并且您拥有圈子;你有半径的圆心。在发布时,您检查从用户位置到圆心的距离,并枚举圆圈位置。如果距离在半径范围内,他们可以发布,如果没有,不是。

var radius = 100 //example

let canPostLocations = [
    CLLocation1,
    CLLocation2
]

func isInRange() -> Bool {
    for canPost in canPostLocations {
        let locationDistance = location.distance(from: canPost)
        if (locationDistance < radius) {
            return true
        }
    }
    return false
}

用作:

var mayPost = false
var userLocation: CLLocation! = nil

if userLocation != nil {
    mayPost = InRange(location: userLocation).isInRange()
}