Android中路由的地理围栏

Android中路由的地理围栏,android,geolocation,android-geofence,Android,Geolocation,Android Geofence,将路线作为一组位置,我想知道用户何时使用地理围栏偏离路线。目前,我正在为路线上的每个位置创建地理围栏,但它并没有以合理的方式覆盖路线(下面的示例) 我想替换这个: 用这样的东西: 目前,我只能考虑每隔X米手动计算路线上的位置,并添加更多的地理围栏,但这似乎更像是一个创可贴,而不是一个好的解决方案 有没有一种方法可以实现类似于第二张照片的效果,而不需要很多小的地理围栏,或者这是唯一的方法 谢谢。我认为如果你试图用普通的地理围栏来解决这个问题,你最终会得到大量的地理围栏重叠以覆盖所有多边形 如果

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

我想替换这个:

用这样的东西:

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

有没有一种方法可以实现类似于第二张照片的效果,而不需要很多小的地理围栏,或者这是唯一的方法


谢谢。

我认为如果你试图用普通的地理围栏来解决这个问题,你最终会得到大量的地理围栏重叠以覆盖所有多边形

如果我必须解决它,我可能会使用定义的多边形并检查用户是否在其中

您可以检查以下库以非常轻松地完成此任务

1) 设置多边形的坐标

Polygon Polygon=Polygon.Builder()
.addVertex(新点(1,3))
.addVertex(新点(2,8))
.addVertex(新点(5,4))
.addVertex(新点(5,9))
.addVertex(新点(7,5))
.addVertex(新点(6,1))
.addVertex(新点(3,1))
.build();

2) 在每次位置更改时检查用户是否在其内部/外部

Point-Point=新点(4.5f,7);
布尔包含=多边形。包含(点);

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

谢谢你的回答。也许我错过了一些东西,但是我应该下载并编译库来使用它吗?我在说明书中没有发现任何简化的内容。这是最简单的部分,你可以下载这三个文件。没有花哨的依赖关系,全是数学;)虽然公平地说,我不知道这个图书馆的准确度。总的来说,当我使用它时,我发现它非常准确和快速。我也有类似的问题。我想跟踪用户是否在路线周围的围栏(即多边形)内或围栏外。此方法是检查相同的路径还是仅检查用户是否在路径上。
islocationnpath
仅用于多段线。请检查方法“containsLocation”。