【问题标题】:Calculate the direction of an object with geographical coordinates (latitude, longitude)用地理坐标(纬度、经度)计算物体的方向
【发布时间】:2011-11-10 10:58:00
【问题描述】:

我有一个玩家和另一个对象的坐标。两者都具有地理坐标(纬度和经度)。我也有玩家面对的方向(指南针)。如何计算从玩家方向到另一个对象的角度?例如我想知道物体是否在玩家的右侧/左侧以及多少度。

非常感谢!

【问题讨论】:

  • #27928 的可能重复虽然确实关心 bearing 以及 distance
  • @mctylr: no dup 我认为,方位所需的公式通常需要距离作为一个输入参数,所以它只是更复杂的计算 IME 中的一步

标签: android actionscript-3 math geolocation flash-builder


【解决方案1】:

有几个视情况而定,答案本质上是,你想知道如何做geographic navigation这取决于的原因之一是所涉及的距离以及所需的准确性可能会影响答案。

对于短距离(

对于更大的距离或提高精度,您可以使用地球的 spheroid 模型进行近似(假设地球是一个完美的球体,但事实并非如此)并计算 @987654323 @bearingdistance

或者您可以将地球建模为ellipsoid,并计算其geographic navigation

两个可能有帮助的网页:Details for computing distance using lat/long coordinatesCalculate distance, bearing and more between Latitude/Longitude points

注意:atan2Haversine formula 通常是有用的实现细节。

补充说明:bearing 在此上下文中是 headingdirection 的同义词。

【讨论】:

  • 非常感谢! :) 非常完整的答案,非常有用
【解决方案2】:

您需要这个球面三角公式:http://williams.best.vwh.net/avform.htm#Crs 确定路线(相对于真北的角度)后,您可以减去玩家所面对方向的罗盘航向来获得相对航向。

(我不知道 Android 是否会自动补偿磁变化,但如果不是,您也必须考虑到它才能在所有区域中获得正确的角度)

【讨论】:

  • 谢谢你的公式和解释,很有用:)
【解决方案3】:

API 中有一些工具可以为您执行此操作:Location.bearingTo(Location)GeomagneticSensor 将为您提供从您的位置到目标的方向 - 然后您可以根据设备当前的航向进行调整。

如果您已经运行了 MapView 并且很懒惰,请设置 MyLocationOverlay,启用 Compass 并跳过 GeomagneticSensor,让 MapView 为您完成。

【讨论】:

  • 如果使用 flash-builder/actionscript,我不确定这些是否可用。查看标签,我认为问题是如何在 flash-builder 中使用 android 仅作为 flex 移动的目标平台。
  • 如果是开源的,试试重写
  • 谢谢,但是对于使用 actionscript 的 flash builder,这个功能不存在 :(
猜你喜欢
  • 1970-01-01
  • 2016-01-25
  • 2015-10-04
  • 2013-08-07
  • 2014-12-16
  • 1970-01-01
  • 1970-01-01
  • 2016-02-03
  • 1970-01-01
相关资源
最近更新 更多