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

GeoFire - Save item to specific location with radius

目前我没有任何代码可以分享,但我正在尝试找出解决问题的方法。我希望你们中的一些人可以提供一些建议。

我正在构建一个应用程序,我从 geolocation 获取用户的 lat/long,如果他们在预定的半径范围内,他们可以 post 将数据发送到服务器,但如果它们不在我指定的区域中则不行。例如,这是一张图片:

所以在这个例子中,如果用户在其中一个圆的半径内,则用户可以 post,但如果不在,则不能。

我还必须根据他们所在的圈子获取数据..

我想知道的是,我将如何指定这些半径存在的位置以及这种缩放是否容易?如果我需要添加 10-30 个新位置,这会很容易吗?

你有来自设备的用户位置,因为你有圈子;你有圆心和半径。在 posting 时,您检查从用户位置到圆心的距离并枚举圆圈位置。如果距离在半径内,他们可以 post 如果不是,则不会。

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()
}