2016-09-15 54 views
1

将路由作为一组位置使用,我想知道用户何时使用地理围栏偏离路径。目前,我正在为路线上的每个位置创建一个地理围栏,但它并不真正以合理的方式覆盖路线(如下所示)。Android中路由的地理栅栏

我要取代这个: Wrong geofencing

的东西像这样: Right geofencing

目前,我只能想到的路线上手工计算的位置每X米,增加更多的地理围栏,但它似乎更像是一个乐队援助,而不是一个好的解决方案。

有没有办法实现类似于没有许多小地理栅栏的第二张照片,还是这是唯一的方法?

谢谢。

回答

1

继罗伯特的回答,我最终在中使用了类似的方法,名称为PolyUtil.isLocationOnPath()

2

我认为,如果您尝试使用正常的地理栅栏来解决这个问题,那么最终会出现大量覆盖所有多边形的地理栅栏重叠。

如果我必须解决它,我可能会去定义一个多边形,并检查用户是否进/出它。

你可以检查下面的库来完成这个很容易。

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)检查用户里面/外面它在每个位置更改

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

+0

感谢您的回答。也许我错过了一些东西,但是我应该下载并编译库以便使用它?我没有在说明中找到任何简化的内容。 –

+0

好吧,这是简单的部分,你可以下载这三个文件。没有花哨的依赖,所有的数学;)虽然公平,我不知道这个库的确切精度。我总体上发现,当我使用它时,它非常准确和快速。 –