Firebase GeoFire-使用半径将项目保存到特定位置

Firebase GeoFire-使用半径将项目保存到特定位置,firebase,firebase-realtime-database,geolocation,geofire,Firebase,Firebase Realtime Database,Geolocation,Geofire,目前我没有任何代码可供共享,但我正试图找出如何解决我的问题。。我希望你们中的一些人能提出一些建议 我正在构建一个应用程序,在该应用程序中,我可以从地理位置获取用户的lat/long,如果他们位于具有半径的预定区域内,他们可以将数据发布到服务器,但如果他们不在我指定的区域内,则不允许。。以下是一幅图像,例如: 因此,在本例中,如果用户在其中一个圆的半径内,则可以发布,但如果用户不在,则不能发布 我还必须根据他们所在的圆圈获取数据 我想知道的是,我该如何指定这些半径的存在位置,以及这种缩放是否容易

目前我没有任何代码可供共享,但我正试图找出如何解决我的问题。。我希望你们中的一些人能提出一些建议

我正在构建一个应用程序,在该应用程序中,我可以从
地理位置获取用户的lat/long,如果他们位于具有半径的预定区域内,他们可以将数据发布到服务器,但如果他们不在我指定的区域内,则不允许。。以下是一幅图像,例如:

因此,在本例中,如果用户在其中一个圆的半径内,则可以发布,但如果用户不在,则不能发布

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


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

您可以从设备和圆圈中获得用户位置;你有圆心和半径。发帖时,检查用户位置到圆圈中心的距离,并列举圆圈位置。如果距离在半径范围内,他们可以发布,如果不在,则不在

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