【问题标题】:How to know when a position is front/back of another one in Maps如何知道一个位置何时在地图中位于另一个位置的前面/后面
【发布时间】:2016-11-23 14:29:12
【问题描述】:

因此,我正在从事一个项目,该项目需要一项功能来使用 Google 地图识别物体(在我的情况下是汽车)当前是在另一个物体的前面还是后面。 我目前有轴承(汽车方向)和两辆车之间的距离。

到目前为止,我的方法是,如果 car2 与 car1 具有相同的方位并且两辆车之间的距离正在减小,则 car1 会收到 car2 落后的警报。但是,这只有在我在 car1 时才有效。 car2 也会收到假警报,说 car1 也在他身后,这不是真的(car1 在前面)。这是因为我不知道哪辆车靠近另一辆车,因为我之间只有距离。

所以问题是:有没有办法通过 GPS 和 GoogleMaps 知道某个位置何时接近另一个位置?也许比较两者之间的纬度和经度?

【问题讨论】:

  • 两辆车的方向是否相同?
  • @CalinCretu 是的

标签: java android google-maps google-maps-api-3


【解决方案1】:

计算从一辆车 (A) 到另一辆车 (B) (the code is here) 的矢量方位,并将其与方位(运动方向)进行比较的“一辆车”A来计算相对方向。

relativeBearing = bearingToOtherCar - bearingOfThisCar;

如果A在后面,B在前面,那么从AB的相对方向很近到 0。在相反的情况下,它接近 180。如果 B 在左侧,则为 270(或 -90,如果您愿意),在右侧则为 90。

您只需要在计算相对方向时正确处理 359...0 过渡。如果小于 -180 则加 360,如果大于 180 则从 360 中减去:

if (relativeBearing < -180) relativeBearing = 360 + relativeBearing;
if (relativeBearing > 180) relativeBearing = 360 - relativeBearing;

这将为左侧的相对方向提供负值(-180...+180 方案),并且可以通过将 360 添加到任何负数结果来强制该值为 0...359 方案。

【讨论】:

  • 很好的答案,但我有一个顾虑。我正在测试左侧相对方位,结果接近 -90,但如果我计算 -90 的绝对值,我的结果会变得一团糟,右侧情况不会如此。所以我想我总是需要将 360 相加才能接近 270。
  • 我想在写绝对值的时候我的想法是错误的,因为我之前已经为其他目的计算了这些并且忽略了方向。在这种情况下,这当然没有意义。 Left 应为 -90,除非您想将结果强制为 0...359 方案(通过将 360 添加到负值)并遵循 Android 用于 GPS 方位的方案。当然,您可以决定应该是 -90 还是 270。
  • 修改值 180 的想法当然是选择整个圆的较小部分,就好像结果是例如-200 减号表示圆圈的左侧,但实际上该方向位于右后 160 处。
  • 好的,现在看来是合法的,非常感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 2020-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-28
  • 2015-08-06
  • 2019-11-21
  • 1970-01-01
相关资源
最近更新 更多