【发布时间】:2011-08-12 12:12:34
【问题描述】:
我正在使用 Phonegape 和 jQuery mobile 为 Android 智能手机构建应用程序。
我想构建一个应用,该应用使用指向给定地理位置的箭头,以便用户知道他/她必须朝哪个方向才能到达该点。
所以我需要一个函数或公式来确定与目标地理位置的角度(最好以度为单位)。有谁知道我该怎么做?
【问题讨论】:
标签: jquery android navigation angle geopositioning
我正在使用 Phonegape 和 jQuery mobile 为 Android 智能手机构建应用程序。
我想构建一个应用,该应用使用指向给定地理位置的箭头,以便用户知道他/她必须朝哪个方向才能到达该点。
所以我需要一个函数或公式来确定与目标地理位置的角度(最好以度为单位)。有谁知道我该怎么做?
【问题讨论】:
标签: jquery android navigation angle geopositioning
您要查找的内容称为方位角,即给定对象与北方之间的角度。
要找到该角度,请使用以下公式:a = arctan(|(y2-y1)/(x2-x1)|) * 180/pi 其中 A 点为 (y2,x2),B 点为 (y1,x1)。
至于你如何在代码中做到这一点,我不知道。我不使用这些平台。 有人对此有什么意见吗?
【讨论】:
a = arctan(|(200-100)\(200-100)|) = arctan(|100\100|) = arctan 1 = 0.78 这意味着您应该从 A 点经过 0.78 度到达 B 点。
var dLat = rad(200 - 100); var dLon = rad(200 - 100); var a = Math.atan2(dLat,dLon); 构建你的公式这很好,但如果我使用地理定位,则返回值是不可能的
必须使用测地线距离进行计算,否则计算的角度将明显偏离,尤其是。离两极越近。
对于 android 来说,可以这样简单地完成。
data class GpsLocation(
val latitude: Float, // Runs from south-pole to north pole
val longitude: Float // Runs East-West
)
fun GpsLocation.toLocation(): Location {
val location = Location(LocationManager.PASSIVE_PROVIDER)
location.latitude = latitude.toDouble()
location.longitude = longitude.toDouble()
//location.time = System.currentTimeMillis()
return location
}
fun GpsLocation.angleToOther(other: GpsLocation): Float =
toLocation().bearingTo(other.toLocation())
【讨论】: