【问题标题】: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()
}