如何找到 2 个变量中存在的 2 lat lng 之间的距离,哪个变量数组为 2



>我正在尝试计算 2 lat lng 与 2 变量之间的距离,并检查它们是否低于截止值,然后 0 值否则 1

val loc1 = Array("12.764,76.833","12.763,76.839","12.762,76.832")
val loc2 = Array("12.764,76.836")
val cut_off = Array(10)
val R = 6372.8  //Earth radius in km
def getHaversineDistance(p1Lat: Double, p1Long: Double, p2Lat: Double, p2Long: Double): Double = {
    val dLat=(p2Lat - p1Lat).toRadians
    val dLon=(p2Long - p1Long).toRadians
    val a = pow(sin(dLat/2),2) + pow(sin(dLon/2),2) * cos(p1Lat.toRadians) * cos(p2Lat.toRadians)
    R * 2 * asin(sqrt(a))
}
这里 loc1

包含不同的地方 lat 和 lng .loc2 是 lat lng,应该与 loc1 的所有纬度和 lng 进行比较,并与截止值进行比较。

这段代码有效,但你应该在解析器上添加一些错误检查

import Math._
val loc1 = Array("12.764,76.833", "12.763,76.839", "12.762,76.832")
val loc2 = Array("12.764,76.836")
val cut_off = Array(10)
val R = 6372.8 //Earth radius in km
def getHaversineDistance(p1Lat: Double, p1Long: Double,p2Lat: Double, p2Long: Double): Double = {
  val dLat = (p2Lat - p1Lat).toRadians
  val dLon = (p2Long - p1Long).toRadians
  val a = pow(sin(dLat / 2), 2) + pow(sin(dLon / 2), 2) * cos(p1Lat.toRadians) * cos(
  p2Lat.toRadians)
  R * 2 * asin(sqrt(a))
}
def toList(arr: Array[String]): Seq[(Double, Double)] =
  arr.map(x => (x.split(",")(0).toDouble, x.split(",")(1).toDouble)).toList
val res = for {
  l1 <- toList(loc1)
  l2 <- toList(loc2)
} yield getHaversineDistance(l1._1, l1._2, l2._1, l2._2)
 println(res) // List(0.32543327331680283, 0.34391646279701354, 0.48761200638246516)

最新更新