Open2
ハバースインの公式を使用して2点間の距離を計算する

Kotlinで緯度と経度を2点渡した際に、その距離をメートル単位で返す関数を以下のように書くことができます。ここでは、ハバースインの公式を使用して2点間の距離を計算しています。
import kotlin.math.*
fun distanceInMeters(lat1: Double, lon1: Double, lat2: Double, lon2: Double): Double {
val R = 6371000.0 // 地球の半径(メートル)
val dLat = Math.toRadians(lat2 - lat1)
val dLon = Math.toRadians(lon2 - lon1)
val a = sin(dLat / 2) * sin(dLat / 2) +
cos(Math.toRadians(lat1)) * cos(Math.toRadians(lat2)) *
sin(dLon / 2) * sin(dLon / 2)
val c = 2 * atan2(sqrt(a), sqrt(1 - a))
return R * c
}
fun main() {
val lat1 = 35.681236
val lon1 = 139.767125
val lat2 = 34.693738
val lon2 = 135.502165
val distance = distanceInMeters(lat1, lon1, lat2, lon2)
println("距離: $distance メートル")
}

ChatGPT感謝