Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 按距离查询类_Swift_Xcode_Server_Vapor - Fatal编程技术网

Swift 按距离查询类

Swift 按距离查询类,swift,xcode,server,vapor,Swift,Xcode,Server,Vapor,假设我需要查询vapor中两个类之间的距离 let distanceBetweenLocations = 5 let CloseLocations = try Locations.query().filter("lat", .distance , .isLessThan , 4) 类似这样的问题我不确定你是否理解你的问题在逻辑上是错误的 很明显,你需要做一些计算才能得到实际的距离 我建议在您的模型上使用func创建扩展,该扩展将计算坐标之间的距离,然后在filter func中使用if 也许是

假设我需要查询vapor中两个类之间的距离

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

类似这样的问题我不确定你是否理解你的问题在逻辑上是错误的

很明显,你需要做一些计算才能得到实际的距离

我建议在您的模型上使用func创建扩展,该扩展将计算坐标之间的距离,然后在filter func中使用if

也许是这样的:

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
  }
}
我尽量不粗鲁,但是
我希望你只是懒得正确提问,如果你没有,请参阅测试项目阅读所有内容,并尝试理解,当你这样做时,你将知道如何实现你所需要的。

你的问题没有任何意义。。。请重写一下,我们可以帮你