【问题标题】:How to calculate angle between two Geolocations?如何计算两个地理位置之间的角度?
【发布时间】:2011-08-12 12:12:34
【问题描述】:

我正在使用 Phonegape 和 jQuery mobile 为 Android 智能手机构建应用程序。

我想构建一个应用,该应用使用指向给定地理位置的箭头,以便用户知道他/她必须朝哪个方向才能到达该点。
所以我需要一个函数或公式来确定与目标地理位置的角度(最好以度为单位)。有谁知道我该怎么做?

【问题讨论】:

    标签: jquery android navigation angle geopositioning


    【解决方案1】:

    您要查找的内容称为方位角,即给定对象与北方之间的角度。

    要找到该角度,请使用以下公式:a = arctan(|(y2-y1)/(x2-x1)|) * 180/pi 其中 A 点为 (y2,x2),B 点为 (y1,x1)。

    至于你如何在代码中做到这一点,我不知道。我不使用这些平台。 有人对此有什么意见吗?

    【讨论】:

    • 嗨,迈克尔,感谢您的回复!所以我必须确定两个位置的方位角,然后我才能确定位置 1 到位置 2 的角度,对吧?
    • 不,你看,一旦你有了两个点的 XY(或笛卡尔,相同的东西)坐标,你就可以将它们代入公式,并得到北和连接两个点的线之间的角度。假设您站在坐标为 (100, 100) 的 A 点,您想前往坐标为 (200,200) 的 B 点。您将这些值代入公式中以找到您应该行走的角度:a = arctan(|(200-100)\(200-100)|) = arctan(|100\100|) = arctan 1 = 0.78 这意味着您应该从 A 点经过 0.78 度到达 B 点。
    • 好的,对不起,那是错误的。你得到的结果是弧度(另一种测量角度的形式)。您需要做的是将结果乘以 180/pi。在我们的示例中,这会给您 45 度,这更有​​意义。修改后的公式:'a = arctan(|(y2-y1)/(x2-x1)|) * 180\pi'
    • 好的,我用 javascript var dLat = rad(200 - 100); var dLon = rad(200 - 100); var a = Math.atan2(dLat,dLon); 构建你的公式这很好,但如果我使用地理定位,则返回值是不可能的
    • 如果我们不使用 Geocedic 距离,那么越靠近我们得到的两极,这将大大偏离,并且计算这些距离并不简单。使用 euclidic (numeric deltaX,deltaY) 它在欧洲/丹麦有很大的优势。请参阅我的答案中的代码。
    【解决方案2】:

    必须使用测地线距离进行计算,否则计算的角度将明显偏离,尤其是。离两极越近。

    对于 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())
    
    

    【讨论】:

      猜你喜欢
      • 2011-12-28
      • 1970-01-01
      • 1970-01-01
      • 2011-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多