如何在地图中知道某个位置何时位于另一个位置的前/后

时间:2016-11-23 14:29:12

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

所以我正在开展一个项目,需要一个功能来确定一个对象(在我的情况下是一辆汽车)当前在使用谷歌地图的前方或后面。 我目前有轴承(汽车方向)和两辆车之间的距离。

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

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

1 个答案:

答案 0 :(得分:2)

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

relativeBearing = bearingToOtherCar - bearingOfThisCar;

如果 A 落后且 B 在前面,则 A B 的相对方向关闭在相反的情况下它接近180.如果 B 在左侧,它是270(或者如果你喜欢的话是-90),在右侧它&& #39; s 90.

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

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

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