Android 中路线的地理围栏

Geofences for a route in Android

将一条路线作为一组位置,我想知道用户何时使用地理围栏偏离路线。目前我正在为路线上的每个位置创建一个地理围栏,但它并没有真正以合理的方式覆盖路线(下面的示例)。

我想替换这个:

像这样的东西:

目前,我只能想到每隔X米手动计算路线上的位置并添加更多地理围栏,但这似乎更像是创可贴而不是一个好的解决方案。

有没有办法在没有很多小地理围栏的情况下实现类似于第二张照片的效果,或者这是唯一的方法吗?

谢谢。

我认为,如果您尝试使用普通地理围栏解决此问题,您最终会发现很多地理围栏重叠以覆盖所有多边形。

如果我必须解决它,我可能会使用定义的多边形并检查用户是否是它的 in/out。

您可以查看以下库来轻松完成此操作。

https://github.com/sromku/polygon-contains-point

1) 设置坐标多边形

Polygon polygon = Polygon.Builder() .addVertex(new Point(1, 3)) .addVertex(new Point(2, 8)) .addVertex(new Point(5, 4)) .addVertex(new Point(5, 9)) .addVertex(new Point(7, 5)) .addVertex(new Point(6, 1)) .addVertex(new Point(3, 1)) .build();

2) 在每次位置更改时检查用户是否 inside/outside

Point point = new Point(4.5f, 7); boolean contains = polygon.contains(point);

根据 Robert 的回答,我最终在 Google Maps Android API utility library 中使用了类似的方法,名为 PolyUtil.isLocationOnPath()