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

问题描述 投票:0回答:1

我正在从事一个项目,需要一个功能来使用 Google 地图识别一个物体(在我的例子中是一辆汽车)当前位于另一个物体的前面或后面。 我目前有方位(汽车方向)和两辆车之间的距离。

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

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

java android google-maps google-maps-api-3
1个回答
2
投票

计算从一辆车 (A) 到另一辆车 (B) 的矢量方位(代码在这里),并将其与“一辆车”的方位(运动方向)进行比较 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 方案。

© www.soinside.com 2019 - 2024. All rights reserved.