【问题标题】:GeoFire - Save item to specific location with radiusGeoFire - 将项目保存到具有半径的特定位置
【发布时间】:2018-02-19 13:33:04
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: firebase firebase-realtime-database geolocation geofire


    【解决方案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()
    }
    

    【讨论】:

      猜你喜欢
      • 2018-09-22
      • 1970-01-01
      • 2019-02-01
      • 2019-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多