【问题标题】:Android: Build Polygonal Shape GeofenceAndroid:构建多边形地理围栏
【发布时间】:2015-10-29 03:24:51
【问题描述】:

根据 API 文档,仅允许使用圆形地理围栏:

https://developers.google.com/android/reference/com/google/android/gms/location/Geofence.Builder

它的外观例如:https://developer.android.com/training/location/geofencing.html

但我有 4 个位置,代表矩形的 4 个角,我希望我的地理围栏是那个矩形。

我想避免构建我的自定义位置监控服务来扩展监控地理围栏功能的解决方案,因为我认为这种服务会消耗 CPU 和电力...

谢谢,

【问题讨论】:

    标签: android android-maps-v2 geofencing android-geofence android-maps-extensions


    【解决方案1】:

    你必须自己做(但我认为这很没有意义 - 地理围栏/定位服务不够准确,甚至无法提醒圆圈,甚至不考虑其他具体形状)。

    创建包含您的多边形的最小圆形地理围栏,如果触发,只需检查您是否在带有Google Maps Android API utility library 的多边形内。

    换句话说,检查您是否在白色区域而不是灰色区域:

    【讨论】:

    • 这行不通。如果您进入灰色区域并进行检查,它将返回 false。然后你进入白色区域,没有任何反应,因为之前已经处理了 ENTER 回调
    • 您没有正确得到我的回复,所以让我再解释一下:从灰色圆形地理围栏触发后,您必须轮询位置并不断检查您是否在白色方块中。跨度>
    【解决方案2】:

    Android 地理围栏 API 仅提供对圆形地理围栏的支持。如果您想监控多边形形状的地理围栏,那么您必须自己实现它。

    一个解决方案是这样的:

    使用 Location API 获取当前位置更新。

    现在您有了多边形地理围栏。您可以使用光线投射算法来检查一个点是否在封闭多边形内?

    【讨论】:

    • 谢谢,重点是我需要构建始终在后台运行的 Android 服务模块(即使应用程序已关闭),并且偶尔会唤醒并检查当前用户位置是否在地理围栏(使用您建议的算法)。是否建议实施此类服务?是不是很耗CPU和电源?
    • @michael - 我正在尝试做和你一样的事情。你找到解决办法了吗?前台服务都很好,但是随着 Android O 一切都变了。谢谢。
    • @Rhonage 不,我还没有找到
    • "使用 Location API 获取当前位置更新。"这与地理围栏的想法相矛盾,因为地理围栏就是不要自己获取当前位置。
    猜你喜欢
    • 2013-08-31
    • 1970-01-01
    • 2014-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-31
    • 2020-12-14
    • 1970-01-01
    相关资源
    最近更新 更多