代码之家  ›  专栏  ›  技术社区  ›  Simon

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

  •  1
  • Simon  · 技术社区  · 6 年前

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

    geolocation 如果他们在预定的半径区域内,他们可以将数据发布到服务器,但如果他们不在我指定的区域内,则不允许。。以下是一幅图像,例如:

    enter image description here

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

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

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

    1 回复  |  直到 6 年前
        1
  •  1
  •   Peter de Vries    6 年前

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

    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()
    }
    
    推荐文章