2016-11-24 65 views
-2

比方说,我需要查询的vapor.Here两个类之间的距离是我的意思蒸气查询类按距离

let distanceBetweenLocations = 5 
let CloseLocations = try Locations.query().filter("lat", .distance , .isLessThan , 4) 

类似的东西

+0

你的问题没有任何意义...请重写它,我们可以帮助你 – Quver

回答

1

我不知道,如果你认识到自己问题在逻辑上是错误的。

很明显,你将不得不做一些计算来实际得到距离。

我建议创建扩展与FUNC在你的模型,该模型将计算坐标之间的距离,然后在过滤器FUNC使用,如果....

像这样的东西可能:

extension Location{ 
    func distance(lat: Double, lon: Double) -> Double { 

     let R = 6371.0 
     let dLat = (lat - localLat) * 3.14/180 
     let dLon = (lon - localLon) * 3.14/180 
     let latRad1 = localLat * 3.14/180 
     let latRad2 = lat * 3.14/180 

     let a1 = sin(dLat/2) * sin(dLat/2) 
     let a2 = sin(dLon/2) * sin(dLon/2) * cos(latRad1) * cos(latRad2) 

     let a = a1 + a2 
     let c = 2 * atan2(sqrt(a),sqrt(1-a)) 
     return R * c 
    } 
} 

我想不要粗鲁,但 我希望你只是懒得问正确,如果你不是,请参阅this测试项目阅读它试图了解,当你这样做,你会知道如何实现你所需要的。