【问题标题】:Geofences for a route in AndroidAndroid中路线的地理围栏
【发布时间】:2016-09-15 15:24:53
【问题描述】:

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

我想替换这个:

用这样的东西:

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

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

谢谢。

【问题讨论】:

    标签: android geolocation android-geofence


    【解决方案1】:

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

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

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

    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);

    【讨论】:

    • 感谢您的回答。也许我错过了一些东西,但我应该下载并编译库以便使用它吗?我没有在说明中找到任何简化的内容。
    • 这就是简单的部分,您只需下载这三个文件即可。没有花哨的依赖,所有的数学;)虽然公平地说,我不知道这个库的确切精度。总的来说,我发现它在使用时非常准确和快速。
    【解决方案2】:

    按照罗伯特的回答,我最终在Google Maps Android API utility library 中使用了类似的方法,名为PolyUtil.isLocationOnPath()。

    【讨论】:

    • 我有类似的问题。我想跟踪用户是在路线周围的围栏内部还是外部(这意味着多边形)。此方法Polyutil.isLocationOnPath() 是否检查相同或仅检查用户是否在路径上。
    • isLocationOnPath 仅适用于折线。请改用“containsLocation”方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-07
    • 1970-01-01
    • 2013-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多